Houdini Engine for Unity (v2 beta)
 All Files Pages

Sending data upstream, that is from Unity into Houdini, is a very useful and powerful feature. This allows data in Unity to be used as input to a Houdini asset, cook it, then send the generated output back out to Unity.

This can be achieved in 2 ways:

The primary mechanism to send and use input data is via Object Merge nodes. Either an existing Object Merge node is used or a new one created, and connected to the asset.

The following input data are currently supported:

  • Unity mesh
  • HDA (as node connection)

The following input data are planned to be supported:

  • Curve Inputs
  • Terrain Inputs

Node Inputs

By design, SOPs have node 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 in this way will be listed in the Inputs Interface. These are treated the same as the Object Path Input Parameter inputs.

Object Path Input Parameter

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.

These 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.


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. It will then appear in Unity as the Inputs Interface on the asset UI:

Unity Mesh Input Type


HDA Input Type


Input Type

Type of input data. Currently supporting Unity Mesh (GameObject or Prefab), and HDA (Input Asset). The above images show the Inputs Interface for those types.

Keep World Transform

Only available for Unity Mesh input type

This affects how the input object's transform is marshalled from Unity into Houdini. When geometry is marshalled to Houdini through an input, an Object Merge node is used to connect 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.

  • If Keep World Transform is checked, the Object Merge used connect the input will have its Transform parameter set to INTO_THIS_OBJECT, causing the input geometry to use its Unity world transform values in Houdini. Therefore if the input was at (0,10,0) in Unity, it will be at (0,10,0) in Houdini.
  • If unchecked, the Object Merge's Transform parameter will be set to NONE, causing the geometry to use its Unity transform as offset from its Object transform. Therefore if the input was at (0,10,0) then it will be 10 units higher in Houdini from its Object transform.

Pack Geometry Before Merging

Only available for Unity Mesh input type

If checked, all the different Unity meshes will be packed individually before being merged into the asset's input. This allows to have each object available as a Packed Primitive in Houdini, making instancing and differentiating objects easier.

Input Objects

Only available for Unity Mesh input type

This is a dynamic list of input objects (GameObjects or Prefabs) that should contain Unity Mesh data (specifically should have MeshFilter Component with valid mesh geometry). When marshalling the geometry, the name of the GameObject will be assigned as the primitive attribute named unity_input_mesh_name. This attribute can be used in Houdini to separate the meshes. If the GameObject has assigned materials, the material names will also be set on a primitive attribute named unity_material. This way the material assignment can survive the roundtrip back to Unity.

Transform Override - Each input object can be assigned a transform override that will be used instead of the Unity transform.

Input Asset

Only available for HDA input type

For HDA input type, this can be used to specify an HDA in the Unity scene. Only the root GameObject of the HDA (the one with the Houdini Engine UI) is accepted here. When set, the plug-in will create a new Object Merge node in the Houdini Engine session, specify the path to the HDA in the "Object (objpath)" parameter, and connect the new Object Merge node to the current asset. This is more efficient than uploading the geometry created by one asset into another, since the connection is directly made in the Houdini Engine session.