Learn How to Craft Game Effects using Houdini & UE4
This 45 Minute Lecture was originally given to the Vancouver Houdini User Group in August 2016. It is a talk that was designed for an audience familiar with feature film visual effects workflows, specifically those which use Houdini. The goal is to increase awareness of limitations in real-time game environments, and to help film makers take steps towards transitioning into interactive media.
Feature film effects artists are typically used to working with millions or particles, polygons, and voxels. While it’s acceptable for a render farm to chew through heavy data over the course of several hours for film; current game platforms are not designed with this kind of geometry in mind. It’s up to the effects artist to understand this and produce visuals that are as light-weight as they are beautiful so that game engines can spend their efforts on more than just the visuals.
This is not designed to be a step-by-step tutorial for making a “pretty” effect, but rather a general purpose guide geared at introducing a broad topic. If you are interested in transitioning from film to games, this talk may be useful as a primer as we’ll introduce concepts such as: sprite sheets, power of two dimensions, texture packing, particle trimming, letting the GPU handle transformations, and vertex animation. Topics are introduced in a way that should build upon concepts that are already familiar to those with training in the motion picture discipline. All examples in this lecture are given using Houdini 15.5.523 and Unreal Engine 4.12.5.
The example files may be downloaded and examined at the student’s own leisure.
Welcome to the course! This started off as a lecture that was given to the Vancouver Houdini User Group meeting. It was targeted toward an audience primarily made up of professionals in the film industry who use Houdini for a living. This is not a step-by-step tutorial on how to generate beautiful effects but rather a broad transition guide aiming to give insight into what kind of optimizations are necessary when working in a real-time environment.
Real Time Visual Effects using Houdini and UE4
Sprites are a particularly common way to render particles. It's a display method that allows the user to play back a movie or image sequence in-game. To conserve memory it makes sense to place images onto a single texture called a "sprite sheet". We typically will try to "pack" as much information into a given texture as possible to avoid have to load multiple images into memory.
Sprite sheets are easy to create in Houdini using the mosaic node. It's worth keeping in mind things like: what information will be in a given channel, what is the gamma output of your image, and are your images a power of 2 dimension (8,16,32,64,128,256,512,1024,2048,4096). Try to ensure that your individual frames take up as much space as possible to avoid wasting the available space in your texture map.
Trimming is a common feature used with particles which helps to reduce overdraw (when transparent images render atop other transparent images). It's a great way to reduce the complexity of your particles when rendering transparent images such as smoke. When possible, it's also a good idea to let the GPU handle things such as transformations.
Here we investigate a little bit of the workflow in Houdini for turning 2D Images into 3D geometry. COPs is a powerful part of Houdini that is useful when working on game vfx and motion graphics. Remember to "texture pack" whenever it makes sense. Images are great ways to pass information to UE4.
This is a basic look at what a transform vector is for people who are not as accustomed to passing data around through a network. It's a primer for the next video where we will be taking transforms to the next level.
Using the GPU to handle Vertex Animation in our shaders, it's rather simple to get deforming 3D geometry. The trick is to figure out how we can export the necessary instructions from Houdini. By creating a second UV layer, we can create textures that will store each point's animation over time.
With our new textures generated in Houdini, we can now go about setting up Unreal Engine so that a mesh will deform over time. This is done by panning our UV coordinates over time to read animation that has been stored in a texture map.
Thank You For Watching
Thank you for watching this course!