On this page

Workflow improvements

  • New expansion states on the Solaris Scene Graph Tree let you precisely control whether primitives should be displayed as bounding boxes or as “full” geometry.

  • Integration of some Adobe USD file format plugins in Solaris.

    • FBX, glTF and SBSAR files can opened directly in LOPs using sublayer or reference nodes.

    • You can also export to FBX and glTF via the USD ROP.

  • LOPs with render-specific tabs now have a button to reload the tabs. You can do that for a node when you open its Initialize Parameters dropdown menu and choose Rebuild Render-Specific Parameters. One node, where you can find this feature, is the Render Var LOP.

    When you open Houdini’s top-level Render menu and choose Rebuild All Render-Specific LOP Parameters, you can do that for the entire HIP file.

  • Solaris now supports collections based on USD path expressions.

  • The Render Gallery now has a button that lets you import external images.

  • You can author colorManagementSystem and colorConfiguration metadata directly to a USD stage. The Configure Layer LOP provides appropriate parameters. You can also create the metadata on the Configure Stage LOP through a stage variable.

  • Deactivated lights are no longer visible in the Light Linker LOP, because you can’t turn on those light in the linker.

  • The “Asset Gallery” is now called “Asset Catalog”. Existing references inside HIP files to $HH/assetGallery.db" are automatically redirected to $HH/assetCatalog.db. This makes it possible to use older files without modifications. Existing gallery references in the documentation will be changed subsequently.

  • The handling of the T/R/E keys in the LOP scene viewer is now customizable with a python script (sceneviewerhooks.py).

  • Allow LOP primitive patterns to be interrupted with the ⎋ Esc key. This works both when cooking LOP nodes and in the Edit Pattern window.

  • Added a %size auto-collection to select all UsdGeomImageable prims whose bounding box’s volume, or screen area (given a path to a valid UsdCamera), is within a given range.

New nodes

Node improvements

  • The Component Output LOP now provides a way to save source nodes to a recipe as a sidecar HDA file. Later, the recipe lets you edit the asset’s source from within the scene where the asset is used.

  • The Configure Layer LOP has new Color Configuration and Color Management System parameters for controlling metadata on the stage room prim.

  • The Camera Import COP now supports direct access of LOP cameras.

  • The Houdini Procedural: RBD LOP now deletes pieces when points with a matching piece attribute are not found. There’s also support to copy attributes from points.

  • Several improvements on the Geometry Clip Sequence LOP:

    • New Reload Files button.

    • Fixed subframe sampling or frame increment < 1.

    • Added Handle Missing Files parameter.

    • Added option to sublayer the topology file instead of referencing it.

  • The Assign Prototype LOP now grafts branches instead of stage when importing prototypes from the second input for a more targeted merge.

  • The SOP Import LOP now authors the fieldClass and fieldDataType attributes for OpenVDBAsset prims.

  • Added an Enable multiparm to the Set Variant LOP, to provide the ability to turn off/on a particular multiparm block’s effect.

  • Added support for refreshing renderer-specific parameters on LOP nodes. This can be done from an individual node’s Initialize Parameters menu, or all nodes can be refreshed from the top level Render menu.

  • A new toggle on the LOP Import SOP excludes deactivated primitives which are matched by the primitive pattern. This is turned on by default for new instances of the node, but can be turned off to import inactive primitives into SOPS (for example, to reactivate them via the usdactive attribute).

  • Added an option on the Unpack USD SOP to perform additional iterations of unpacking, or continue unpacking as far as possible. An optional integer attribute can also be added to the geometry to record the nesting level when unpacking point instancers.

  • Added a new COPs sample compositing setup to the Background Plate LOP’s quick setup menu.

  • You can now allow LOP nodes to author non-root prims as the default prim for a layer.

Rendering

Image by Martin Winkler
  • Added the ability for the LOP Scene Viewer to keep multiple non-HoudiniGL render delegates “active” at the same time. Only one will be rendering at a time, but you can switch between multiple renderers without having to restart the renderer each time you switch to it. The number of delegates is controlled by the HOUDINI_ACTIVE_RENDER_DELEGATE_COUNT environment variable.

  • Render delegates can be configured to be deleted instead of paused when switching away to any other renderer (including Houdini GL).

  • Render delegates can now specify in UsdRenderers.json whether or not the renderer should be paused before updating the USD stage.

  • When Solaris saves a COP image for texturing, the resulting EXR file will now be tiled and mip-mapped. Mip-mapped EXRs are directly supported by many renderers.

Environment variables

  • Houdini now supports Hydra 2 as the new standard interface for render delegates. This also includes husk. There’s backward compatibility with Hydra, but you can also set the USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=0 environment variable if you need to disable Hydra 2.

  • When you set the new HOUDINI_PROTOPATHS_IN_INSTANCE_SELECTIONS environment variable to 1, Houdini generates LOP instance selection strings in a new format. This format includes not just the instance index, but also the path to the primitive within that instance’s prototype that was selected. This allows for more targeted selection of child prims within a point instancer instance.

    It’s also required to disambiguate between child point instancers in the case of selecting nested instances when the top level prototype has more than one point instancer child prim. The new format is /instancer_path[index:/path/to/selected/prototype/prim].

  • A new HOUDINI_NEW_CONTEXT_OPTION_RULES environment variable that can change the behavior of context options. When you turn on this mode, it makes the context options last used to cook a node higher priority than global context option values.

    This reduces excessive cooking when an option exists both globally and locally via an Edit Context Options LOP. When a node has its display flag set, this behavior changes so that the last cook context option values are never used, allowing the use of global options to explicitly override the options for a specific node. We also improved tracking of context option dependencies, so changing a global option doesn’t trigger recooks of nodes that used a local context option value the last time they cooked.

  • Replaced HOUDINI_DEFAULT_RENDER_DELEGATE with four separate variables.

    • HOUDINI_DEFAULT_ROP_RENDER_DELEGATE - default delegate for ROPs

    • HOUDINI_DEFAULT_CLONE_RENDER_DELEGATE - default delegate for clones

    • HOUDINI_DEFAULT_SCENEVIEWER_RENDER_DELEGATE - default for scene viewers

    • HOUDINI_FORCE_SCENEVIEWER_RENDER_DELEGATE - override delegate setting for scene viewers saved into a hip file.

Other improvements

  • Shot Builder is a multi-shot workflow toolset added to Solaris. Please note that the system and its nodes are still considered beta. The number of nodes, their functionality and parameters are subject to change, and there’s currently minimal documentation available.

  • The Scene Graph Details pane has a new Time Samples tab for showing additional information about time sampled attributes.

  • Added a Children column to the Scene Graph Tree pane, which shows the count of direct child prims. This and the Descendants columns now show the count in an orange “warning” color when the count exceeds 50,000 to indicate that showing these columns may be negatively impacting performance. The Descendants column is now off by default, and the Children column is on by default.

  • Enhanced and improved support for point-instanced lights in the viewport.

  • Inactive prims now use a different look in the Scene Graph Tree to make their active/inactive state clearer.

  • LOP nodes with a Handle Missing Files parameter set to Warn for missing files used to direct the USD library to open the layer file. This could be quite expensive for some file formats like BGEO. Now, Houdini just checks for the existence of the file. This is much faster, but will no longer detect invalid files (only truly missing files).

  • A node’s menu now shows the complete information for LOPs and USD prims.

  • LOP nodes can now create and edit USD prims, properties, and variants with UTF8 identifiers. Validation of identifiers conforms to the rules defined by USD.

  • New auto collections for specifying USD primitive patterns based on the values of attributes, relationships, and primvars on prims.

  • The hou.LopNode.stagePrimStats method now has a new Do Kind Counts parameter for returning the number of prims of each kind.

  • The Karma Material Builder and USD MaterialX Builder inside a Material Library LOP contain a Subnet Output VOP. This VOP now supports a Shader Render Context Name spare parameter to override the terminal shader output on the translated USD material. This allows for several contexts (mtlx and hview) in one material builder.

  • You can now interrupt LOP primitive patterns with the ⎋ Esc key. This works both when cooking LOP nodes and in the Edit Pattern window.

  • Visual enhancements in the Scene Graph Tree.

  • Component Output nodes now offer a way to edit the USD asset’s definition, using the original nodes. See Editing existing components for details.

  • A new usdprims expression function evaluates a prim pattern on a USD file on disk or LOP node.

  • A custom LOP “editor node type” can now implement a function called initializeParametersFromPrim to customize how the node’s parameters are initialized from the current state of the USD prim.

  • New HOM methods to get the last context options used to cook a node, and hou.LopNode methods that involve cooking a LOP node now have a parameter that can be used to override context option values for the cook.

  • The context menu for a USD prim with no variant sets will now look up the scene graph hierarchy for any ancestor prims with variant sets, and allow setting those variants from the menu. This makes it much easier to choose variants on an asset by bringing up the menu for any prim within the asset.

  • When unpacking USD to SOP geometry, the usdconfigreversepolygonsattribute is now added to primitives where the winding order was reversed. When round-tripping back to LOPs, this restores the original orientation without needing to manually adjust SOP Import parameters.

What’s new in Houdini 21