Houdini 20.0 Unreal

Attributes and Groups

On this page

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

See the referenced topics for more details.

Note

Although an attribute indicates a preferred type, the plugin will try to convert an attribute that has an unexpected type. For example, the type expected an int but found a float attribute. The plugin logs a warning when an attribute’s value is converted to its expected type.

Note

When using packed primitives, either for instancing or creating multiple mesh outputs, it’s important to pay attention to the location of attributes. Attributes create before packing will be applied to the generated mesh, whereas attributes created after packing will be applied to the generated component/actor.

Houdini to Unreal

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

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

Attribute Name

Owner

Type

Topic

Description

unreal_uproperty_*

any

int, float, string

Generic UProperty Attributes

Attribute prefix used to modify UProperties of the generated output objects/actors/components

unreal_material

any

string

Materials

Unreal path of a Material asset to apply to an output. You can specify the material slot by prefixing the path with the slot number in square brackets: /unreal/0.htmlpath/to/mat

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_simple_physical_material

prim, detail

string

Materials

Unreal path of a PhysicalMaterial asset to be used for Simple Unreal Collisions

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_lightmap_resolution

any

int

Meshes

Lightmap resolution for the mesh component

unreal_output_name

any

string

Meshes

Name to be used for the output. Default value for single landscape actor: Landscape

unreal_generated_mesh_name

any

string

Meshes

(deprecated) use unreal_output_name instead

unreal_nanite_enabled

any

int

Meshes

Enables Nanite on the generated meshes (UE5)

unreal_nanite_position_precision

any

int

Meshes

The position precision attribute to be used for Nanite Meshes (UE5)

unreal_nanite_percent_triangles

any

int

Meshes

The percent of triangles to keep for Nanite Meshes, zero by default (no triangles) (UE5)

lodX_screensize*

detail, prim

floats

Level of Details

Screensize value for the LOD number X generated by the current assets

unreal_uproperty_tag_*

any

string

Outputs

Prefix used to specify tags on the output object. This will apply the tags on the actor and all components related to this output object

unreal_uproperty_actorTag_*

any

string

Outputs

Prefix used to specify Actor tags on the output object

unreal_uproperty_componentTag_*

any

string

Outputs

Prefix used to specify Component tags for all components on the output object

unreal_uproperty_mainComponentTag_*

any

string

Outputs

Prefix used to specify Component tags on only on the main component of the output object. If the output object is an actor, thse tags will only be applied on the root component

unreal_output_curve

prim

int

Outputs

Curves that have this attribute set to 1 will output as SplineComponents

unreal_output_curve_linear

prim

int

Outputs

Indicates whether or not an output curve should be linear

unreal_output_curve_closed

prim

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_foliage_attachment_type

point

int

Instancers

Determines whether foliage should to attach to other objects in the level - 1 for yes, 0 for no, a value of 2 attaches to landscapes only.

unreal_foliage_attachment_distance

point

float

Instancers

Distance to search vertically when using unreal_foliage_attachment_type. Default is 1000.

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_split_instances

detail, prim

any

Instancers

(deprecated) use unreal_split_attr instead - Indicates that the generated instances should be split into StaticMeshComponents instead of one InstancedStaticMeshComponent

unreal_instance_color

prim

float(4)

Instancers

(deprecated) Used with unreal_split_instances to specify a per-instance color to override the generated StaticMeshComponents vertex colors

unreal_hierarchical_instancer

any

int

Instancers

When set to 1, this attribute can be used to force the creation of HierarchicalInstancedStaticMeshComponent instead of InstancedStaticMeshComponents. This will also force the creation of a HierarchicalInstancedStaticMeshComponent even in cases where the instance count is only 1

unreal_force_instancer

any

int

Instancers

When set to 1, this attribute can be used to force the creation of an instancer component (InstancedStaticMeshComponent or HierarchicalInstancedStaticMeshComponent, the latter based on having LODs or unreal_hierarichal_instancer == 1) even if there is only one instance of a static mesh

unreal_num_custom_floats

any

int

Instancers

Indicates the number of custom floats to be used for an instancer’s Per Instance Custom Data

unreal_per_instance_custom_dataX

any

float

Instancers

Per-Instance Custom float data, where X is the zero-based index of the custom data

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_landscape_write_locked_layer

any

int

Landscapes

Allows the layer’s data to be written to a locked Landscape Edit Layer

unreal_landscape_lock_layer

any

int

Landscapes

Locks the Edit Layer after writing

unreal_landscape_section_size

any

int

Landscapes

Specifies section size for landscapes. unreal_landscape_sections_per_component must also be set

unreal_landscape_sections_per_component

any

int

Landscapes

Specifies sections per component for landscapes. unreal_landscape_section_size must also be set

unreal_unit_landscape_layer

prim, detail

int

Landscapes

If set to 1, indicates that a heightfield mask’s value should be considered in /unreal/0, 1.html 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_landscape_layer_noweightblend

prim, detail

int

Landscapes

Set the 'NoWeightBlend' property on the corresponding paint layer’s LayerInfo object in Unreal to unchecked 0 or checked 1. This attribute takes precedence over unreal_landscape_layer_nonweightblended

unreal_landscape_output_mode

any

int

Landscapes

Set landscape output mode to Generate Landscape 0 or Modify Edit Layer 1

unreal_landscape_editlayer_name

any

string

Landscapes

Name of target edit layer

unreal_landscape_editlayer_target

any

string

Landscapes

(deprecated) use unreal_output_name instead

unreal_landscape_editlayer_type

any

string

Landscapes

Type of layer being output. 0 - Base layer, 1 - Additive layer. (Default: 0).

unreal_landscape_editlayer_clear

any

int

Landscapes

Whether to clear the whole editor layer before drawing the output heightfield (Default: 0).

unreal_landscape_editlayer_after

any

string

Landscapes

After which layer on the target landscape this output layer should be placed

unreal_landscape_editlayer_subtractive

prim, detail

int

Landscapes

This attribute can be set on heightfield masks to set the Subtractive Blend property to unchecked 0 or checked 1 on paint layers in Unreal

unreal_landscape_partition_grid_size

prim

int

Landscapes

This attribute controls the world partition grid size when creating landscapes. Only apply in levels that have world partition enabled

unreal_landscape_landscape_size

prim

int2

Landscapes

Used to indicate the total landscape size when importing a single tile

unreal_level_path

any

string

Baking Outputs

Determines the level to which outputs are baked when baking to actors / foliage. Meshes, instancers, foliage and landscapes are baked to the specified level. This can be especially useful for world composition, baking landscape tiles and their associated instancers or foliage to a separate level per tile. This attribute is also available on inputs (where it is set to the path of the level where the input originated). The default value is ., which will generate geometry in the the current persistent world, paths starting with a / are considered absolute, otherwise paths are relative to the current persistent world’s Map. (supports String Tokens).

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_bake_name

any

string

Baking Outputs

(deprecated) use unreal_output_name instead

unreal_bake_actor

any

string

Baking Outputs

Unreal path to an Actor that will be created/used when baking the given output

unreal_bake_actor_class

any

string

Baking Outputs

Unreal path, or classname, of the Actor class to use when spawning the bake actor. If missing/blank then Actor is used

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

float3

Mesh Sockets

Vector3 representing a Mesh Socket’s location

mesh_socketX_rot

detail

float4

Mesh Sockets

Quaternion used for a Mesh Socket’s rotation

mesh_socketX_scale

detail

float3

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

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_simple_physical_material

prim

string

Materials

Unreal path of a PhysicalMaterial asset taken from simple collisions

unreal_vertex_index

point

int2

Landscape Inputs

Component vertex indices (indices of vertices within the grid - x,y)

lodX_screensize

detail

Float

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

int

Mesh Sockets

Tag of a mesh Socket imported from the input object

mesh_socketX_pos

float3

int

Mesh Sockets

Vector3 representing the location of the socket imported from the input object

mesh_socketX_rot

float4

string

Mesh Sockets

Quaternion representing the rotation of the socket imported from the input object

mesh_socketX_scale

float3

int

Mesh Sockets

Vector3 representing the scale of the socket imported from the input object

mesh_socketX_name

detail

string

Mesh Sockets

Name of the imported Mesh Socket

mesh_socketX_tag

detail

string

Mesh Sockets

Tags of the imported Mesh Socket

unreal_data_table_*

point

string

Inputs

Prefix used when importing table via a Geometry input, each attribute will be named: unreal_data_table_COL::_NAME

unreal_datatable_rowstruct

point

string

Inputs

Attributes storing the type of data table (FDataTableRowStruct) for the input data table.

unreal_level_instance_name

point

string

Inputs

Name of the level being instanced in a level instance actor.

These attributes are available in Houdini when using Input Types

These Standhard Houdini Attributes are generally available: position p, vertex colorsCd, Alpha, normals N* and UV setsuv, *uvX.

You can 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 convex collider 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

default_dir

File

Default directory used when opening the Browse dialog

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. Since you can’t set all the properties in the components generated by the plugin, this system allows you to preset these properties using attributes.

To set these properties:

  1. Add a primitigve or detail attribute to your HDA that starts with unreal_uproperty_

  2. Append the name of the uproperty you want to modify.

  3. Houdini Engine then tries to find the uproperty that corresponds to the attribute in the generated mesh components and set its property’s value to your settings.

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 now has the Simulate Physics property enabled.

The uproperty attributes can be a 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).

Generic Property attributes can also be used to modify properties of the Houdini Asset Component itself. This allows you to preset some of the Houdini Asset Component’s default properties, like the Cook Triggers, Auto-Bake, Use Output Nodes etc… In order to be applied to Houdini Asset Component itself, these attributes must be set on the details.

ie: i@unreal_uproperty_bUseOutputNodes = 1;

If you want to get a list of property attributes for a given object type/class, you can use the Houdini.DumpGenericAttribute Log Command. This will list all of the generic property attribute that the plugin sees for the given type, listing its attribute name, unreal name and display name, as well as its Unreal and Houdini types.

To use it, simply open the “Output Log” panel, and in the “Cmd” box, type “Houdini.DumpGenericAttribute XXXX”, replacing XXX with the Class you want the list for.

ie: Houdini.DumpGenericAttribute StaticMesh

String Tokens

Not all attribute values can be determined ahead of time and may need more contextual information (post-cook) 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.

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

out

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

temp

Base folder that will be used when creating assets in Temp mode

bake

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.

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.