On this page |
|
Houdini Engine for Unity plug-in brings Houdini’s powerful and flexible procedural workflow into Unity through Houdini Digital Assets (.hda). A Houdini artist can create a packaged digital assets with a network of nodes, inputs, and promoted paramteers. These can then be passed onto Unity for an artist to make changes without using Houdini.
General information: ¶
What are Houdini Digital Assets (HDAs) ¶
Houdini uses a node-based workflow and you build scenes using a network of nodes. These networks can be tools, assets, landscapes, geometry, curves, skeletal mesh, etc. From there, you can package these network of nodes into a Houdini Digital Asset known as an HDA.
See Introduction to digital assets for more information.
Plug-in session types ¶
This section briefly explains the differences between Session, Session Sync, and Node Sync and some common use cases for each.
Houdini Engine Session ¶
Houdini Engine Session allows you to import an HDA into Unity and edit its inputs and parameters without Houdini. The packaged HDA could be a tool, procedural workflow, or assets using Houdini’s nodes and networks. The exposed inputs and parameters can then be further edited using Houdini asset details panel in Unity. See Create a Session for more information.
Houdini Engine Session use case ¶
Houdini Engine Session can be useful for Technical Artists with a team of artists who may not be familiar with Houdini. The Technical Artist can create a tool or procedural workflow with a set inputs and parameters that are exposed in the packaged HDA. These settings are then available to the artist in Unity through the Houdini Engine details panel.
Session Sync ¶
Session Sync supports all the features of Houdini Engine Session with a few additions. When you launch Session Sync, it opens a new Houdini that is synced between the Unity and Houdini. You can sync changes in real-time to Houdini to allow for quick iteration and troubleshooting. See Using Session Sync for more information.
Some additional benefits include:
-
Houdini changes automatically update in Unity
-
real-time feedback when building assets in Houdini
-
synchronize viewports in Unity and Houdini
-
send HDA changes between Houdini and Unity in real-time.
Session Sync use cases ¶
One Session Sync use case is to take parts of your level such as assets to create new content like geometry or simulation. An example is you kit bash a building in Unity, you can then bring them into Houdini to build interiors, add building parts, re-UV it. From there, you can see the results in Unity or export it in Houdini as a separate asset.
Another use case is to prototype tools with better context. You have an ivy tool and try to scatter it around your level in Unity. The iterations to the tool would require constant back and forth to get the desired results. Instead, you can send the assets from Unity into Houdini to iterate the tool while still retaining the context of the assets.
Node Sync ¶
Node Sync allows you transfer assets between Unity and Houdini without a dedicated HDA. You can send any type of asset that’s supported by HDA inputs and fetech any asset types that can be outputted by the plugin. See Inputs and Outputs for more information on supported types.
Node Sync use case ¶
One Node Sync use case is to test parts of your tool or node network that’s work in progress instead of packaging it as an HDA. An example is you have a building asset in Houdini, you can fetch the node in Unity to check you it works with materials, curves, and the geometry are the right dimensions.
This also saves time for tools as they become larger and Node Sync doesn’t require you to constantly rebuild the HDA.
Features ¶
Supported ¶
-
Loading HDA files (.hda,.otl,.otllc,.hdalc,.otlnc,.hdanc).
-
Most of the SOPs that generate polygonal geometry.
-
All Parameter types including ramps (see Parameters)
-
Houdini Materials
-
Curve SOP and curve editing (see Curves)
-
Input nodes and asset connections (Unity mesh, HDA, terrain) (see Inputs)
-
Object instancing (see Object Instancers)
-
Packed primitives (see Packed Primitives)
-
Roundtrip support of material assignments and mesh names for input meshes
-
Collision geometry generation via attribute (box, sphere, mesh)
-
Supports more than 65K triangles per mesh on Unity 2017.3+
-
Houdini Engine SessionSync
-
Bake as new standalone GameObject, and/or new prefab
-
Bake Update existing standalone GameObject, and/or existing prefab
-
Load, cook, and bake callbacks
-
Connecting existing Unity materials and Substance materials via material attribute
-
Connecting existing Unity script via attribute
-
Play mode changes will be reverted after returning to Editor mode
-
Undo in Unity will revert parameter changes and recook automatically
-
Attribute Painting and Editing (for editable nodes) (see Painting and Editing)
-
Heightfields will be converted to Unity Terrain (see Terrain)
-
Transformer handles (xform) (see Handles)
-
LOD Groups (see Level of Detail)
-
Custom input script hooks (see Custom Input Scripts)
Deprecated ¶
The following is not supported:
-
Animation Baking.
-
Option to Split geos by group (only collision and LOD groups are supported).
-
Splitting points by vertex attributes (vertices are split by default, but optionally can use points via HDA Options).
-
Play mode per-frame cooking.
Limitations ¶
The following are currently known limitations:
-
On system locales that use commas for decimals instead of dots, such as Spanish (es-ES), curves and other assets that use strings for floating point numbers will have parsing issues when using .Net 4.6+. To work around this, the plug-in sets the System.Threading.Thread.CurrentThread.CurrentCulture as CultureInfo.InvariantCulture. This can be disabled in Plugin Settings.
-
In Unity, after creating / loading an asset, immediately invoking Undo will not remove it from the scene.
-
Duplicating / Copy & Pasting an instantiated asset will not work via Unity’s built-in mechanism. Instead use the Duplicate Asset button on the HDA itself.
-
Deleting a generated asset GameObject that has been saved in a Scene will not remove any generated texture files in Unity project.
-
Support for specifying Substance materials via attributes is not yet supported.
Inputs ¶
Input refers to sending data from Unity to a Houdini Digital Asset (HDA). When you make changes to the input, it’s automatically pushed to the HDA and causes the output to be re-evaluated and recooked. See Inputs for more information.
Houdini Engine for Unity supports the following input types:
The following input data are currently supported:
-
HDA (as node connection)
-
Unity Mesh
-
Curve
-
Spline (for Unity versions 2022.1 or newer)
-
Terrain (see Terrain Input)
-
Bounding Box
-
Tilemap
Outputs ¶
Output refers to sending data from a Houdini Digital Asset (HDA) to Unity. See Outputs for more information.
Houdini Engine for Unity currently generates the following types of geometries from Houdini Digital Assets:
-
Unity Mesh
-
Instanced Unity Mesh
Parameters ¶
Parameters are the options in a node. These are important in HDAs to promote parameters and customize which parameters you want exposed for the end user. These parameters then appear as options in Unity to modify.
The following parameters are supported:
-
integers
-
floats
-
strings
-
buttons
-
colors
-
files
-
folders
-
labels
-
multiparams
-
ramps
-
separators
-
toggles
-
operator path
-
menus
Recook and rebuild assets ¶
When you import HDAs into Unity, you can see these parameters in the Houdini Engine details panel. The parameters to rebuild, cook, or bake an asset controls the global behavior of your HDAs.
Recook assets ¶
When you recook an asset, the HDA processes and updates whether you made changes or not in the parameters. The term cooking is the same concept as in Houdini. The outputs of the HDA are recalculated when the cook is triggered. To see changes to your inputs and parameters within Unity, you have to recook the asset.
Rebuild assets ¶
When you rebuild, the asset gets recooked and also reimports the HDA. This is useful when you have made changes in Houdini to your HDA and you want the new inputs or parameters to appear.