Portals
![](https://static.wixstatic.com/media/7640d2_5c9b3ab4807a4cf186c8d690270eaa32~mv2.png/v1/fill/w_978,h_550,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/7640d2_5c9b3ab4807a4cf186c8d690270eaa32~mv2.png)
![](https://static.wixstatic.com/media/7640d2_939488beeb134a8fa8360146a508627d~mv2.png/v1/fill/w_978,h_550,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/7640d2_939488beeb134a8fa8360146a508627d~mv2.png)
About
In this project, I explore the process for using Houdini Engine in Unity and outline my use of PDG. I detail the installation process, cover my usage of the tools, and conclude with my thoughts on implementing Houdini in a game development pipeline. Throughout my process, I have been using Houdini 19.0.383 with Python 3. As for Unity, I am using Unity 2020.3.26f1.
Year
2021
Technical Guide
Houdini Engine Installation
I want to cover the installation process since I had some initial issues. When I first installed Houdini, I did not select to install Houdini Engine for Unity. Since the packages were not on my machine, I had to get SideFX’s new Houdini Launcher. The installation was quick, simply selecting the “Engine Plug-Ins” tab and pressing install. However, installing this way causes issues as it does not match the documentation anymore. Instead, the Unity package is located at C:/Program Files/Side Effects Software/Houdini Engine/Unity/19.0.383. Then to finish the installation, either double click the package with Unity open or in Unity select “Assets>Import Package>Custom Package….” I encountered another issue where after installation, Houdini Engine was unable to load digital assets or HDAs. I reset the plugin setting to its default settings to fix the issue. To do this, navigate to “HoudiniEngine>Plugin Settings,” scroll down and select “Revert to Default.”
![](https://static.wixstatic.com/media/7640d2_804efc8574d04cd6b10466d0b8004947~mv2.jpg/v1/fill/w_319,h_171,al_c,q_80,enc_avif,quality_auto/7640d2_804efc8574d04cd6b10466d0b8004947~mv2.jpg)
HDA Pipeline
HDA Pipeline
HDA Pipeline
HDA Pipeline
HDA Pipeline
HDA Pipeline
HDA Pipeline
Creating a Houdini Digital Asset is the most common workflow when using Houdini Engine. The engine can interpret the asset unlocking the procedural nature of Houdini inside of Unity. This asset is simply a tool created in Houdini and used in Unity. I created two major tools for this project: a low poly rock and a low poly cactus. Once finished with the tool, you can create a subnet and then the digital asset.
Low Poly Rock
While I was looking for a way to create rocks in Houdini, I found two excellent tutorials, one more complex than the other. One by a YouTube content creator, Indie-Pixel (https://youtu.be/ILbZ1I081SA), and the other by SideFX (https://youtu.be/2oC9TOgQ3KE). Both implementations were fascinating to create and implement.
​
The simple implementation of Indie-Pixel’s was quick to create and get into Unity. It has simple controls that an artist can easily understand and quickly respond to within Unity.
![](https://static.wixstatic.com/media/7640d2_1a4e0f82dbae4e47b85d39d08fe73edc~mv2.jpg/v1/fill/w_588,h_415,al_c,q_80,enc_avif,quality_auto/7640d2_1a4e0f82dbae4e47b85d39d08fe73edc~mv2.jpg)
Since the output of this tool is extremely low poly, minimal optimization was needed. This tool generates meshes with about 20 to 40 primitives.
The next rock was from SideFX. Their implementation is much more complex and much more realistic. Even though this rock was not in the style I wanted to accomplish, it used modeling techniques unique to Houdini. SideFX uses a technique to convert polygons into a voxel volume called a VDB. I was unsure if this technique works in Houdini Engine.
![](https://static.wixstatic.com/media/7640d2_cb032972c8a843edbc0185cce2e6e27b~mv2.jpg/v1/fill/w_488,h_313,al_c,q_80,enc_avif,quality_auto/7640d2_cb032972c8a843edbc0185cce2e6e27b~mv2.jpg)
The technique works surprisingly well in Unity. However, there are some drawbacks. The tool is slow to use and takes time to cook. This time to cook is vital as it can cause, from my experience, Houdini Engine to become unresponsive and require Unity to restart. Optimizing your tool for a fast cook is extremely important for Houdini Engine. The VDB conversion process also made the geometry extremely high poly reaching 46,000 primitives. To optimize, Houdini Engine can generate LODs. To do this, you need to create a LOD group. Creating these LODs helps optimize when the mesh comes into Unity; however, it increases cook time.
The technique works surprisingly well in Unity. However, there are some drawbacks. The tool is slow to use and takes time to cook. This time to cook is vital as it can cause, from my experience, Houdini Engine to become unresponsive and require Unity to restart. Optimizing your tool for a fast cook is extremely important for Houdini Engine. The VDB conversion process also made the geometry extremely high poly reaching 46,000 primitives. To optimize, Houdini Engine can generate LODs. To do this, you need to create a LOD group. Creating these LODs helps optimize when the mesh comes into Unity; however, it increases cook time.
The technique works surprisingly well in Unity. However, there are some drawbacks. The tool is slow to use and takes time to cook. This time to cook is vital as it can cause, from my experience, Houdini Engine to become unresponsive and require Unity to restart. Optimizing your tool for a fast cook is extremely important for Houdini Engine. The VDB conversion process also made the geometry extremely high poly reaching 46,000 primitives. To optimize, Houdini Engine can generate LODs. To do this, you need to create a LOD group. Creating these LODs helps optimize when the mesh comes into Unity; however, it increases cook time.
![](https://static.wixstatic.com/media/7640d2_a6ba834c0d3f43fbafc15700ec92afd3~mv2.jpg/v1/fill/w_306,h_339,al_c,q_80,enc_avif,quality_auto/7640d2_a6ba834c0d3f43fbafc15700ec92afd3~mv2.jpg)
![](https://static.wixstatic.com/media/7640d2_08f76786ff634b488aa3241c78e56beb~mv2.jpg/v1/fill/w_509,h_342,al_c,q_80,enc_avif,quality_auto/7640d2_08f76786ff634b488aa3241c78e56beb~mv2.jpg)
Low Poly Cactus
This cactus I made from scratch using curves to generate the forms.
![](https://static.wixstatic.com/media/7640d2_6c14560508734f87bb0d83bb5714771f~mv2.jpg/v1/fill/w_413,h_469,al_c,q_80,enc_avif,quality_auto/7640d2_6c14560508734f87bb0d83bb5714771f~mv2.jpg)
HDAs in Unity
When wanting to bring in a Digital Asset, you can drag and drop it into the Unity scene, and Houdini Engine resolves the action. The asset gets cooked, and the controls appear in the inspector. When adjusting controls, I would advise avoiding using the sliders in favor of typing a direct number. The cooking process can take time, and using the slider worsens it. Taking the time to get the correct settings in Unity is nice since everything is already there. There is no guesswork on what it looks like when changing packages. You can also bake straight to a GameObject when you have the desired settings.
![](https://static.wixstatic.com/media/7640d2_4e086a24400c43cf888086e4900f5cd2~mv2.jpg/v1/fill/w_355,h_261,al_c,q_80,enc_avif,quality_auto/7640d2_4e086a24400c43cf888086e4900f5cd2~mv2.jpg)
PDG Pipeline
PDG is a pipeline too that allows quick iteration and variation. PDG introduced a new network called Task Operators or TOPs. These operators have more potential than I use them for; however, they are still helpful. I used PDG to generate many variations of an HDA using the Wedge node. This process is a different pipeline than the HDA pipeline above.
![](https://static.wixstatic.com/media/7640d2_47ebdd3dc6f54707bf0e20510d5b0563~mv2.jpg/v1/fill/w_368,h_333,al_c,q_80,enc_avif,quality_auto/7640d2_47ebdd3dc6f54707bf0e20510d5b0563~mv2.jpg)
In this example, I am controlling the different components of the rock HDA I created. I used three Wedge nodes to control the values of the X, Y, and Z components for the size. The fourth Wedge node controls the seed, point jitter amount, and clipping distance. When wedging, the Wedge Count parameter controls how many variations to generate. This number adds the amount you set for each of the previous wedges. For example, in the above image, “wedge_sizex” has a wedge count of 3. The next Wedge node, “wedge_sizey,” is also size 3. For each of the previous wedges, 3 more get added. This process can quickly generate many variations.
​
The following process was to export all of the variations to files that I could import into Unity. Unfortunately, I could not discover a usable process for this; however, I am sure it is possible.
HQueue
One issue I ran into was that it took quite a long time to export many variations. To resolve this, I looked into using Houdini’s solution HQueue. HQueue is a service to pool together many computers to complete work. I was able to pool together three of my four computers. Having the farm helped expedite the export process.
Unity Scene
​Content creator Sebastian Lague inspired this scene. He gives a wonder technical explanation of how a portal mechanic works in games (https://youtu.be/cWpFZbjtSQg). I have always wanted to explore this mechanic, and I felt this was the perfect chance to look into his code and decorate the scene with Houdini assets. The rocks, cacti, and ground planes were created using Houdini and imported using Houdini Engine. The portal mesh and sky sphere are assets from Sebastian’s files.
Conclusion
Overall using Houdini Engine has been an exciting and informative experience. I explored new technologies and applied Houdini to my passion for making games. Tools like PDG make developing variation for multiple assets easy and quick. HDAs are extremely useful for seeing changes directly in the game engine.