Houdini Engine for Unreal
 All Files Pages
Special Attributes and Groups

Certain special groups and attributes are used when marshalling data between Houdini and Unreal.

See the referenced topics for more details.

Houdini to Unreal

This table lists special attributes that can be set in an HDA, and that be recognized and used by the plugin when translating the Houdini data to Unreal outputs.

Attribute Name Owner Type Topic Description
unreal_material ANY String Materials Unreal path of a Material asset to apply to an output.
unreal_face_material prim, detail String Materials (deprecated) use unreal_material instead.
unreal_material_hole prim, detail String Landscapes Unreal path of a Material asset used for Landscape holes.
unreal_material_instance prim, detail String Material Instances Unreal path of a Material asset to create an instance of.
unreal_material_hole_instance prim, detail String Material Instances Unreal path of a Material asset to create an instance of, to be used for Landscape holes.
unreal_physical_material prim, detail String Materials Unreal path of a PhysicalMaterial asset to be used as a Physcial Material on the output.
unreal_material_parameter_* detail ANY Material Instances Attribute prefix used to modify generated material instances' parameters.
unreal_face_smoothing_mask prim int Materials Mesh smoothing mask data.
unreal_uproperty_* any Int/Float/String Generic UProperty Attributes Attribute prefix used to modify UProperties of the generated output objects/actors/components.
unreal_lightmap_resolution any int Meshes Lightmap resolution for the mesh component.
lodX_screensize detail, prim floats Level of Details Screensize value for the LOD number X generated by the current assets.
unreal_tag_* any string Outputs Prefix used to specify tags on the output object.
unreal_output_curve any int Outputs Curves that have this attribute set to 1 will output as SplineComponents.
unreal_output_curve_linear any int Outputs Indicates whether or not an output curve should be linear.
unreal_output_curve_closed any int Outputs Indicates whether or not an output curve should be closed.
unreal_instance point, detail string Instancers Unreal path to an Asset that shall be instanced at the given transform. In version2, this attribute can also be a Class Name ("PointLight" for example).
unreal_foliage detail, prim, point Int, Float Instancers When used on instances (and set to 1), the plugin will add the instances to the current level;s foliage system instead of creating new actors/components.
unreal_split_instances detail, prim any Instancers Indicates that the generated instances should be split into StaticMeshComponents instead of one InstancedStaticMeshComponent.
unreal_instance_color prim float[4] Instancers Used with unreal_split_instances to specify a per-instance color to override the generated StaticMeshComponents vertex colors.
unreal_split_attr any String Instancers Indicates the name of another attribute to be used to split the instancers into multiple components depending on that second attributes values.
unreal_hierarchical_instancer any Int Instancers When set to 1, this attribute can be used to force the creation of HierarchicalInstancedStaticMeshComponent instead of InstancedStaticMeshComponents.
unreal_landscape_tile_actor_type ANY Int Landscapes Indicates the type of landscapes actor that should be created for tiled landscape, either individual landscape actors (0) or Landscape Streaming Proxies with a Shared Landscape Actor (1).
unreal_landscape_streaming_proxy ANY Int Landscapes (deprecated) use unreal_landscape_tile_actor_type instead. Default Value: "{temp}". (Supports String Tokens).
unreal_landscape_shared_actor_name ANY String Landscapes Name for the main/shared landscape actor when using landscape streaming proxies. The name for landscape tile actors will be read from 'unreal_output_name'. Default Value: "{hda_actor_name}_SharedLandscape". (Supports String Tokens).
unreal_landscape_layer_min ANY Float Landscapes Lets you specify the minimum values to be used for when converting heightfield layers/height values to landscapes. This is especially useful to ensure all tiles are converted in the same manner.
unreal_landscape_layer_max ANY Float Landscapes Lets you specify the maximum values to be used for when converting heightfield layers/height values to landscapes. This is especially useful to ensure all tiles are converted in the same manner.
unreal_unit_landscape_layer Prim, Detail Int Landscapes If set to 1, indicates that a heightfield mask's value should be considered in [0, 1] when converting their values to landscape layers
unreal_landscape_layer_nonweightblended Prim, Detail String Landscapes Names of heightfields masks, separated by spaces, that should be created a non-weight blended landscape layers.
unreal_landscape_layer_info Prim String Landscapes Unreal path of an existing LandscapeLayerInfo object to be used when converting a given heightfield mask to a landscape layer.
unreal_level_path ANY String Outputs Path to the level in which an actor should be generated. This attribute is also available on inputs. The default value is ".", which will generate geometry in the the current persistent world, path starting with a "/" are considered absolute, while other are relative to the current persistent world's Map. Default Value: "{out}". (supports String Tokens).
unreal_output_name any string Meshes Name to be used for the output. Default value for single landscape actor: "Landscape". Default value for tiled landscape actors: "LandscapeTile{tile}". (supports String Tokens).
unreal_generated_mesh_name any string Meshes (deprecated) use unreal_output_name instead.
unreal_bake_folder prim, detail string Baking Outputs Unreal path of a Folder used to override the default Bake folder for this asset. Default value: "{bake}". (Supports String Tokens).
unreal_temp_folder detail string Baking Outputs Unreal path of a Folder used to override the default Temporary cook folder for this asset. Default value: "{temp}". (Supports String Tokens).
unreal_bake_name prim, detail string Baking Outputs Name override that should be used when baking.
unreal_bake_actor any string Baking Outputs Unreal path to an Actor that will be created/used when baking the given output.
unreal_bake_outliner_folder any string Baking Outputs Unreal path to a world outliner folder that will be created/used when baking the given output.
mesh_socket_name point string Mesh Sockets Name of a mesh Socket generated by Point Groups.
mesh_socket_tag point string Mesh Sockets Tag of a mesh Socket generated by Point Groups.
mesh_socket_actor point string Mesh Sockets Name of an Actor to be automatically attached to a socket generated by Point Groups. In v2, this can also be a path to an asset that will be instantiateed as an Actor and attached to the socket.
mesh_socketX_pos detail float[3] Mesh Sockets Vector3 representing a Mesh Socket's location.
mesh_socketX_rot detail float[4] Mesh Sockets Quaternion used for a Mesh Socket's rotation.
mesh_socketX_scale detail float[3] Mesh Sockets Vector3 representing a Mesh Socket's Scale.
mesh_socketX_name detail string Mesh Sockets Name of a generated Mesh Socket.
mesh_socketX_tag detail string Mesh Sockets Tag of a generated Mesh Socket.
mesh_socketX_actor detail string Mesh Sockets Name of an Actor to be automatically attached to.

Setting up those attributes on your asset will allow you to control and override some properties and behaviours of the generated Unreal outputs.

Please consult the corresponding Topic for more details.

Unreal to Houdini

This table lists special attributes which are created by the plug-in when importing data from Unreal to Houdini.

Attribute Name Owner Type Topic Description
unreal_object_path PRIM String Inputs Path to the input object.
unreal_level_path PRIM String Inputs Path to the level that contained the input data.
unreal_actor_path PRIM String Inputs Path to the selected input actor.
unreal_input_mesh_name prim string Inputs Unreal path of the mesh uasset plugged in the input.
unreal_input_source_file prim string Inputs Source path of the uasset plugged into the input (file path to the source .fbx for example)
unreal_material PRIM String Inputs Path to a material asset used on the input.
unreal_material_hole PRIM String Inputs Path to a material asset used as hole material on the input landscape.
unreal_material_parameter_* PRIM String Inputs Prefix used when importing all the Scalar/Vector/Texture parameters of a material as attributes. The parameter's name then follow this prefix.
unreal_vertex_index point int2 Landscape Inputs Component vertex indices (indices of vertices within the grid - x,y)
lodX_screensize detailFloat Inputs Screensize value for LOD number X of the input mesh.
unreal_tag_* Prim string Inputs Prefix used to import the input object/actors tags as attributes.
mesh_socket_name point string Mesh Sockets Name of a mesh Socket imported from the input object.
mesh_socket_tag point string Mesh Sockets Tag of a mesh Socket imported from the input object.
mesh_socketX_pos detailfloat[3] Mesh Sockets Vector3 representing the location of the socket imported from the input object.
mesh_socketX_rot detailfloat[4] Mesh Sockets Quaternion representing the rotation of the socket imported from the input object.
mesh_socketX_scale detailfloat[3] Mesh Sockets Vector3 representing the scale of the socket imported from the input object.
mesh_socketX_name detailstring Mesh Sockets Name of the imported Mesh Socket.
mesh_socketX_tag detailstring Mesh Sockets Tags of the imported Mesh Socket.
unreal_data_table_* point string DataTables Prefix used when importing table via a Geometry input, each attribute will be named: unreal_data_table_COL::_NAME
unreal_datatable_rowstruct point string DataTables Attributes storing the type of data table (FDataTableRowStruct) for the input data table.

These attributes will be available in Houdini when using Inputs to marshall data from Unreal to Houdini.

These Standard Houdini Attributes will generally also be available: position (p), vertex colors (Cd, Alpha), normals (N) and UV sets (uv, uvX).

You can easily see these attributes and their values by debugging the internal Houdini Scene (File > Open Scene In Houdini) after initializing your asset's Inputs.

Groups

Some special group names have naming schemes which specify generation behavior when marshalling data from Houdini to Unreal. See the referenced topics for details on how each works.

Group Name Topic Description
socket_* Mesh Sockets Prefix used for adding sockets
collision_geo_* Complex Collisions Prefix used for collision geometry generation (invisible)
rendered_collision_geo_* Complex Collisions Prefix used for visible collision geometry generation
collision_geo_ucx_* Convex Collisions Prefix used for UCX collision geometry generation (invisible)
rendered_collision_geo_ucx_* Convex Collisions Prefix used for visible UCX collisions generation
collision_geo_simple_* Simple Collisions Prefix used for simple collision generation (invisible)
rendered_collision_geo_simple_* Simple Collisions Prefix used for rendered simple collision generation
lod_* Level of Details Prefix used for defining a Mesh's LOD level

Standard Houdini Attributes

Certain standard Houdini attributes are used when marshaling data between Houdini and Unreal.

Attribute Name Description
instance For object-level instancing, See Instancers
p position
rot rotation
scale scale
pscale uniform scale
Cd color
Alpha opacity
N normal
uv uv
uvX additionnal uv channels X from [2..8]
Note
Since Houdini 16.5, uv SOP nodes allow you to change the attribute name used for storing the uvs. These attributes are supported by the plug-in, and will be converted to uvs as long as the total number of uv attributes doesn't exceed the MAX_STATIC_TEXCOORDS value in Unreal (8 by default).
The transform of the Houdini Asset in Unreal is available on the asset's parent object transform in Houdini. For example, you could obtain the X Position by using the following python expression in your HDA: hou.parent().worldTransform().extractTranslates('trs').x()

Parameter Tags

Certain parameter tags can be used to control the behaviour fo the exposed parameter in Unreal:

Parameter Tag Name Associated Parameter Type Description
unreal_ref String When set to 1, the string parameter will be created as an AssetPicker in Unreal, that sets the string's value to the selected asset's path.
unreal_ref_class String When used with the "unreal_ref" tag, can be used to specify a class used to filter the asset picker.
hengine_noswap Float (tuple3) Indicates that the Vector3 Y and Z values should not be swapped in Unreal.
filechooser_mode File When set to read, the file parameter will be Read-only.

Generic UProperty Attributes

The aim of this system is to allow you to modify any available property in the objects and meshes generated by the plug-in by using generic attributes. As not all the properties in components generated by the plugin are available to be set through the details panel, this system allows you to preset these properties through the use of attributes.

To use it, add a primitive or detail attribute to your HDA starting with unreal_uproperty_, then append to it the name of the uproperty you wish to modify. Houdini Engine will then try to find the uproperty corresponding to the attribute in the generated mesh components, and set that property's value to the one you specified.

For example, if you want the static mesh component generated by your asset to have "Simulate Physics" property activated, add a detail attribute called "unreal_uproperty_SimulatePhysics", and set its value to 1. The static mesh generated by your asset will now have the "Simulate Physics" property enabled.

The uproperty attributes can be either float, integer or strings. The plug-in will always try to convert the attribute's value to the uproperty's type.

For example, the boolean uproperty "UseEmissiveForStaticLighting" can be set to true by using an int attribute set to 1, a float attribute set to 1.0 or a string attribute set to "true" if the attribute is named unreal_uproperty_UseEmissiveForStaticLighting.

Vector Uproperties, like "Center Of Mass Offset", can be set using an attribute of size 3.

Correspondance between Uproperties and the attributes are done using either the uproperty's name (the name of the uproperty in the source code) or it's display name without space (the name used in the details panel).

The "Center of Mass Offset" property can for example, be modified either by using an attribute called unreal_uproperty_centerofmassoffset (using the display name) or unreal_uproperty_comnudge (using the uproperty name).

String Tokens

Not all attribute values can be determined ahead of time and may need a little bit more contextual information (post-cook) in order to fully resolve the output values. For example, the default output name or path for a Static Mesh asset depends on whether the HDA is currently running in Temp mode or in Bake mode.

String Tokens
Token

Description

world

Path to the Map that contains the current persistent world.

hda_level Path to the Map that contains the level in which the current HDA has been placed.
hda_name The type name of the current HDA
hda_actor_name

The name of the current HDA actor

object_name

Name of the package we want to create. If null, we'll generate one from: ASSET_OBJ_GEO_PART_SPLIT (without PDG), or ASSET_TOPNET_TOPNODE_WORKITEMINDEX_PART_SPLIT (with PDG).

pdg_topnet_name For temporary PDG outputs: the TOP network name
pdg_topnode_name For temporary PDG outputs: the TOP node name
pdg_workitem_name For temporary PDG outputs: the TOP node name
guid

A GUID that identifies the owning Houdini Asset Component.

<tr>
    <td>`out`</td>
    <td>Contextual output folder, depending on whether the HDA is operating in Temp mode or Bake mode. If the HDA is in Temp mode, this value will match the value of the `temp` token. If the HDA is operating in Bake mode, this value will match the value of the `bake` token.</td>

<tr>
    <td>`temp`
    <td>Base folder that will be used when creating assets in Temp mode.

<tr>
    <td>`bake`
    <td>Base folder that will be used when creating assets in Bake mode.

<tr>
    <td>`bake`
    <td>Base folder that will be used when creating assets in Bake mode.

Examples

Bake to the HDA level

  • To bake actors to the same level that contains the HDA, as opposed to the persistent level, set unreal_level_path attribute to "{hda_level}".

Bake to a target level

  • To bake actors to a level (named MySubLevel) that is relative to the current persistent level, set unreal_level_path attribute to "{world}/MySubLevel".
  • To bake actors to a specific level (using an absolute path), set unreal_level_path attribute to the package path "/Game/Maps/MyTargetLevel".