Preface

Over the year of 2021 I’ve integrated Houdini (with the help of Houdini Engine) into the UE environment pipeline of the professional project I’ve been working on without knowing a lot about it at the start. But there are a lot of talks which show how it’s done ( Far Cry 5 e.g.) so I started pioneering for Gunzilla. Here are some things I noticed which can save you quite a lot of time.

HEU = Houdini Engine Unreal

HOU = Houdini

Learnings

  1. Tool development for HEU for me took around 50% more time than just creating the functioning tool in Houdini.

Figuring out why / how things work in Houdini was a big aspect of that journey but once I got something which was worth testing in UE I most of the time noticed issues, be it with the UI or the functionality of the tool. I encountered many bugs along my way and it took a lot of efforts to figure out if it’s an issue with my Tool or Houdini Engine. Importing the scene of UE back into Houdini is a great way for debugging but it creates a lot of excess objects which first need to wrap your head around.

2. Terrain export / import can be so easy if you know the right data format

After testing around with many aspects of heightfields and layers bringing those information over to UE as png ( and suffering from compression) and r8 / r16, aspects like retaining the same local position and having them same height information were still quite painful to synchronize between those two applications. In the end I tried to put all important information into a JSON file, which all of a sudden opened up the solution to all my problems: Houdini node trees can be exported as a JSON as full and by that maintaining all information in one package. So we’ve ended up just updating a JSON file from time to time, baking it in UE and that’s it for the updates. No compression, no differences and it’s easily integrated as one extra node, so not even a button press is necessary. Exporting and Importing is one node each now. That made me understand why Insomniac built the whole of New York for Spider-Man as JSON.

3. Houdini Engine is not well integrated into the UE workflow

I’ve tried to extensively work with cache files ( to reduce the calculation times of massive Heightfields) which as of October 2021 could still only be referenced by absolute paths – something which just won’t work for a UE project. There are some keywords to use but none of them is user friendly because you have to take the outcome of them ( like path to the project) and then string manipulate them. So it requires a tool to make a path work ( and it can only be maintained by someone who knows how it works, not really artist friendly), file choosers are not an option which just feels overall dated. Internally it mostly uses the relative pathing for temporary files, it’s just not used for the user.

I’ve attempted to mass bake a world full of houdini actors. It requires C++ in order for it to be done, exposing it to python or BP could save a lot of time. I know that they’re already working on exposing more and more. Making use of the BP workflow in general could make HEU way more user friendly.

4. Houdini Engine workflows are breaking Houdini workflows

There are approaches for Houdini engine right now which don’t compile in Houdini. That feels overly counterintuitive because testing at that point is a lot of clicks every single time. Examples follow.

5. Scattering capabilities are amazing

Scattering any type of actor and even setting up their properties works like charme with the help of attributes. It helps tremendously optimising your scene with full control of the user. The in-built tools for distributing grass etc. in UE are nice but dated considering how much setup it requires and how little freedom it gives you for setting up the actors placed. HEU allows you things such as manual clustering of HISMs, setting up the DetailMode, placing light sources, creating and setting up the LODs for those objects, scattering based on scattered objects and many more.

6. The nanite workflow is already fully integrated

Every mesh created by HEU can be converted to Nanite with the help of one attribute. Same applies to landscapes actually. Using RVT is a cool feature in UE, mostly for the height based blending and the dynamic resolution. One example is the snow in the latest Black Myth: Wukong trailer ( see below) where they used it for the footprints in the snow. But if you don’t need this world position offset type of feature, having landscapes feels just like an overhead with less quality then the rest of your world. So upping the resolution to something UE doesn’t support, splitting it and then converting to nanite mesh is a huge step forward in quality which should always be considered.

7. HEU custom UI needs lots of improvements

The capabilities of the HOU UI are great and allow for complex, dynamic UIs for your HDAs. Putting them into UE always ends up being a gamble for me. Sometimes elements just disappear (re-importing doesn’t help), certain layouts (e.g. multple tabs) cause unexpected patterns of textboxes / labels not being next to each. The scrollbar does sometimes ‘think’ the content ends but it doesn’t. Sometimes drag and dropping asstes into text boxes causes there reference to show up as text (as expected), sometimes it doesn’t. So I end up building simple UIs most of the times to make sure I’m now causing too much extra work.

8. Regularly checking for updates is KEY

Checking the changelogs and downloading the latest version from github while talking to the sideFx support is the way to make sure all you’re regularly up-to-date. I noticed a lot of times the descriptions aren’t detailed enough so try from time to time if the issue you noticed is gone. The customer support even sends you sample HDAs to explain workflows.

Conclusion

Despite all the qwerks mentioned in the text above, I’m still more than convinced that HEU is introducing a large variety of tools which could not be achieved any quicker using UE directly. Learning and working around the issues is a process which happens in any software package, so I’d always choose to use HEU. The quality which can be achieved and the workflow behind it are two aspects which make Houdini a great addition to any type of game project. But the amount of time it takes to master HOU is not to underestimate.

Important references

RVT example

The Far Cry talk from Ubisoft

The Spider-Man talk from Insomniac