Alexander Zhupikov on creating a VFX lighting effect in Houdini and UE4.
My name is Sasha, I live in St. Petersburg, Russia, and work here as a junior VFX artist at Saber Interactive. I recently graduated from the Electrotechnical University (SPbETU "LETI"). I considered my Bachelor's degree sufficient. So far, I have not been able to take part in too many projects, my experience is not enough to say that I am a huge creator yet. I have worked as an Environment Artist in a small studio of graphic designers who were involved in staging interactive installations at the time. At that time, I was just starting to learn Unreal Engine 4.
I was also able to work on films as a Junior Houdini Artist at a visual effects studio, CGF Studio. There I got familiar with the visual effects pipeline for the films. At that time, the studio was working on the Russian film "Конёк-горбунок" (Upon the Magic Roads), which was recently released. I was able to work on simulating swaying trees and on the development of the scenes with clouds.
Getting Started as a VFX Artist
In 2011 I was about 12 years old and I really loved games. I also liked doing something unusual in them, so I spent a good amount of my time in sandboxes, like Minecraft or Garry's Mod. At that time, I decided to train other digital larvae (like myself frankly) to do something similar to what I was doing. I started making content for YouTube. I was wondering how I could improve the quality of my content, so I discovered After Effects and Photoshop to make cool transitions and intros for my videos.
Going deeper into this, I found Russian-language lessons from Timur Konstantinov and Andrew Kramer (he does not even need an introduction). When I was starting to understand a little more, I looked through the lessons that were not related to what I was doing. This is how I learned that with the help of plugins (Element 3D) it is possible to place 3D objects in a 2D composition, but it was difficult for me and I had many other childish responsibilities. Since then, have just done standard video tutorials on various game secrets, without delving into anything beyond what I needed. By the way, this channel still exists and you can check it out to see where I came from.
I returned to graphics only in my second year of the university, but then I was interested in 3D graphics and motion design. In those days, I attended my first event (SG Event), where I was very motivated by everything related to graphics and design. The most important thing is that I understood how achievable everything is in fact. I can make films at Weta Digital, I can make games at Blizzard if I want to and if I push hard enough. The people who work there are real and I can communicate with them. It seems trivial, but in fact, I noticed that many people in my environment do not want to do what they like, because they think that this is an unreal world, another universe with which they are not connected in any way. When I realized that if I just do what I like, I began to devote a lot more time to Maya and Houdini because I began to believe that I could provide myself with this financially, while also genuinely enjoying the process. Since then, my main goal has been to turn my hobby into work.
Creating Lightning Overload
The guys from CodeBlueGames asked me to make the effect. This is an indie studio that is currently developing an awesome project for consoles. The goal was to make a near-ultimate effect that occurs due to the overload of the character's costume. As a reference, I was offered the gameplay of the new Spider-Man.
Of course, I focused on the visual component of the references, but I always like to add my own details, if the situation allows it. Usually, first I try to imagine how I would cast such an effect and how I might feel while doing so, I also scroll through the ArtStation and look for the gameplay of different games and film frames in which I might see something similar. I also try to adopt various compositional decisions, I look at post-production and staging of a frame in some good films, it may not necessarily be just the moments with the exact same effect, it can be anything that I find interesting in a particular situation.
For the lightning effect, I used Unreal Engine 4. I used a standard sequencer to demonstrate the effect. Everything related to the effect was collected in a blueprint and all control was carried out from there. I tried to immediately deliver the effect in a form convenient for the programmer, and with the effect, I also sent a description of what and how much needs to be adjusted. Unless the control of the decal of the fault is carried out through the parameter collection.
In the process of creating, I added the content in small portions, that is, there was no such thing as doing all the textures at once and importing them all. Since the effect is done for consoles, you need to be careful with the amount of content so as not to destroy performance. Initially, I started doing a kind of blockout.
Here is the lightning procedural material, the geometry for the lightning, and the shockwave sprite:
Gradually, the effect became overgrown with content, some new meshes were added, it became clear which textures I wanted to use and which ones were not needed. The ones that were a good fit, were packed by channels and re-imported.
By the way, when making meshes for the effects, it is important to really think about their unwrap and normals. In general, hard edges cause a large number of vertices to appear, which is bad for performance. You should also avoid overlapping textures and meshes on top of each other, this is called overdraw.
It is worth checking the effect from time to time to see how strong the overdraw is. In UE4, this can be done by pressing Alt+8 in the viewport:
Sometimes it is better to increase the number of vertices artificially in order to reduce the overdraw. Particle systems usually have special settings that automatically crop the plate according to the texture. It can also be done manually. You can see how Environment Artists do it when they make grass. In Niagara, these parameters are located here:
Creating the Ground
Splitting the ground was done with a simple bump decal method. The same can be done with parallax, but it is more expensive and not much better.
I wanted to make some kind of impact on the ground after the explosion, but a simple burn from a lightning strike is not enough. It was decided to make a small split in the shape of the lightning. Also, there is a small burn just under the character.
For the decal, I made several masks, which I combined into the RGB channels. For them, I made textures of heights and normals.
For decals I made a pretty unique material in which you can switch between three versions:
There is also a little trick. In blueprints, we can control decals using the collection parameter, or using the FadeIn/FadeOut nodes. For these nodes to work, we need to connect a special node in the material, which is called Decal Lifetime Opacity.
I decided to add this detail because after something so powerful there should be at least some kind of impact.
Creating the Lightning Strike
The whole effect was done using the Niagara system. I have 4 different systems:
In the main system, I have the particles looking like this:
They are made to resemble the simple sparks that we see in many games when an electrical device is short-circuited or damaged.
The logic is simple. We have particles that appear within the radius of the sphere, they are invisible. When a particle like this dies, a death event is triggered, which spawns a burst of other particles that you see in the screenshot above. In accordance with the same principle, particles with a texture will spawn in the same places:
It seems to me that due to the behavior of the spawn, which is similar to the natural one, the final effect also raises a minimum of questions regarding its purpose.
As for the flashes of lightning, these are meshes with procedural lightning and ribbons.
Creating the Smoke Effect
I made one texture for the smoke in Houdini using the new Axiom Solver. Interestingly enough, I put 3 light sources, red, green, and blue around the explosion simulation, so that their highlights would fall into different channels of the texture.
Then I slightly changed the properties of the image (brightness, contrast, and so on). Thus, I had control over the lighting of the smoke, which in this case was not so important, but this texture will be reused in the future. This is simpler than full-fledged 6D fluid illumination in the engines (like in Sam Mayson's work) but it can help achieve a deeper look.
This smoke can accentuate the force of the shockwave when the spell is being cast, and it also appears after the animation to focus on the cooling of the suit.
Conclusion and Useful Tips for Beginners
It is always a big problem for me to show what I came up with. Some things are either technically difficult to implement or require indirect skills, such as modeling skills or 3D animation. Also, I came across the fact that I do not understand how something should work inside the engine, usually, I realize this later on while working, it is like an insight, a voice in my head exclaiming "wait, what, so it was possible?" The choice of a color solution, sometimes a compositional solution, also becomes a problem. I feel like I sometimes lack artistic knowledge, most likely this is due to the fact that I came from Houdini.
Most of the time I do portfolio effects in a sequencer. I can say with confidence that if you want to create effects that are going to work in the game, then you should pay more attention to creating simple blueprints that will, for example, play animation, effect, and decal by pressing a key. You need to think more about how the effect is going to work from a logical and technical point of view. For example, a player fires a projectile shot, and after he is hit, an explosion occurs. I would advise you to build a logic chain for the appearance of the effect at the point of collision of the project with the obstacle, in order to understand what effect and decal should be like for this. Thus, you will understand what you need to do and in what form you need to give it to the programmer, which will facilitate your work in the future.
To become a visual effects artist, you just literally need to make effects. In my case, it turned out that I wanted to do the cool things that I see in the games, be it terrain or rain or a spell. I did not think about who I wanted to be, I just did what interested me the most. I would not recommend really interested people to take courses. Everything you need to create effects is available for free. I can suggest that you set yourself a task and study only whatever raises major questions in the process of solving it. When you complete several tasks, you will gain only the skills that you need to solve exactly that kind of tasks, and then you can find something more focused on that area for yourself.
In any case, it was that way for me. I am interested in many areas of the gaming industry, I often watch streams about the environments, 2D art, sculpting, topology, game design, technical art, about programmers' solutions, and recently I have been looking towards studying HLSL.
My experience in the gaming industry has formed the opinion that the most interesting projects are created at the intersection of different areas, that your experience in one of the areas will certainly influence the experience in another area, thus, you can find unique solutions for popular problems, and this will make you a more valuable specialist and an interesting person.