Houdini > UE4
Verify that parameters are input into the HDA's Operator Type Properties by accessing the gear icon and selecting
Type Properties to input the parameters that are to be exposed; not the option
Edit Parameter Interface.
Integration with Megascan Assets
By default, the assets are imported into UE without collision geometry, but the following depicts the quick process by which to enable a simple collision for geo.
HDA with Megascan Assets
Initial pass of HDA development for simple walkway lined with vegetation.
Unreal Instance Point Attribute
Point wrangle specified with VEX to attribute different variations of Megascan asset with corresponding points.
Reference for additional special attributes recognized for use in an HDA with UE:
Certain special groups and attributes are used when marshalling data between Houdini and Unreal. See the referenced topics for more details. Note Despite those attribute indicating a prefered type, the plugin will always try to convert an attribute if it was found, but its type is not what was expected.
2nd iteration documentation some more features and parameter controls.
Blockout Geo Test
Object Mergeblockout geo from inside HDA to separate Geo.
- Uniform scale to 100 for conversion to Maya later.
File Cacheand export to .obj.
- Drag/drop .obj from Houdini to scene.
Game Exporterto .fbx.
- Verify that Hou Engine session is running in UE4. If not, restart via
Restart the Houdini Engine Session.
- Verify Scale
Project Settings >
Test of HDA generated in Houdini with assigned attributes and basic controls for use in UE4.
HoudiniEngine directory to the UE4
- Keep Attributes: Add
pscale; not included by default.
Houdini Niagara Updates | Forums | SideFX
Forums Houdini for Realtime Houdini Niagara Updates
Point Cache Asset
This is the file exported from Houdini via the Labs Niagara ROP.
- Max Sample Time: Value identifies the duration of the point cache system. This needs to be correlated with the
Loop Durationin the Niagara system, namely under
Show Engine Content &
Show Plugin Content in the Content Browser to access the
Houdini Niagara Content. This can be used as starting points for newly created Niagara systems. This can also be accessed within a new system via
- Emitter State
- Loop Duration: Coordinate this duration with the available
Max Sample Timein the point cache asset.
- Spawn Particles From Houdini Point Cache: Assign point cache asset.
- Particle Spawn
- Sample Spawned Houdini Point Cache: Assign point cache asset.
- Particle Update
- Sample Houdini Point Cache: Assign point cache asset.
- External forces can be applied here to vary dynamics even further than defined by point cache.
This is the outline of available attributes carried over from Houdini into UE4 via the point cache asset. Note that there are instances where data types need to be configured in the Niagara system to accommodate incoming data. The following instance highlight these strategies.
- Particle color updates seek vector4 data types, which include an alpha channel, but this is not included in the incoming point cache asset's vector3 color. To address this, use the drop-down menu next to the parameter input and select an option that allows for splitting the vector4 into a vector3 + float as separate values.
- Example: The Color module added to the Particle Spawn section has an option to
Make Linear Color From Vector and a Float. With this setting reassigning the vector via the drop-down menu will access the Houdini color attribute as a vector3.
- Scale & pscale
- The scale factor in a sprite size update seeks a vector2, but in the same way as the color property, there is an option to convert the vector2 to a
Vector 2D from Float, which can then accept the float pscale attribute in the point cache asset.
Scrub FX in Sequencer Timeline
By default, FX actors will only play when the sequencer is played, but will not show up when scrubbed backwards. Steps are as follows:
- Add Niagara System to Sequencer as a track.
- Add Niagara Component to Niagara System Actor track.
- Add Niagara System Life Cycle Track to Niagara Component.
- Edit System Life Cycle Properties and change Age Update Mode to Desired Age.
Realtime FX with Niagara | UE4 | SideFX
Learn how to use the Houdini Niagara Plug-in to bring point cache data saved out as a JSON file into Niagara along with attributes such as age, life, id and color. These point caches can be static or animated point clouds created using procedural modeling techniques or using Particle, FLIP Fluid or Rigid Body simulation tools.
Houdini Engine for Unreal: Houdini-Niagara Plug in
As of Unreal 4.25, the Houdini Niagara plugin should be download from the SideFX Houdini Niagara GitHub page. The latest version of the plugin will only work with 4.25 and above. That plug-in can be found under the FX category, and requires the Niagara plug-in to be activated.
This plug-in adds a new "Houdini Data Interface" to Niagara. This version of the plugin is currently updated for UE4.25. The data interface allows importing and processing Houdini Point Cache assets in Niagara. The point cache files can be exported using the Niagara ROP, available via the SideFXLabs tools.
Niagara System Component
The lifetime of the emitter
Properties when particles are initially spawned.
Properties after particles have spawned.
The particle lifetime is different than the emitter lifetime.
Particles / second
Accepts Emitter, which can then be placed into Scene.
- Landscape Material used to define the layers within the landscape tool for painting different materials.
- Landscape Hole Material set up as a Mask with an Opacity Mask to define holes created by the 'visibility' attribute; from Hou.
- Use 'Landscape Visibility Mask' for 'Opacity Mask' to read the 'visibility' attribute.
Substance > Redshift3D
Workflow for utilizing Substance Material (.sbsar) in a Houdini COPnet and linking to a Redshift3D Material
Geometry With UVs
The following assumes the geometry to which the Redshift material is applied has properly mapped UVs.
Compositing Network (COPnet)
Labs Substance Archive
Set File Path to .sbsar file to access parameters for the specified Substance material.
Material Network (MATnet)
RS Material Builder
Link RS Texture for each diffuse, roughness, metallic, and normal maps.
Set Filename to COPnet reading .sbsar file, and specify Layer Name for respective texture map.
RS Bump Map
For normal, route through Bump Map to specify scale/intensity.
Reference: RS Normal Map Configuration
Ecosystem and Plug-ins - Redshift - Substance Painter
Redshift - Substance Painter
Geometry Without UVs
The following variation of the aforementioned setup allows for the textures to mapped to geometry without preset UVs.
Material Network (MATnet)
RS Material Builder
As before, the RS Texture for each diffuse, roughness, metallic, and normal maps is linked but with an RS TriPlanar to account for the lack of UVs.
Side Note: The RS Point Attribute in the following is solely included to vary the spheres with their own @Cd point attribute in tandem with the Substance material.
Python Automation Functions
RS Material with Substance Presets
Function to populate RS Material with texture format specific to Substance Painter output:
Isolate function to create Redshift material with texture nodes speci... · morphingdesign/houdiniPython@3f506e9
fied for Substance Painter output. Function re-integrated into main material network node creation function and available for individual use.
Substance Material (COP) Link To RS Material
Function to nest COPnet and MATnet in GEOnet to encapsulate relative links, including preset for Substance Material/s in COPnet linked to Redshift Material in MATnet:
Add function to create a compositing and material network to read a .... · morphingdesign/houdiniPython@0a1dbb6
sbsar file and distribute its layers to a RedShift material node. Networks can be added to OBJ network or selected geometry node.
RS Material Coordination
Redshift Material Stacking/Layering. Simple + More In Depth Methods.
In this lesson you will learn how to stack multiple materials on top of each other. Layering materials in Redshift Render is different than in C4D. It's a no...
Geometry transitioned into LOP network, exported to USD, then to USDz.
Universal Scene Description
Local, Inherits, Variant Sets, References, Payload, Specializes
Strength ordering for opinions and namespace composition in USD
Layer: File on disk
Primary Container: Primitives are the primary container object in USD
Stage: Resulting composition of layers
Primitives and computed indices are the only persistent scene graph (SG) objects kept in memory
Composition Arcs: Combination methods for layers of layer parts
Sublayer: Fixed graph locations
Namespace: Path to prims in graph
Primitives are the primary namespace object
Can contain other primitives creating a namespace hierarchy on a stage
Attributes are second to Primitives
Opinions: Atomic elements defining value resolution
Defined by LIVRPS Strength Ordering
References: Pointers to content in memory
This is distinguished from packed prims on disk
Payload: Load applicable content as necessary to manage memory and processing
Instancing: Creates 'Prototypes', which are the objects being instanced
Each instance is the same
Cannot override beneath root prim
Can be 'broken' if necessary
SOP geometry defined as packed prims enter LOPs as instance-type prototypes
Variant Set: Set of alternatives
LODs can be stored as variants
Can be configured relative to camera position
Transition SOP to LOP (lighting operators)
Modifications applied within a
SOP > LOP
output node as outgoing node in SOP geo to manage consistent output from geometry object, which can link to
SOP Import in LOPs.
SOP Import can have path set to object since
output node defines consistent output. This strategy applies to all SOP import strategies within LOPs.
SG Hierarchy Definition
shop_materialpath(SOP) to define hierarchy (LOP/SG)
nameattributes translated to kinds (LOP/SG)
- Use primitive groups (SOP) translated to sub-components (LOP/SG)
This SOP allows for the configuring the attributes intended for the SG from SOP context, before data is passed into LOPs.
On the other hand, attributes can be configured after data has entered into LOP context with these LOPs.
This is the structure visualized by the Scene Graph (SG) depicting the composition arcs and their corresponding layer stacks (LIVRPS).
Cache Directory Structure
This is the structure in which the actual .usd, .usda, and .usdc files are stored and read in by the composition structure.
- Standardize structure; follow Pixar's example.
- Variants / layers can be used to accommodate ongoing edits.
- Explicitly define .usda and .usdc files.
- Example Directory Structure
Geo Cache (.usdc)
Geo Variants (.usda)
Base Reference (.usda)
Solaris Workshop | SideFX
Learn production techniques for bringing USD and Solaris into your lighting and VFX pipelines. Using a shot of a market scene coming alive with magical effects, these sessions explore different components of the production workflow. The goal is for experienced artists and TDs to better understand these new workflows in a production setting.
Model Viewer - Web 3D
Export .glb content from Houdini and deploy to website with interactive elements.
Export .usdz content from Houdini and accompany the web content for use in iOS AR.
CSS Custom Properties Properties These browser features are required for to work correctly: These browser features are optional and are only used if available for performance optimization or specific features: These browser features are optional and are only needed if you wish to use webxr in ar-modes:
IFC > FME > Houdini
I've used FME to get some IFC content into Houdini via glTF and CSV files. The glTF (processed from the IFC in FME) carries the geometry as primitives nested within meshes and are imported as packed primitives into Houdini. At the same time, the CSV (also processed from the IFC in FME) brings in the rest of the IFC data aligned to each mesh, either by sorted order or mesh centroid. The
Attribute Transfer SOP in Houdini then allows the IFC data to be realigned with its corresponding mesh/packed primitive. This was a process that I used only a few times here and there, so I was okay with running it through a for-loop in Houdini to get large building elements like the shell without dealing too much about the smaller details.
Unity Toolbox HDA > Unity
Unity VFX tools for Houdini =========================== Requirements: ============= * Houdini 17 Apprentice, Indie, Core or FX Install: ======== * Use the File > Import > Houdini Digital Asset to Import the Unity_VFX_Tools.hda file. * If you have a workspace set-up with your tools (eg: GameDevelopmentToolset), you can put the .hda file in the /otls directory so it's imported at startup.
Test & Analysis
Test processed volume SDF and point cache from Houdini using the Unity Toolbox HDA and exported. Assets imported into Unity and integrated with Visual Effects Graph in Universal Rendering Pipeline. Particle counts tested successfully up to 10 million particles.
Test of VFX Graph from Test 1 applied into AR with Unity and Vuforia tracking. 1,000,000 particles at ~60fps. Jittering in AR is from slightly unstable tracking and my grasp of the iPad.
ZBrush > Houdini
Note that GoZ exports the subtool with the lowest subdiv setting, so if necessary, delete all lower ones to export the highest res subtool.
Individual v. All Subtools
Select 'All' to export all subtools in project to Houdini rather than individually selected subtools.
Houdini > ZBrush
Use Name SOP to identify geo to be treated as separate subtools.
On This Page
- Houdini > UE4
- Integration with Megascan Assets
- HDA with Megascan Assets
- Blockout Geo Test
- Archived Work
- Niagara ROP
- Point Cache Asset
- Niagara System
- Scrub FX in Sequencer Timeline
- Niagara System Component
- Substance > Redshift3D
- Geometry With UVs
- Compositing Network (COPnet)
- Material Network (MATnet)
- Geometry Without UVs
- Material Network (MATnet)
- Python Automation Functions
- Workflow Logic
- Composition Structure
- Cache Directory Structure
- Model Viewer - Web 3D
- IFC > FME > Houdini
- Unity Toolbox HDA > Unity
- Test & Analysis
- ZBrush > Houdini
- Houdini > ZBrush