Thomas Francis showed how he created amazing real-time visual effects with the help of UE4 and Houdini.
Hi, my name is Thomas Francis and I’m 22. I originally came from Thailand but currently, I live in Vancouver and work as a real-time VFX Artist at Navigator Games.
I initially got into 3D modeling around the time high school ended and I fell in love with the idea of creating game art. I then spent a year studying 3D modeling with sources such as Youtube, Cubebrush tutorials and digital tutors.
A year passed by, I decided to further my studies at Vancouver Film School: Game Design which is where I learned programming, 3D art/animation, and game design. As the final project approached, I realized that our game was lacking the polishing touches and user feedback needed and someone had to do the VFX. Following tutorials, I started by creating jump pad, explosions, and muzzle flashes VFX, etc. As I dug deeper into this mysterious art, I realized how much fun I was having and never stopped working on particles since.
I’ve used Unity for 5 game projects to date and Unreal Engine for my final project at college. To me, both engines are very capable and have an intuitive toolkit. Once you know one it’s easy to hop on to other. The main reason I picked Unreal for this project was that I wanted to try something unfamiliar.
Houdini is also a software I’ve been using for a while to create effects such as smoke, fire and simple debris. Now I feel like it’s time to take it to another level and start learning procedural mesh creation which can be tweaked in-engine to help speed up the overall workflow.
The inspiration for this project came from seeing entries for Real-time VFX’s official event and I decided to throw my hat in the ring. Here is the official event link.
My objective was to create a sci-fi shield which has a fluid energy-like force field effect that expands from its core, capable of reflecting approaching harm. It charges up the holder’s power by draining surrounding energy. I also wanted to model out the shield and use some animations from Mixamo as a base to create the more intriguing reel.
A quick rundown of the process:
- Find reference or concept art that I like
In this step, we will gather references to set a visual guideline.
- Find animations on Mmixamo and re-target to UE4 mannequin
This gives us a direction on how the shield’s effects should react to the animation.
- Model the shield and VFX mesh
Preparation phase where we will build the groundwork meshes for the VFX.
- Block-out each stage of the VFX
Here’s the part where we start playing with particles.
Here we add extra camera work and camera shake to add the extra “UMPH” to the shield.
Before starting the process of creating assets, I like to put together a mood board and visual reference of what I want in the final product.
The process I’ve taken with this piece is quite different from what I would normally do. I started by finding animations that will work well with a shield connected to the character’s arm.
These animations can be downloaded from here.
Next step is to transfer the downloaded animations from the base Mixamo rig onto the UE4 mannequin rig. This can be done by using the retargeting tool built into UE4. Retargeting Tutorial:
The final step is adding these animations into the sequencer which will allow you to blend from one animation to another. You can find all the information on this topic in the link below.
For the shield, I wanted something clunky and sturdy looking. It would be a mix of Reinhardt’s hammer and Tracer’s chest piece from Overwatch. I pictured this shield working as a portable device that the user can activate by draining in the surrounding energy to power its forward forcefield.
It took me around a day to model and animate the shield. Luckily, I did not have to rig this prop. All that was needed to be done is keyframe the objects in Maya, and UE4 will create a skeleton for you upon import. I’ve made the shield available for download here.
STAGE 1: Charge Up
For the shield itself, I created a basic unlit material with tiling energy noise texture that pans along the shield fx mesh and multiplied by the vertex color applied in Maya. I also made some variables exposed such as tiling speed and emissive strength so that I can easily control these in the sequencer.
The exhaust port VFX was done by modeling out a plane in which I applied the energy material similar to the one on the mesh of the force field. As an addition, I threw in some GPU particles coming out of the vents to help add some smaller frequency detail.
For the energy ribbons, I created a Houdini asset which allows me to build spline trails in the engine and bake them into an efficient game mesh. Next, I spawned these meshes with some random rotation from the center of the shield along with a panning material. This will help create an illusion of trails traveling forward when it’s actually just textures running along a set path.
If I were to point out one thing that really surprised me, It’s how easy it is to export assets from Houdini to UE4. All that was needed to be done is simply drag and drop the assets similar to how you would import FBX files. I was genuinely mind-blown.
There’s an awesome tutorial by Andreas Glad on creating this asset:
STAGE 2: Energy Discharge
For the energy discharge, I created a dissolve shader which eats away the vortex as it rotates and scales outwards.
Dissolving shaders could be done in many ways but my method is rather simple. That’s by using a dynamic parameter to subtract the alpha value over the lifetime to create an erosion effect. As the vortex disappears, lightning is spawned from the characters mesh vertex with a lighting module attached to help illustrate that the character is charged up. This method of using real lights is more performance intensive. It also depends on how many you particles you spawn and how many lights are overlapping. The reason I chose to use lights instead of emissive bloom is that lights generally deliver a more believable effect when it bounces off surfaces such as the character model and the surrounding environment.
STAGE 3: Blocking
As for the hit effect, I’ve split them into 2 particle systems, one for the shield hit, which spawns a ring of smaller particles that have a constant acceleration towards the ground with the collision. Another for the ground dust and debris getting kicked up behind the character.
STAGE 4: Counterattack
The crescent projectile that travels forward is made of a particle mesh that dissolves over time, using the same technique as the vortex. I’ve also added smaller dots which spawns from the projectile mesh to create an illusion that the crescent is dissolving into smaller chunks over time.
The presentation is important and it’s worth to put extra time and effort to make sure the audience gets a good view at everything you want to show.
Transform + Screenshake
The 2 Gifs above shows us the difference between having a static camera and a dynamic camera.
For the camera movement, I used keyframe animations and tweaked the curves in the sequencer to achieve a smooth orbit around our character. As for the camera shake, I threw in a small tutorial in the picture below!
The hardest part was definitely the process of creating a VFX material library that could be reusable for future projects. There are many things that need to be carefully thought out such as, will the material work well on different textures, and can I modify the material parameters to appear like different things? This was time-consuming and it was hard to visualize the end product but after wrapping up the project it was extra gratifying.
HD Video of the VFX:
Overall this project was incredibly fun to work on. There are many things I’ve learned other than just VFX, such as how to retarget and set up sequencer for character animations and improve to my current workflow by using Houdini’s game asset to quickly create game-ready mesh in-engine.
If you are interested in learning VFX for games, now is a great time to do so. Here are some channels and sites I recommend you check out!