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 |
---|---|---|---|---|
|
any |
int, float, string |
Generic UProperty Attributes |
Attribute prefix used to modify UProperties of the generated output objects/actors/components |
|
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 |
|
prim, detail |
string |
Landscapes |
Unreal path of a Material asset used for Landscape holes |
|
prim, detail |
string |
Material Instances |
Unreal path of a Material asset to create an instance of |
|
prim, detail |
string |
Material Instances |
Unreal path of a Material asset to create an instance of, to be used for Landscape holes |
|
prim, detail |
string |
Materials |
Unreal path of a PhysicalMaterial asset to be used as a Physcial Material on the output |
|
prim, detail |
string |
Materials |
Unreal path of a PhysicalMaterial asset to be used for Simple Unreal Collisions |
|
detail |
any |
Material Instances |
Attribute prefix used to modify generated material instances' parameters |
|
prim |
int |
Materials |
Mesh smoothing mask data |
|
any |
int |
Meshes |
Lightmap resolution for the mesh component |
|
any |
string |
Meshes |
Name to be used for the output. Default value for single landscape actor: |
|
any |
string |
Meshes |
(deprecated) use |
|
any |
int |
Meshes |
Enables Nanite on the generated meshes (UE5) |
|
any |
int |
Meshes |
The position precision attribute to be used for Nanite Meshes (UE5) |
|
any |
int |
Meshes |
The percent of triangles to keep for Nanite Meshes, zero by default (no triangles) (UE5) |
|
detail, prim |
floats |
Level of Details |
Screensize value for the LOD number X generated by the current assets |
|
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 |
|
any |
string |
Outputs |
Prefix used to specify Actor tags on the output object |
|
any |
string |
Outputs |
Prefix used to specify Component tags for all components on the output object |
|
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 |
|
prim |
int |
Outputs |
Curves that have this attribute set to 1 will output as SplineComponents |
|
prim |
int |
Outputs |
Indicates whether or not an output curve should be linear |
|
prim |
int |
Outputs |
Indicates whether or not an output curve should be closed |
|
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 ( |
|
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 |
|
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. |
|
point |
float |
Instancers |
Distance to search vertically when using |
|
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 |
|
detail, prim |
any |
Instancers |
(deprecated) use unreal_split_attr instead - Indicates that the generated instances should be split into |
|
prim |
float(4) |
Instancers |
(deprecated) Used with unreal_split_instances to specify a per-instance color to override the generated StaticMeshComponents vertex colors |
|
any |
int |
Instancers |
When set to 1, this attribute can be used to force the creation of HierarchicalInstancedStaticMeshComponent instead of |
|
any |
int |
Instancers |
When set to 1, this attribute can be used to force the creation of an instancer component ( |
|
any |
int |
Instancers |
Indicates the number of custom floats to be used for an instancer’s Per Instance Custom Data |
|
any |
float |
Instancers |
Per-Instance Custom float data, where X is the zero-based index of the custom data |
|
any |
int |
Landscapes |
Indicates the type of landscapes actor that should be created for tiled landscape, either individual landscape actors |
|
any |
int |
Landscapes |
(deprecated) use unreal_landscape_tile_actor_type instead. Default Value: “{temp}”. (Supports String Tokens) |
|
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 |
|
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 |
|
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 |
|
any |
int |
Landscapes |
Allows the layer’s data to be written to a locked Landscape Edit Layer |
|
any |
int |
Landscapes |
Locks the Edit Layer after writing |
|
any |
int |
Landscapes |
Specifies section size for landscapes. unreal_landscape_sections_per_component must also be set |
|
any |
int |
Landscapes |
Specifies sections per component for landscapes. unreal_landscape_section_size must also be set |
|
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 |
|
prim, detail |
string |
Landscapes |
Names of heightfields masks, separated by spaces, that should be created a non-weight blended landscape layers |
|
prim |
string |
Landscapes |
Unreal path of an existing LandscapeLayerInfo object to be used when converting a given heightfield mask to a landscape layer |
|
prim, detail |
int |
Landscapes |
Set the 'NoWeightBlend' property on the corresponding paint layer’s LayerInfo object in Unreal to unchecked |
|
any |
int |
Landscapes |
Set landscape output mode to Generate Landscape |
|
any |
string |
Landscapes |
Name of target edit layer |
|
any |
string |
Landscapes |
(deprecated) use |
|
any |
string |
Landscapes |
Type of layer being output. |
|
any |
int |
Landscapes |
Whether to clear the whole editor layer before drawing the output heightfield (Default: |
|
any |
string |
Landscapes |
After which layer on the target landscape this output layer should be placed |
|
prim, detail |
int |
Landscapes |
This attribute can be set on heightfield masks to set the Subtractive Blend property to unchecked |
|
prim |
int |
Landscapes |
This attribute controls the world partition grid size when creating landscapes. Only apply in levels that have world partition enabled |
|
prim |
int2 |
Landscapes |
Used to indicate the total landscape size when importing a single tile |
|
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 |
|
prim, detail |
string |
Baking Outputs |
Unreal path of a Folder used to override the default Bake folder for this asset. Default value: |
|
any |
string |
Baking Outputs |
(deprecated) use |
|
any |
string |
Baking Outputs |
Unreal path to an Actor that will be created/used when baking the given output |
|
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 |
|
any |
string |
Baking Outputs |
Unreal path to a world outliner folder that will be created/used when baking the given output |
|
point |
string |
Mesh Sockets |
Name of a mesh Socket generated by Point Groups |
|
point |
string |
Mesh Sockets |
Tag of a mesh Socket generated by Point Groups |
|
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 |
|
detail |
float3 |
Mesh Sockets |
Vector3 representing a Mesh Socket’s location |
|
detail |
float4 |
Mesh Sockets |
Quaternion used for a Mesh Socket’s rotation |
|
detail |
float3 |
Mesh Sockets |
Vector3 representing a Mesh Socket’s Scale |
|
detail |
string |
Mesh Sockets |
Name of a generated Mesh Socket |
|
detail |
string |
Mesh Sockets |
Tag of a generated Mesh Socket |
|
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 |
---|---|---|---|---|
|
prim |
string |
Inputs |
Path to the input object |
|
prim |
string |
Inputs |
Path to the level that contained the input data |
|
prim |
string |
Inputs |
Path to the selected input actor |
|
prim |
string |
Inputs |
Unreal path of the mesh uasset plugged in the input |
|
prim |
string |
Inputs |
Source path of the uasset plugged into the input (file path to the source .fbx for example) |
|
prim |
string |
Inputs |
Path to a material asset used on the input |
|
prim |
string |
Inputs |
Path to a material asset used as hole material on the input landscape |
|
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 |
|
prim |
string |
Materials |
Unreal path of a PhysicalMaterial asset taken from simple collisions |
|
point |
int2 |
Landscape Inputs |
Component vertex indices (indices of vertices within the grid - x,y) |
|
detail |
Float |
Inputs |
Screensize value for LOD number X of the input mesh |
|
prim |
string |
Inputs |
Prefix used to import the input object/actors tags as attributes |
|
point |
string |
Mesh Sockets |
Name of a mesh Socket imported from the input object |
|
point |
int |
Mesh Sockets |
Tag of a mesh Socket imported from the input object |
|
float3 |
int |
Mesh Sockets |
Vector3 representing the location of the socket imported from the input object |
|
float4 |
string |
Mesh Sockets |
Quaternion representing the rotation of the socket imported from the input object |
|
float3 |
int |
Mesh Sockets |
Vector3 representing the scale of the socket imported from the input object |
|
detail |
string |
Mesh Sockets |
Name of the imported Mesh Socket |
|
detail |
string |
Mesh Sockets |
Tags of the imported Mesh Socket |
|
point |
string |
Inputs |
Prefix used when importing table via a Geometry input, each attribute will be named: |
|
point |
string |
Inputs |
Attributes storing the type of data table ( |
|
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 |
---|---|---|
|
Mesh Sockets |
Prefix used for adding sockets |
|
Complex Collisions |
Prefix used for convex collider geometry generation (invisible) |
|
Complex Collisions |
Prefix used for visible collision geometry generation |
|
Convex Collisions |
Prefix used for UCX collision geometry generation (invisible) |
|
Convex Collisions |
Prefix used for visible UCX collisions generation |
|
Simple Collisions |
Prefix used for simple collision generation (invisible) |
|
Simple Collisions |
Prefix used for rendered simple collision generation |
|
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 |
---|---|
|
For object-level instancing, See Instancers |
|
position |
|
rotation |
|
scale |
|
uniform scale |
|
color |
|
opacity |
|
normal |
|
uv |
|
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 ¶
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:
-
Add a primitigve or detail attribute to your HDA that starts with
unreal_uproperty_
-
Append the name of the uproperty you want to modify.
-
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 |
---|---|
|
Path to the Map that contains the current persistent world |
|
Path to the Map that contains the level in which the current HDA has been placed |
|
The type name of the current HDA |
|
The name of the current HDA actor |
|
Name of the package we want to create. If null, we’ll generate one from: |
|
For temporary PDG outputs: the TOP network name |
|
For temporary PDG outputs: the TOP node name |
|
For temporary PDG outputs: the TOP node name |
|
A GUID that identifies the owning Houdini Asset Component |
|
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 |
|
Base folder that will be used when creating assets in Temp mode |
|
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.