Houdini Engine for Unreal
 All Files Pages
Inputs

The plug-in supports various types of Inputs to send data to Houdini Assets. When geometries are connected as inputs, any changes made to them 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:

Creating Inputs

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

This can be acheived either by using regular Node Inputs for SOP-type assets, or by creating Object Path Inputs by exposing an 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.

Unreal_InputsTypeProperties.png

All inputs created in this way 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.

Unreal_InputsObjectPathParam.png

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

Unreal_InputsObjectPath.png

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, it is not possible to set the Keep World Transform option on Object Path inputs.

For more details, please 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 the**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 Landscape Inputs
  • if the name contains world or outliner the default input type will be a World Outliner Inputs
  • if the name contains asset or hda, the default input type will be an Asset Inputs
  • 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 by 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.

Unreal_InputsDetails.png

Keep World Transform

The Keep World Transform checkbox is present for all input types, and controls the way the geometry / asset's transform is marshalled from Unreal to 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 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.
  • If unchecked, 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.

To sum things up, 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 outliner inputs.

When checked, 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 ).

Export All LODs

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

It will be only available 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.

Input Types

Geometry Inputs

Geometry inputs are used to marshall geometry from Unreal assets to Houdini. To do so, you can either drag and drop an Unreal asset from the content browser onto it, or select one from the drop down menu.

Unreal_InputsGeometry.png

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 clicking on the + button. You can also insert, duplicate or delete geometry inputs by using the drop-down menu on the far right.

Unreal_InputsGeometry2.png

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

Unreal_InputTransformOffset.png

The Keep World Transform checkbox controls the way the geometry's transform is used in Houdini.

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
  • unreal_input_mesh_name

as well as these Standard Houdini Attributes :

  • Point positions (P)
  • Vertex normals (N)
  • Vertex colors (Cd)
  • UV sets (uv, uvX).

Asset Inputs

The Asset Input type allows you to connect a Houdini Asset to the input of another Houdini Asset. This is actually more efficient than just sending the geometry created by one asset to another input, as both Assets will be directly connected in Houdini.

The actor picker will display a list of all the Houdini Assets present in the world, allowing you to select which Houdini Asset you want to connect to the input. Just click on a Houdini Asset Actor in the list to use it as an input. The Houdini Asset Actor currently connected to the input will be displayed as the Current Actor on top of the Actor picker.

For now, only one Houdini Asset Actor can be connected to another via an Asset Input.

Unreal_InputsAsset.png

The Keep World Transform checkbox controls the way the asset's transform is used in Houdini.

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:

Unreal_InputsCurves.png
  • Primitive Type allows you to choose the curve type between Polygon (linear), Bezier and NURBS.
  • Method allows you to choose the way the curve's CV are used when using either Bezier or NURBS curves. If CVs is selected, the curve point will be treated as Control Vertices, so the NURBS and Bezier curves will not pass through them. If set to Breakpoints, Houdini will automatically calculate the appropriate Control Vertices so that Bezier and NURBS curves pass through the curve's control point. The Freehand method should be ignored in the Unreal plug-in.
  • Close allows you to decide if the curve's last point should be connected to the curves first points.

Finally, the Keep World Transform checkbox controls the way the curve's transform is used in Houdini.

Curves that are handled with a Curve Input will have the following Standard Houdini Attributes set on their corresponding Houdini nodes:

  • Position (P)
  • Rotation (rot)
  • Scale (scale)

For more details on how to edit the curve, please consult Curves

Landscape Inputs

As their name suggests, Landscape Inputs allow you to marshall landscape data to your asset's input.

The actor picker in the Details panel displays a list of all the Landscapes present in the world, allowing you to select the one you want to use as your asset's input. Just click on a Landscape in the list to use it as an input. For now, you can only use one Landscape per input. The current selection will be displayed on top of the Actor picker.

Unreal_InputsLandscape.png

You can choose how you want the landscape data to be exported to Houdini. Landscape can be exported as :

  • a heighfield: the landscape data will be converted to a heightfield 2D volume. All landscape layers will also be added as masks to the heightfield.
  • a mesh: the landscape height values will be converted to a triangulated mesh. Landscape layers will not be sent to Houdini. This is the most costing option of the 3, as more data will be sent through Houdini Engine.
  • Points: the landscape data will be sent to Houdini as points. Landscape layers will not be sent to Houdini.

If Export Selected Landscape Components Only is checked, only the currently selected Landscape Components will be exported to Houdini. If unchecked, the whole landscape will be marshalled.

  • When sending only the selected landscape components, you have the option to Auto-select components in asset bounds. If enabled, when there is currently no component selected on the landscape, the plug-in will send the landscape components that are contained with the asset's bounding box.

When exporting to Mesh or Points, the following options are also available:

  • if Export Landscape Materials is checked, the landscape's face and hole materials will be exported to Houdini.
  • if Export Landscape Tile UV is checked, the landscape's UVs will be exported in a separate texture for each tile.
  • if Export Landscape Normalized UVs is checked, the landscape's UV values will be exported in [0, 1]
  • if Export Landscape Lighting is checked, the landscape's Lightmap information will be exported to Houdini.
  • Export Landscape Curves is currently not implemented.

The Recommit Landscape button can be use to export the landscape data again. This is to be used if the landscape's data has changed, as Landscape Inputs do not automatically update Houdini after a change has been made to them.

Finally, the Keep World Transform checkbox controls the way the Landscape's transform is used in Houdini.

Unreal landscapes marshalled through a Landscape 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)

World Outliner Inputs

The World outliner inputs allow you to connect any Actor in the world to your Asset's input. To do so, press the Start Selection button, this will lock the details panel and allow you to select the Actors you wish to connect to your input. Once your selection is finished, just press the Use Current Selection button again. The current selection will be displayed under the button.

Unreal_InputsWorld.png

World outliner inputs also allow you to use an Unreal Spline Component as a curve input in Houdini. If an Actor with a Spline Component is selected, the Spline will be converted to a Curve SOP 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.

Please see Unreal Spline Components for more details.

The Keep World Transform checkbox controls the way the actor's transform is used in Houdini.

Note
If a Component has a Component Tag HoudiniNoUpload, that component will be skipped.

Unreal meshes marshalled through a World Outliner 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

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 Outliner Input will have the following Standard Houdini Attributes set on their corresponding Houdini nodes:

  • Position (P)
  • Rotation (rot)
  • Scale (scale)