- Ian Harvey
The Mill SDGM • Real-Time FX R&D
Updated: Jan 12, 2020
Jessica and I will be focusing on effects for the project. Thankfully, Jessica has been gracious by offering a lot of knowledge that she learned about Unreal Engine's Niagara particle system during her internship at Epic Games. Thanks, Jessica.
I've been doing some research on using Houdini FX for use in Unreal since I've never used Niagara. Andreas Glad, founder of partikel.co and real-time effects artist with +10 years experience gave me some great advice.
My understanding before consulting Andreas was as follows: since we are creating a cinematic, not a game, the camera movement will be known. We can export our camera parameters from Unreal into Houdini, render each effect with proper collision geometry, and export the effect as a sprite sheet for use back inside Unreal. What I was unsure of was how to go about lighting the effects generated in Houdini inside Unreal.
Andreas told me about three methods to look into. The first and simplest solution would be to recreate the lighting setup from Unreal Engine inside of Houdini. He explained to me that even a slightly imprecise lighting setup recreation can still give fairly realistic results.
I will do a few tests with this method, but I'm not sure it will suit this project since we will have so many animated lights inside the cabinet. It could prove to be very tedious to recreate the lighting in Houdini from Unreal Engine exactly (unless of course there is a tool to export light info from UE, but I've yet to find one).
The second method that Andreas brought to my attention was to write out a six-dimensional lightmap. This would solve our animated lighting problem, as the lighting would be computed within the game engine as opposed to in Houdini. This article on the Real-Time VFX forums by Mederic, VFX Tech Director on Skull&Bones helped me wrap my head around the workflow.
The third and most complex option that Andreas mentioned would be to implement a volumetric ray-marcher in UE. This seems a bit out of scope for our project, so I will test the first two methods before attempting this. It's still very interesting, see Ryan Brucks' write-up on the technique here.
Thanks a ton Andreas! I will post updates as I begin to test these methods.