Houdini 13.0 Nodes

interface version 1

Build separate objects (or SOPs) from SOP geometry primitive groups.

Given an input geometry with primitive groups in it, this operator can extract these groups by either creating a new Geometry or a new Object Merge SOP for each group.

  • Primitive groups extracted as GEO containers. (The default file box is processed with an Assemble SOP, resulting in 7 primitive groups. The extract tool created one GEO container for each group, in the OBJ network "objnet1". Some of the resulting objects are rotated manually afterwards.)

Note

  • Node creation, update and deletion is not automatic: they are performed when the user presses the Build/Update button.

  • The created objects and Object Merge SOPs have “live” procedural connection to the extract tool OP, so their geometry is automatically updated if the source geometry is changed. Manual update is required only if the number of primitive groups changes.

Notes

This operator behaves slightly differently than other SOPs (hence the “Tool” naming). It is more of a scene-management tool than a regular SOP.

It is intended mostly for the purpose of helping geometry import/export between other packages.

A few example scenarios:

  • A rigid body fracture simulation has to be exported, but the application at the other end requires a separate object for each fracture, and the only way it can be handled if these groups are present as OBJ nodes in Houdini.

    • Solution: a new OBJ node is created for each RBD primitive group (using our tool) in an OBJ network. These objects can now exported as required. (See the associated example scene on how to apply simulation results as transformation parameters on the OBJ level.)

  • Geometry received in an esoteric CAD format, which imports as one large polymesh with individual objects represented as primitive groups. For various purposes it is much more desirable to have these groups as separate OBJ nodes in Houdini.

(todo: finish these examples)

Warning

It is not recommended to use this tool for any procedural (e.g. regular Houdini) work as the way it works opposes the regular procedural workflow of Houdini.

Custom Object Merge SOPs

There is an option for explicitly specifying the operator type name of Object Merge SOPs. This allows using of “custom” Object Merge nodes (i.e. an user-defined digital asset, with the same parameters as a regular Object Merge.)

Such an user-defined asset can be useful for various geometry processing that can’t be performed before the pieces' extraction.

(A common example is creation/promotion of geometry detail attribute(s) with a different value for each resulting object: it cannot be done on the source geometry as all extracted pieces would inherit the same attribute value. To work around this, a new user-defined SOP can be created that performs the object merge, then the attribute creation.)

The following parameters are required on own Object Merge SOP variant(s) –

  • xformtype (“Transform” – for world/object space transformations)

  • objpath1 (“Object 1” – path to the geometry to merge)

  • group1 (“Group 1” – name of the primitive group to merge)

Tip

For a practical example, see the PrimGroups Extract Piece qL operator.

Parameters

Created OPs
Group Pattern

The groups the new objects should be built for.

Display Filter

Various 'display' modes to have visual feedback for the specified group pattern. (The Group Pattern results are also displayed as guide geometry.)

Output Path

Path where the new nodes should be created.

  • If this points to an Object network (or subnet), a Geometry obj node will be created for each primitive group. (The geometry will also contain an Object Merge node that fetches only the group primitives.)

  • If this points in to a Geometry obj node, only Object Merge nodes will be created for each primitive group.

Create Subnet

This will create an additional subnet at the Output Path to put the nodes into. On cleanup, this subnet will also be deleted.

Create Bundle

This will create a node bundle, and stores the operators for each piece. (On cleanup the bundle will be deleted.)

  • When creating Object nodes (e.g. /obj level), the bundle will contain Obj nodes (but not their contents).

  • When creating SOP (e.g. Object Merge) nodes, the bundle will contain these nodes.

Nodes Prefix

Name prefix for the nodes to be created.

Object Merge SOPs
Transform Type

The 'Transform' parameter settings for Object Merge nodes.

Explicit SOP Path

SOP Path to be set on Object Merge nodes. (By default it’s set to an expression that returns the input SOP of our PrimGroups Extract Tool SOP.)

If disabled, an opinputpath() expression will be used, referring to this node (i.e. it will automatically use the input of this node).

Relative Path

This flag indicates if a relative path should be set on the Object Merge nodes.

Custom OP Type

This parameter allows to manually specify the type name of Object Merge SOPs (for example to use an own Object Merge variant that does additional processing).

“Build/Update Objects”

Pressing this button will create the new Objects and/or SOPs. (Already existing nodes will also have their parameters updated, according to current node settings.)

“Cleanup (Delete) Objects”

This will delete all nodes created by this operator.

Delete All Subnet Contents on Updates

This is relevant only if a subnet is specified.

When doing any update (either build/update or cleanup), this will delete all nodes within the subnet (not just the primgroup-related ones). Use with care.

Batch Mode (Suppress Dialogs)

If enabled, no informative dialog boxes will be displayed. (This can be useful if the operation is part of a more complex ROP network, for example.)

Error message dialogs will not be suppressed.

Known Bugs

  • Creating Object Merge SOPs within SOP subnets is not currently supported (and results in a python error message).

To Do

  • Fix the SOP subnet bug

  • Finish help card

Release Notes

interface version 1

2014-11-28
  • Fixed another “doesn’t work as embedded asset” bug

  • Added support for bundles

2014-08-25
  • Added “Batch Mode” toggle

2014-08-14
  • Renamed “Rebuild” button (button_rebuild2 → button_rebuild).

2014-07-24
  • Added support for PrimGroup Extract Piece qL SOP.

2014-04-05
  • Newly created nodes now have a proper creator toolid user data

  • Object networks other than /obj are now supported

2013-07-23

Added support for creating “custom” Object Merge SOPs, by explicitly specifying the operator type name.

2013-07-07

Descriptive parm now displays correct output path (i.e. it includes target subnet, if enabled).

2013-05-11

Added “Create Subnet” parameter (some more thorough testing should follow to filter out possible bugs).

2013-05-11

Added descriptive parm (info display in network view).

2013-02-18

Now uses an opinputpath() expression in created Object Merge SOP nodes.

older versions

Version 0.1.0

Initial release.