Houdini Engine for Maya
 All Files Pages
Nodes

The Houdini Asset itself is encapsulated in the houdiniAsset node. Geometry inputs have their own wrapper nodes that convert maya geometry to houdini geometry and create corresponding nulls the engine side. Multiple maya shapes can be connected into an input by going though a houdiniInputMerge node

The plugin nodes used by the houdiniEngine plugin for Maya are:

The houdiniAsset node outputs both the information needed for Sync to create the output maya geometry shapes, and the maya geometry data to connect to those nodes once they are created.

houdiniAsset

The houdiniAsset has three kinds of attributes:

  • static definition and option attributes
  • parameters
  • outputs

All parameter related attributes are parented under the compound houdiniAttrParm parameter. See Parameters for more information. For more information about asset option and definition attributes, see Assets.

While most of the parameters are directly exposed as attributes, Attribute Editor geometry inputs are special. The string field for the input is a space delimited list of the minimal unique dag paths of input geometry shapes. This list can be edited directly, or the Set to Selection button can be used builds this list from the current selection list. Whichever way you chose to specify the inputs the actual relationship with the inputs is represented by and computed by the upstream input network - the AE fields are for input and visual feedback, there are no corresponding attributes on the node.

Maya_Nodes_AssetNode.png

That brings us to the output attributes. All of the output attributes are parented under the compound attribute "output" This include both attributes with descriptive information for what output nodes and attributes to create at Sync time, and attributes with live data to connect from the houdini asset to the output geometry. Ideally, the user does not need to manage these connections, and Syncing the asset will keep them up to date, however there are times when autoSyncOutputs can lose a connection. Some of the non-connectable outputs can also provide useful information when debugging the asset's behavior in Maya.

Attribute Usage Description
outputAssetTransform Connect For an object asset, its world transform TRS
outputAssetInstancers(Multi) for each of the asset's output instancers
...outputInstancerTransform Connect instancers transform TRS
...outputHoudiniNameAttribute Sync attribute containing name
...outputHoudiniInstanceAttribute attribute for instance matching
...outputInstancedObjectName Sync object to instance
...outputInstancerData Connect named per-instance data to drive the particle instancer
outputObjects(Multi) all the output geometries from the asset
...outputObjectTransform Connect object transform TRS
...outputObjectMetaData Connect houdini object id, for connecting to other assets
...outputObjectFluidFromAsset Connect connect to fluids playFromCache to indicate data is available
...outputIsInstanced Sync is the output instanced?
...outputVisiblility Sync is the output visible?
...outputObjectName Sync name for output transform and shape
...outputGeos(Multi) geos for this object
......outputGeoName Sync name for output xform and shape
......outputGeoIsTemplated Sync is this geo templated?
......outputGeoIsDisplayGeo Sync is this geo a display object?
......outputParts(Multi) parts of geos to be output as separate shapes, e.g. for split geos by group
.........outputPartName Sync name for output shape
.........outputPartHasMesh Sync is this a mesh? i.e. does the output have primitives and vertices
.........outputPartHasParticles Sync is this part a particle? i.e. does the output have only points
.........outputPartHasInstancer Sync is this part an instancer? i.e. is the output a packed prim
.........outputPartMesh
............outputPartMeshCurrentColorSet Sync current colour set, passed through from maya
............outputPartMeshCurrentUV Sync current UV set, passed through from maya
............outputPartMeshData Connect mesh geometry Data
.........outputPartParticle
............outputPartParticleCurrentTime Connect pass though from input time connection
............outputPartParticlePositions Connect particle positions only
............outputPartParticleArrayData Connect all per-particle attributes
.........outputPartCurves(Multi) Connect curve data for each curve in this part
.........outputPartCurvesIsBezier Sync Bezier or Nurbs
.........outputPartVolume output fluid
............outputPartVolumeName Sync name of the fluid grid being output
............outputPartVolumeGrid Connect fluid grid data (connects as cache data)
............outputPartVolumeRes Connect grid resolution, use autoresize if this is time dependent
............outputPartVolumeTransform Connect fluid transform (TRS)
.........outputPartInstancer(Multi) output particle instancer
............outputPartInstancerArrayData Connect all the named per-instance attributes
............outputPartInstancerParts Sync ids of objects to instance
............outputPartInstancerTransform Connect instancer transform (TRS)
.........outputPartMaterialIds mapping for groups to material nodes
.........outputPartExtraAttributes(Multi) includes attributes with information about how to reconstruct
maya mesh material assignment and other mesh properties
as well as purely user-defined attributes from the asset
............outputPartExtraAttributeName Sync attribute name
............outputPartExtraAttributeOwner Sync detail, point or primitive
............outputPartExtraAttributeDataType Sync data type
...........outputPartExtraAttributeTuple Sync attribute tuple size
............outputPartExtraAttributeData Connect generic attr for attribute data
.........outputPartGroups Multi
............outputPartGroupName Sync group name
............outputPartGroupType Sync component type
............outputPartGroupMembers Sync component id array
outputMaterials(Multi) new materials exported from the asset
...outputMaterialPath Sync material to connect
...outputMaterialName Sync material to create
...outputMaterialNodeId Sync match material to node
...outputMaterialAmbientColor Connect ambient colour
...outputMaterialDiffuseColor Connect diffuse color
...outputMaterialSpecularColor Connect specular color
...outputMaterialAlphaColor Connect alpha
...outputMaterialTexturePath Connect file texture path

houdiniInputGeometry

The houdiniInputGeometry node converts a single maya mesh or nParticle system into houdini geo.

There are 2 input attributes:

  • inputGeometry (generic)
  • inputTransform (matrix)

one output:

  • outputNodeId (houdini node id)

and some additional attributes for better control over meshes:

  • unlockNormals (do not pass custom normals in to the asset)
  • materialPerFace (set the shading group per face - used if geometry will be merged)
  • objectShadingGroup (used to track object shader assignment chages)
  • allowFacetSet (create groups for facetOnly sets if enabled - normally this type of set is ignored since it used internally by maya tools which could lead to conflicts)

The geometry and the world transform are connected separately. On the engine side, an input null is created for the geometry. The input does not need to be an actual mesh shape - almost all the information we use is from the mesh data, so you could connect the output mesh from a mesh history node directly.

Maya_Nodes_InputGeometry.png

The inputGeometry node is also used to connect several different geometry types. Since the inputGeometry attribute is generic, we rely on the type of the connected data to determine what kind of input object to create:

  • meshData: mesh
  • vectorArrayData: particle
  • curveData: curve (for backward compatability only)

For particle inputs, we expect the actual particleNode to be connected, on the positions attribute. We follow that connection back and extract particle data from the upstream node directly in order to build the input object.

Maya_Nodes_InputParticle.png

houdiniInputTransform

The inputTransform node is used to input Maya locators. When you select a locator, and do SetToSelection, it connects the locator's xform's worldMatrix to the inputTransform node, and creates proxy particle geometry to represent the transform of the locator. While the Attribute Editor UI only accepts locators, you can connect any transform's worldMatrix through an inputTransform.

Maya_Nodes_InputTransform.png

houdiniInputCurve

The curve input node is similar to the geometry input node but does not include a transform connection. Multiple curves can be connected to one inputCurve node.

Maya_Nodes_InputCurve.png

The curve input node can also be used to connect the curves from a maya hair hair system. When you select an nHair system with output curves, adding the hairSystems connects all the follicles outCurve attributes to the houdiniInputCurve. This is another case where a particular maya node type is not required for the input, only the specified data type.

Maya_Nodes_InputHair.png

houdiniInputMerge

If you select multiple maya objects to connect to a single input, we create one of the other 3 houdiniInput nodes for each object, and connect them all to a houdiniInputMerge node. This creates an ObjectMerge Sop on the engine side, to merge the input geos.

Maya_Nodes_InputMerge.png

Output Nodes

Syncing a houdiniAsset cooks the asset, and creates output maya geometry based on the cook results and asset options. Output dag objects are parented under the asset node itself, with the appropriate history, shading and transform connections where required. Output materials are connected on the outputMaterials attribute. Depending on the structure of your asset, empty output transforms may sometimes be created. Here's the output from a simple fluid sim.

Maya_Nodes_OutputFluid.png