Houdini 13.0 Nodes

interface version 2

Processes geometry to be more compatible with other 3d/CG applications (such as Maya).

This operator modifies geometry so it would contain only components that are accepted (and recognized) by other 3d applications, such as Maya.

Parameters

General Settings
Convert All to Polygons

Convert all input geometry to polygons. (Can be useful to turn “exotics”, such as packed prims or NURBS into regular polygons.)

Fix Particle Fluid Surface SOP results (experimental)

An experimental method of fixing Particle Fluid Surface SOP results. With the new VDB meshing modes, this might be considered obsolete.

Decouple Particle Age/Lifespan Attributes

Convert the single particle attribute to two distinct attributes (so they can be properly exported.)

Age / Lifespan Attribute

Names of the decoupled attributes.

Convert Per-Point Instance Attributes to Euler

This converts regular Houdini instancing attributes (rotations) to an Euler representation, required by certain particle instancers.

This option is mostly useful for particle/PartIO export (for geometry instancing purposes).

XYZ Rotate Attrib

Name of the new attribute (per-point, vector) that stores the resulting Euler XYZ rotation angles.

XYZ Scale Attrib

Name of the new attribute (per-point, vector) that stores the scale values for each local axis.

Do Geometry Cleanup

Same functionality as a Clean SOP (see its documentation for details).

Note

The Remove Attribs option will not remove any attributes created by the “Decouple Age/Lifespan” or “Convert Instance Attribs to Euler” (see above).

Add 'Fake' Geo

Adds a single, very small triangular polygon to the geometry. This allows Maya to detect the geometry type (as polymesh), even if the geometry container is empty on the current frame.

Always Add

The extra triangle will always be added.

Only for Empty Geometry

The extra triangle will only be added if the point or primitive count is zero. (Based on the npoints and nprims fields from Geometry Info.)

Note

The extra triangle will always be added as the first polygon in the geometry (with the 0-th primitive index; point indices are 0-2).

Centroid

The 3d location of the extra triangle. (Although it should be of no consequence, having it always at the origin might affect things like bounding box calculations, hence this option.)

get

This button will copy the bounding box center values of the current geometry as centroid. (First go to a frame where there’s geometry present.)

Uses the field values from the Geometry Info tab.

Jitter Seed

If enabled, the small extra triangle will be point-jittered on each frame (with the specified seed). This can be used to force deformation history for the alembic file in Maya.

Geometry Info

This panel provides information about the input geometry for the current frame.

SOP Path (Input, Output)

Paths to the geometry to get the information for. The expressions point to the connected input SOP, and the last SOP inside the asset.

Show for Output Geometry

This switch toggles which geometry information should be displayed (input geometry, or the resulting output of all the pre-export processing).

Editable Fields

Enabling this allows all the info fields to be edited (and a bit more readable, visually). No editing will affect the actual geometry, obviously.

BB ...

Bounding box size, center and dimensions information.

Geometry (Alembic)

Geometry export mode. Tuned towards geometry preferred by Maya, through the Alembic format. (See Maya Notes below on preferred attribute types, etc.)

Velocity from

Convert attribute to per-face vertex class (with the new name of velocity). The original attribute class and name can be specified (usually the defaults suffice).

Tip

In Maya, this will appear as a vertex color set on the geometry, called velocity.

UV from

Convert attribute to per-face vertex class. The original attribute class and name can be specified.

Make sure to switch to vertex if UVs are per-vertex.

Color from

Convert attribute to per-face vertex class. The original attribute class and name can be specified.

Make sure to set up the proper class for Cd.

Auto-Detect Attribute Classes

This detects the class (point, vertex, etc.) of each of the above attributes, and sets the UI menu parameters accordingly.

Triangulate Geometry

If enabled, all polygonal geometry will be triangulated. (Read “Maya Notes / Topology” below for details.)

Recommended for procedurally-generated geometry with “irregular” features (e.g. non-planar polygons, etc), such as meshed fluids.

Warning

This can have a considerable impact on performance when exporting large amounts of geometry over many frames.

Consider passing a poly soup geometry, if possible. (Poly soups can be 10-15x faster to triangulate.)

Convert to Poly Soup

Converts the geometry to poly soup format right before the triangulation.

Reference Frame

The reference frame number for triangulation topology. The resulting topology will always be equivalent of this frame’s (i.e. there won’t be any “flipping” triangle edges over an animation).

Particle (PartIO)

Particle (or point cloud) export mode. (mostly about renaming important attribs to be compatible)

Rename (Velocity, ID, ...)

...

Houdini Notes

Triangulation Performance

Triangulation can be notoriously slow on large amounts of regular polygons. Using poly soups however can give as much as 10-15x (!) speedups, so using poly soups is highly recommended.

It is best to delete all primitive attributes and primitive groups before converting to poly soups.

Maya Notes

Geometry Topology

The Maya API can create polygons with arbitrary point counts, but it’s very sensitive to invalid (e.g. non-planar) polygons and it simply refuses to create them. (This is the opposite of Houdini’s tolerant behaviour.) Even though an alembic file can store such polygons, the Maya API won’t be able to import them, ending up with inconsistent topology. Attribute import will also fail.

If a message is displayed in Maya about mismatching attribute array sizes and vertex counts, usually it’s invalid-polygon related.

Recommended: clean up and triangulate the geometry.

Geometry Attributes

Maya is completely missing out on general-purpose geometry attributes – the only alternatives are Maya vertex colors (or “color sets”). This is a per-face-vertex attribute class (the equivalent of "vertex" in Houdini). Multiple color sets per geometry is supported.

The only way of exporting any attributes to Maya is to have them as a color type (RGB or RGBA), and promote them as vertex in Houdini. A special import flag might also be needed when importing in Maya (“-rcs”, see below).

Recommended:

  • Promote all desired attributes to vertex (called per-face-vertex in Maya)

  • In Maya, use the -rcs or -recreateColorSets flag of the AbcImport MEL command (this forces all attributes to be imported as vertex colors)

Changing Topology, with Empty Geometry

Maya can get confused when the exported geometry has no geometry at all at certain frames (e.g. first and/or last frames of a fluid simulation), as it can’t detect the geometry type properly.

Recommended: Use the Add 'Fake' Geo option. This adds a single triangle to the geometry. (This extra polygon will always be the first one in the primitive list [index 0], so deleting it in Maya with History enabled should work properly.)

Changing Topology, Velocity and Motion Blur

Obviously Maya cannot calculate motion blur for geometry that has a different topology for each frame.

This node supports exporting the v attribute as a per-face-vertex class, called velocity, which will appear as a vertex color set of the same name within Maya. (All above notes on attributes also apply.)

Note

Unfortunately it doesn’t mean that this will be utilized by the renderer on the Maya end. This is a Maya technical issue to be resolved (according to one’s pipeline, etc).

Particle Attributes

Maya only supports float and vector (3 floats) data types for per-particle attributes (even the particle IDs are stored as floats).

Recommended: In case of any problems, try converting any other attribute data types (e.g. int) to a Maya-supported type.

Particle Instancing

The Maya particle instancer might require instance orientations to be specified using an XYZ (Euler) rotation attribute (3 floats, rotation angles in degrees for each axis). Use the Convert Per-Point Instance Attribs to Euler option.

PartIO Notes

PartIO is a framework for reading various geometry file sequences into a host application as particles. PartIO has no preferred file format – it can use any geometry file format to cache particles.

In particular, the Maya plug-in allows to read .bhclassic geometry sequences as particle systems (even Maya’s particle instancer works with it).

Links:

  • Walt Disney website – http://www.disneyanimation.com/technology/partio.html

  • GitHub repository – https://github.com/wdas/partio/

Known Issues

...

To Do

  • option for “artifical” geometry animation by adding very small jitter to a single point

  • mark/warning about NaN geometry and/or topology changes between input and after-preprocessed stuff

  • attribute notes (color, velocity)

  • abc export attributes: v/uv/Cd “from” class auto-detect (button, see above)

  • triangulation notes (maya might not be able to read some non-triangulated geometry)

  • find an alternative, faster way of triangulation for non-changing topology (current one is slow for heavy geo)

  • partio: keep points only

Release Notes

interface version 2

2014-10-09
  • Per-point instance euler data type is now proper vector (xyz components)

2014-07-23
  • Added “Per-Point Instance Attribs to Euler” options

  • Added “Triangulate as Poly Soup” option

  • “Remove NANs” is now disabled by default (as it is a performance hit)

  • Added toggle between input/output geometry in Geometry Info tab

2014-02-13
  • Added “Jitter Fake Geo” option

2014-01-30

Added...

  • Geometry Info tab

  • Add 'Fake' Geo option

2014-01-22
  • First version of i2

  • Help card

interface version 1

dunno-when
  • dunno-what