Winni Li did a detailed breakdown of VFX production in Houdini and UE4: simulating fire, splash effects, combining rigs and VFX, and more.
Hi, my name is Winni Li and I am a recent graduate from the Gnomon School of Visual Effects. I studied FX for cinematics at Gnomon for over a year and only recently started learning real-time VFX for Unreal Engine 4. It is a great honor for me to share some of my experience and knowledge of Real-Time VFX with you all
Creating Fire: First Steps in Houdini
First, let’s start with the first project (check the reel above) and talk about how to make a fire with Houdini and UE4. Before I knew anything about Real-Time VFX, when I played video games and saw those amazing explosions, fire, smoke or water, I always wondered how they were made. Were they being rendered frame by frame in real-time? Actually, it’s pretty simple and most of the time, the effects are not even three dimensional.
For fire, I usually start by thinking of what type of fire I need in the scene or on a character: is it consistent? Does it explode? Does it die really fast? What shape should it be? Once I have an idea of what type of fire I want, I then jump into Houdini.
In this scene, I think the fire should have a water drop shape and should keep burning. In Houdini, I started with a sphere as my emitter. Here’s is my set up for the fire, which mainly has 3 parts:
Inside of my sphere node, I added a mountain node to produce some variety of the shape along with the time.
Inside of the pyro node I just tweaked the settings like emission rate, etc. inside the pyrosolver.
If you are not familiar with Houdini and making fires in it, here’s a tutorial I would recommend you to watch from the Gnomon Workshop (start with part Flame 1,2&3).
Now if you are satisfied with your fire, we can cache it and render it out.
Just a reminder: rendering takes a long time!
After you render out the whole fire sequence, there’s a mosaic node in Houdini that can organize all of the images that were just rendered and combine them all into a flipbook texture. You can decide how many rows and columns you want, but I usually keep it 6×6 or 8×8, a square. The more images you have, the more consistent it will look, but there’s also a limit when you import it into Unreal which depends on the image size.
Here’s a fire texture that I have made. Feel free to grab it and test it in Unreal, but remember to make an alpha channel in Photoshop if needed:
Particle Material in UE4
Once we get the flipbook texture, we are ready to bring it into Unreal. Let’s start with the material first.
For all of the materials that are being used on the particle, I usually change the material type to translucent. In order to let the particle get the texture information, we need a particle color node.
The reason I’m using the red channel as my emissive color is that I don’t really need the color information from my texture since I can always change the color under the particle system. If you like the color you made and rendered out in Houdini, you can use it instead. For opacity, if your texture doesn’t have an alpha channel you can switch it to any RGB channel you want.
Now inside the particle system, we first need to apply the material to the particle.
Then close or delete the initial velocity tab. We don’t need it because the flame is not flying up. Lastly, put the emission rate down to 2 and change the image to linear blend. This works well with the image sequences type and is found under the “Required” module.
The Sub Image’s horizontal and vertical numbers depend on the texture you made. Mine is 6 by 6, so both horizontal and vertical numbers should be 6. Next, add a Subimage Index module and change the number to your flipbook size. Since my texture size is 6×6, I typed in 36 like in the picture below.
Now all that’s left is just to adjust the Spawn Rate, Color Over Life and Lifetime to make it look the way you want. You can also add some smoke textures with the same technique, and some sparks around it to make it look more complete.
For the bamboo project, the idea was to create something like ink.
I started by searching “watercolor, ink, or splat brushes for Photoshop” to see what I could find. I discovered some pretty interesting textures. You can customize them or paint them the way you want if you’d like.
Something like this would work really well!
When doing something like swipes on a character, we need to think of the shapes of those swipes when they’re moving with the character.
Most of the time it is a donut shape which can be simply modeled in Maya by creating a cylinder.
In the particle system, we can make a new Mesh Data, so the particle spawns our donut instead of a single sprite sheet, and apply the material onto the particle under “Required” module.
I have also learned that UVs are very important for game FX. Sometimes by just changing the UVs on a model, you can totally change the look of the FX. For effects like this, I usually try out different textures. I would have in mind an approximate idea of how it is going to look, and then I search for some images that resemble the idea and test them on the model. If I find something that I like, then I start to tweak it and go from there. The same thing happens with the effects I’ve mentioned.
I always think about the shape first.
For this particular effect, I was thinking that when the character dashes there should be a cone-shaped effect happen around the sword and goes around the character’s body like a dash force.
When we are making the cone, we also need to think about how our texture should going around the model. First, it needs to spin around with the cone at one direction, and its secondary direction should be moving downward.
We can then try to find some interesting textures to test on the model. I found some cosmic and galactic textures and thought it would look good for this effect. You’ll need a “Panner” node to make the texture move!
Combining an Animated Character and VFX in UE4
Now if we have everything we need for the particle, it’s time to hook it onto the character. Once you import the animated sequences into Unreal (I usually work with FBX files), you can start from the animation editor. For animations, sometimes I ask my friend who is studying animation for help (and I recommend other students to do the same!) but most of the time I buy the animation packages online. There are lots of websites that sell animated characters with full rigs and animation, and they are good enough to use for VFX tests.
Now get back to the animation editor and you can see all of the rig information that was already imported successfully.
Since all animations have joints and bones, we can create sockets in Unreal and parent them to the joints. You’ll need that to define where the effects should be. A socket is like a locator: you can parent your particle to a socket and use its transforms. Parent the socket to a joint first, then parent the effects to the joint. If you want the particles to move in a particular way, I would suggest doing an animated joint in Maya and import that joint with animation into Unreal.
Right click on the bone.
Once we have our socket (locator) created, we can add a track by clicking the plus button in order to make our timeline look organized. If you know how to use After Effects, this will be easy for you.
We have our animation timeline at the very bottom, and you can scroll it back and forth. At the right keyframe (where you feel the particle or the effects should happen) right click and choose Play Particle Effect.
You can click on it and there should be some settings on the top right corner. Now we can choose our particle system and link it to the socket we have created.
Now the particle will follow the socket, and the socket will follow the bone or joint of a character. Sockets can be static, too. If you want your effects to appear in a particular location and it’s not moving around, you can just create a socket by itself without parenting any joints or sockets, then linking your particle to your socket.
Advice for Learners
For people who want to learn game VFX, I would suggest playing games first! Making your own game or effects is super fun. I would start with some basic effects, such as magic circles, to get into Unreal particle systems. I would definitely recommend people to watch Jason Keyser’s videos on YouTube to get a great sense of how things are crafted. I didn’t even know that everything had 2D textures before I watched his videos.
Game VFX is quite different from film VFX, and they ultimately depend on the textures. I know some people hand-draw their effect sequences to make them look stylized, and I have always wanted to try it out. But for beginners, I would suggest stacking your texture library. If you find some cool textures, save them, because you never know when you are going to use them. And keep testing! Sometimes it’s not the technique or the way you are doing it is wrong. Changing the UV of a model or trying a different texture might completely change the look of the entire effect.
If you found this article interesting, below we are listing a couple of related Unity Store Assets that may be useful for you.