On this page

The plug-in supports various types of Inputs to send data from Unreal to the Houdini Assets. Any changes made to the inputs will be automatically pushed to the Houdini Asset, causing it to be evaluated and its output recooked.

Currently, Houdini Engine for Unreal supports the following input types:

In Houdini 20.0, some of the previously available input types have been deprecated and merged into existing ones:

Input types do not restrict the type of object/data that an input can send to Houdini. For example, a World Input can now send landscapes to Houdini, or can select and connect other Houdini Asset Actors like an Asset Input would.

These are the type of objects that are currently supported by the plugin’s inputs:

Creating Inputs

There are two ways to create an input to send data from Unreal to Houdini.

You can use regular Node Inputs for SOP-type assets or by creating Object Path Inputs in the Operator Path parameter on your asset.

Node Inputs

By design, SOPs have nodes connectors for passing geometries. This allows SOP type assets to also have node connectors for inputting geometries. Those inputs can be configured by changing the Minimum Inputs and Maximum Inputs values in the Operator Type Properties dialog of the assets.

All inputs created using this method will be listed in the Input Details Panel, and their names can be changed in the Input/Output tab of the Operator Type Properties dialog.

Object Path Inputs

Object Path Inputs are created from Operator Path parameters that accepts a path to a Houdini node. In order to input geometry, the Op Filter needs to be set either to Any Object or Any SOP. When geometry is assigned to this parameter, Houdini Engine will create the appropriate Houdini nodes that will represent the input geometry. The asset can then use these nodes to access the geometry.

Although the Operator Path parameter can be created manually, the simplest way to create one is to create an Object Merge SOP and expose its Object (objpath) parameter to the asset level. The geometry can then be accessed from the output of the Object Merge SOP, and will appear in unreal as an Input in the Parameter Details Panel

These parameters will appear mixed with the asset’s other parameters in the details panel, as parameters are just a regular type of parameters, but they will have the same behavior as Node Inputs.

They can be used for both Object-type assets and SOP-type assets to input geometry, but it is more common to use Node Inputs connections directly for SOP-type assets. Unlike Node Inputs, you can’t set the Keep World Transform option on Object Path inputs.

For more details, see Operator Path Parameters.

Setting A Default Input Type

By default, the input type will be set to geometry when you instantiate the HDA in Unreal.

You can set a different default input type by modifying the input name (for SOP inputs) or object path parameter label (for Object Path Inputs) so that it contains certain keywords:

  • if the name contains curve, the default input type will be a Curve Inputs

  • if the name contains landscape, terrain or heightfield the default input type will be a World Input

  • if the name contains world or outliner the default input type will be a World Input

  • if the name contains asset or hda, the default input type will be a World Input

  • if none of the above condition is met, the default input type will be a Geometry Inputs.

The default input type can be changed afterwards and will only be used on the first instantiation of the HDA.

Input Details Panel

If your asset has Node Inputs, the Houdini Inputs part of details panel of the asset will list them all in an Array. You can change Input Types using the dropdown menu. The details panel will then update and allow you to modify this input type’s options and parameters.

If your input is an Object Path Inputs, its details, options and parameters will be listed in the same way in the Houdini Parameters part of the details panel.

Keep World Transform

The Keep World Transform checkbox is present for all input types, and controls the way the geometry or asset’s transform is marshalled from Unreal to Houdini. When geometry is marshalled to Houdini through an input, an Object Merge node connects the asset and the geometry. For Node Inputs, the Object Merge node is automatically created by Houdini engine, and set up in the same way that an object merge is used for Object Path Inputs.

  • When Keep World Transform is on, the Object Merge used to connect the input will have its Transform parameter set to INTO_THIS_OBJECT, causing the marshalled geometry to use the Asset Actor’s Unreal Transform in Houdini.

  • When off, the Object Merge's Transform parameter will be set to NONE, causing the geometry to ignore the Asset Actor’s Unreal Transform in Houdini, treating the geometry as if it’s at the origin.

In summary, if an asset actor is located at (10, 10, 10) in Unreal, the geometry’s Transform will be (10, 10, 10) in Houdini if Keep World Transform is checked, or (0, 0, 0) if Keep World Transform is unchecked.

Pack Geometry Before Merging

The Pack Geometry Before Merging checkbox is available for geometry and world inputs.

When on, all the different meshes and objects in the input will be packed individually before being merged into your asset’s input. This allow you to have each object available as a packed primitive in Houdini, making instancing and differentiating objects easier, but can cause some issues depending on the way your hda is set up ( for example, scattering points on a packed primitive will not work correctly ).

When off, all the incoming meshes and objects in the input will be merged in a single geometry.

Import input as reference

When on, the input geometry will not be created in Houdini, but instead will be replaced by a point, with the “unreal_instance” attribute set to the source asset’s path.

Using this option is useful in a situation where you don’t need to send the full geometry to Houdini since this can be an expensive operation. One such scenario is if you want to create an HDA to randomly scatter multiple instances of the input geometry in a certain area.

The created point cloud can also contain additional attributes if the corresponding option is enabled on the input:

  • the material used (unreal_material)

  • the full transform (P, rot, scale) with rotation and scale

  • the bounding box (bbox_min and bbox_max)

The level and actor path is also present for World Inputs.

Add rot/scale to input references

If the input has Import input as reference on, the point representing the geometry will have two float vector attributes called rot for rotation and scale for scale. rot has 4 elements while “scale” has 3 elements. They will be the values used by the Transform data on the corresponding Unreal objects.

Having this on is useful when you want your HDA to take in information about the orientation and scale of the input, without having to pay the price of sending the actual input geometry to Houdini.

Add bounding box min/max to input references

If the input has Import input as reference on, the point representing the geometry will have two float vector attributes called unreal_bbox_min and unreal_bbox_max. These two vectors will each have 3 elements. They will denote the positions of two vertices in the axis-aligned bouding box of the input.

Having this on is useful when you want your HDA to take in information about the dimensions of the input, without having to pay the price of sending the actual input geometry to Houdini.

Add material to input references

If the input has Import input as reference on, then when this is checked, the point representing the geometry will have string attributes that are the paths to the material assets attached to the input geometry. These attributes will be named unreal_material, unreal_material1, unreal_material2, etc.

Export LODs

The Export LODs checkbox is available for geometry and world inputs.

It will be only on if one of the mesh in the input has more than one LOD level, and when checked, all the LOD levels for each mesh will be marshalled to houdini, and each assign to a LOD Groups

Export Sockets

The Export Sockets checkbox is available for geometry and world inputs.

When on, all the sockets for the asset in the input will be marshalled to houdini, and available as points in a Socket group. See Mesh Sockets for more details.

Export Colliders

The Export Colliders checkbox is available for geometry and world inputs.

When on, the simple colliders found in the input mesh will be created in Houdini as grouped geometry, using the correspond unreal_collision_ groups.

Prefer Nanite Fallback Mesh

The Prefer Nanite Fallback Mesh checkbox is available for geometry inputs.

When on, if a Nanite mesh is used as geometry input, Houdini will attempt to use its fallback mesh instead of the full resolution Nanite mesh.

The default state of this setting is the same as the Prefer Nanite Fallback Mesh checkbox in the HoudiniEngine plugin settings.

Input Types

Geometry Inputs

Geometry inputs are used to marshall data from Unreal assets (in the content browser) to Houdini. To do so, you can either drag and drop one or multiple Unreal asset(s) from the content browser onto it, or select one from the drop down menu. See Geometry Inputs settings for more informtaion.

When there is more than one geometry set as input, the geometries can be differentiated in the Digital Asset with the Unreal to Houdini attribute unreal_input_mesh_name which is created on the input geometry primitives.

You can add multiple geometry assets to the input by adding extra input slots by clicking on the + Add button.

A row of icon displayed on the current slots allows you to:

  • use the current selection

  • browse to the input object

  • reset the current input object

  • edit the current input object’s transform offset

  • insert, duplicate and delete input objects

  • delete the geometry input object.

Each asset selected in a geometry input has its own Transform Offset. This transform offset allows you to translate, rotate and scale individually each asset in the input to compensate for unnormalized assets, misplaced pivot points, etc. Select the cube with coordinates icon to open the transform offset menu.

Unreal geometry marshalled through a Geometry Input will contain the following Unreal to Houdini attributes on their corresponding Houdini node:

  • unreal_material

  • unreal_face_smoothing_mask

  • unreal_lightmap_resolution (details)

  • unreal_input_mesh_name

  • unreal_input_source_file

as well as these Standard Houdini Attributes:

  • Point positions P

  • Vertex normals N

  • Vertex colors Cd

  • UV sets uv, uvX.

You can preset the default object used in a geometry input by setting the default value to a valid unreal asset reference when using Object Path Parameters inputs.

Data Tables can be imported using Geometry inputs: Their data will be available in Houdini as a point cloud, with each point representing a row of the Data Table. Each of the variables will be available as an attribute, named unreal_data_table_X_NAME, where X is the index of the variable, and NAME its name.

The unreal_data_table_rowstruct attribute is also created to indicate the Structure used by the data table, and the unreal_object_path attribute stores the path to the source Data Table asset.

If the original type for any of the properties in the Structure used by the data table are numeric, then it will be converted to an appropriate numeric type in Houdini.

The available integer types in Houdini are signed/unsigned 8 bits, signed 16 bits, signed 32 bits, and signed 64 bits. 16 bit unsigned integers are converted to 32 bit signed integers. 32 bit unsigned integers are converted to 64 bit signed integers. 64 bit unsigned integers are forcibly converted to signed 64 integers since Houdini does not have unsigned 64 bit numbers or larger integer types. This means that overflow can occur in this case.

Houdini supports both single and double precision floating point types, so any properties with a floating point type are converted directly.

The following aggregate types native to Unreal will be converted to tuples in Houdini with each component converted to a numeric type following the above rules.

  • All native vector types in the order (X, Y, Z, W)

  • Rotators in the order (Roll, Pitch, Yaw)

  • Transforms, split into three 3 component vectors

  • Colors and linear colors in the order (R, G, B, A)

Bools will be converted to signed 8 bit integers with a value of either 0 or 1.

All other property types will be converted to a string attribute in Houdini.

Note

The variable names are sanitized before being converted to attributes. Invalid character in a variable name will be replaced by underscores.

See Curves for more details on how to edit the curve.

World Inputs

World inputs allow you to connect any Actor in the world to your Asset’s input.

Select Start Selection, this locks the details panel and allows you to select the Actors to connect to your input. After your selection, select Use Current Selection again. The current selection will be displayed under the button.

World Inputs can also work in Bound Selector mode. When on, the selected Actors become bound selectors and sends all the actors that are in their bounding box to the input. In that mode the world input will display two lists:

  • one for the actors acting as bound selectors

  • and another for the selected actors that are sent to Houdini.

You also have the option to automatically update the bound selector. When on, the plugin will periodically check for new/removed actors in the bounds, and will udpate the input and recook the HDA if any change is detected.

World Inputs supports a variety of actor types:

  • regular Actors with Mesh components

  • Instancers

  • Landscapes

  • Foliages

  • Houdini Asset Actors

  • BSP Brushes

  • Landscape Splines and Spline Mesh Components

  • Level instances and Packed Level Actors

Instancers imported as a world input are created as packed primitives and Landscapes as Heightfield. Houdini Asset Actors can be directly connected in Houdini, when the corresponding option is on.

World inputs also allow you to use an Unreal Spline Components as a curve input in Houdini. If an Actor with a Spline Component is selected, the Spline will be converted to a Curve in Houdini.

The Unreal Spline components will be resampled to linear curves, as their behavior cannot be reproduced 1:1 in Houdini. The spline’s refined positions are sent as CVs to the corresponding Curve SOP in Houdini.

The Unreal Spline Resolution parameter allows you to choose the sample length used to resample and send these points to Houdini. The default value of 50 will extract a spline point every 50 cm in Unreal and marshall it to Houdini. If set to 0, only the spline’s control point will be marshalled.

See Unreal Spline Components for more details.

Unreal landscapes marshalled through a World Input will contain the following Unreal to Houdini Attributes in their corresponding Houdini Node:

  • unreal_input_mesh_name

  • unreal_vertex_index

  • unreal_lightmap_resolution

  • unreal_lightmap_color

  • unreal_material

  • unreal_material_hole

as well as these Standard Houdini Attributes:

  • Point positions P

  • Point normals N

  • UV coordinates uv

The input landscape’s Actor/Component tags are sent to houdini as primitive attributes, prefixed by unreal_uproperty_tag_, followed by the tag’s name.

If Export Selected Landscape Components Only is on, only the currently selected Landscape Components will be exported to Houdini. When off, the whole landscape will be marshalled. See World Input Settings for more information.

Unreal meshes marshalled through a World Input will contain the following Unreal to Houdini Attributes on their corresponding Houdini node:

  • unreal_material

  • unreal_face_smoothing_mask

  • unreal_lightmap_resolution

  • unreal_input_mesh_name

  • unreal_input_source_file

  • unreal_actor_path

as well as these Standard Houdini Attributes:

  • Point positions P

  • Vertex normals N

  • Vertex colors Cd

  • UV sets uv, uvX

Unreal Spline Components marshalled through a World Input will have the following Standard Houdini Attributes set on their corresponding Houdini nodes:

  • Position P

  • Rotation rot

  • Scale scale

Primitive groups are created for the selected objects’s Actor and Component tags.

Exporting another Houdini Asset Actor using World Input with the Directly Connect HDAs in Houdini option turned on will directly connect a Houdini Asset to the input of another Houdini Asset. This is more efficient since both Assets will be directly connected in Houdini and prevent extra data transfer between Unreal and Houdini. This also helps ensure all the original attributes and data will be preserved and not lost in translation between both Application.

When off, the Unreal outputs (meshes, instancers etc..) are exported to the input.

See World Input Settings for more information.

Curve Inputs

Curve data can be marshalled from Unreal to Houdini using Curve Inputs. The details panel allows you to set up the parameters of the created Curve SOP that is connected to the input in Houdini. See Curve Settings for more information.

You can create multiple curves objects in a single input. You can use the Add button on the current input. The Clear All button to delete all created curves.

Each added curve will be created with a incremental position offset on its default position from the previous one, to avoid having multiple overlapping curves. The offset can be reset by pressing on the Reset Curve Offset button.

Each curve creates its own curve in Houdini, that will be merged with the other curves nodes in the input.

Curves that are sent to Houdini via Curve Inputs will have the following Standard Houdini Attributes set on their corresponding Houdini nodes:

  • Position P

  • Rotation rot

  • Scale scale

Curve inputs now give you access to a Spline Point Editor, similar to Unreal’s Spline Component, that lets you manually edit the transform for selected control points in a curve.

Unreal

Getting started

Basics

Using Houdini Engine

Reference

Houdini Engine for Unreal Engine is a plug-in that allows integration of Houdini technology into Unreal. Session Sync and Node Sync are two features of the Houdini Engine Plugin to interact with a live session of Houdini.

This plug-in brings Houdini’s powerful and flexible procedural workflow into Unreal Engine through Houdini Digital Assets. Artists can interactively adjust asset parameters inside the editor and use Unreal assets as inputs. Houdini’s procedural engine will then “cook” the asset and the results will be available in the editor without the need for baking.

General information:

Compatibility:

Currently, the plugins has binaries that have been built for UE5.3, 5.2, 5.1, 5.0, UE4.27 and UE4.26, and is linked with the latest production build of Houdini.

Source code for the plugin is available on this repository for UE5.3, 5.2, 5.1, 5.0, UE4.27, UE4.26.

Note

UE5.1 and UE5.0 use the same source files/branches, the 5.0 sources are also intended to be used with 5.1.

Support and reporting bugs:

SessionSync

The Houdini Engine SessionSync feature allows you to connect to a session of Houdini Engine running inside Houdini with its GUI. It supports all the features of the regular Houdini Engine workflow and additional features specific to Session Sync.

Houdini Engine uses a non-UI version of Houdini while Session Sync lets you see and interact with the Houdini session through Houdini’s user interface. It also synchronizes changes made in either Unreal or Houdini so both programs can make changes and see the same results.

NodeSync

NodeSync is a feature for the Houdini Unreal Engine Plugin that enables sharing assets between Unreal and Houdini Session Sync. It works for Skeletal and static meshes.

You can send and receive data to and from Unreal without a dedicated HDA. It works with Static and Skeletal meshes as well as Actors.

Houdini Niagara

The Houdini-Niagara plugin allows you to exchange point cloud data between Houdini and Unreal’s Niagara system using the HoudiniNiagara Data Interface. You can export Houdini’s attribute data as HoudiniPointCache assets. These can then be imported into Unreal to use the Niagara systems and emitters to create complex effects and particle systems.