On this page


  • Global attributes now appear in the MMB information panel for TOP Network nodes in any context. The global attributes also use the same color scheme—pink for Strings, green for Integers, orange for Floats, and so on—as regular work item-level attributes.

  • The Total Generate Time, Total Cook Time, and Average Cook Time Per Work Item for a given node now appears in the MMB information panel for all TOP nodes.

  • Job script command line information and compatible services for a given node now appear in the MMB information panel for all Processor TOP nodes.

  • Select which output files to remove from disk for any TOP node with the Delete This Node’s Output Files from Disk RMB-menu option’s new Make Selection window.

    Delete This Node’s Output Files from Disk right-click menu item > Make Selection window
  • Filter your bundle nodes by PDG node type (like by Schedulers, Processors, or Partitioners) with the new TOP filters located in the Bundle List pane > Filter drop-down list.

  • Add custom zones for your PDG path maps and view which schedulers created each mapping with the improved PDG Path Map pane.

TOP networks

  • Specify a default work item label for all the tasks in a TOP network that have the default label setting with the new Default Item Label parameter on the TOP Network node across all contexts.

  • New HOUDINI_DELAYSYNC_HDA environment variable that enables the delayed syncing of asset contents until the assets cook. This is available for all network types (including TOPs), and it is useful when you want to save on load/initialization time.

  • Save the global attributes that are stored on a TOP graph to its .hip file with the new Save Graph Attributes to .hip parameter on the TOP Network SOP node. This makes it so that when you next open the .hip file, all the global attributes and their settings will still be available on the graph.

  • Control how geometry from work items are grouped in a SOP node’s output with the new Group Work Items Using and Piece Attribute Name parameters on the TOP Geometry SOP node. For example, you can now group geometry by Point Groups, Primitive Groups, Point Attribute, Primitive Attribute, or not group the output at all.

PDG services

  • Set up and manage PDG services directly in your PDG graphs with the new Service TOP nodes:

  • A new Python Script Service type is now available in the PDG Services window.

  • You can now configure a PDG service at any time during registration or after registration, but not when the service is running.

  • You can now register multiple PDG services of the same type (like multiple HDA Processor Services) and give them different names.


Networks & servers


  • Failed attribute evaluations like out-of-bounds indices or invalid file tags in TOP node expressions now produce explicit warning messages that describe in detail the cause of the failed evaluations.


  • All the PDG methods for adding, removing, and accessing attributes have been moved to the new pdg.AttributeOwner base class from pdg.WorkItem. This change does not affect existing code that accesses attributes since pdg.WorkItem now inherits from this new base class and all the methods are still accessible from pdg.WorkItem instances.

  • The pdg.ValuePattern class now supports a more condensed syntax for specifying a range of values by using a string prefix for each value. The range is defined by square brackets after the prefix. For example, prefix[1-4] generates the following sequence of values: prefix1, prefix2, prefix3. The range can also include an optional step size. For example, prefix[1-10:2].

  • New pdg.AttributeUtils.ignoreWarnings() context block lets you temporarily suppress @attrib expression warning messages caused by the lack of valid work item data.

  • New prepareDirty() method for the pdg.Graph, pdg.Node, and pdg.WorkItem classes allows you to create a pdg.WorkItemDirty object. This object holds the description of a dirty operation that can be either discarded or performed at a later time.

  • New evaluateBool() method for pdg.Port lets you evaluate an integer port as a boolean.

  • The pdg.WorkItem.cookDuration() property now returns useful values at any stage of its work item’s cook. For example, pdg.WorkItem.cookDuration() will now return 0 if the work item has not started to cook and current_time - start_time if the work item is in the process of cooking.

  • Most pdg.Attribute-type classes (for example, like pdg.AttributeFile and so on) now have a new isArray property which is set to True for data types (int, float, string, and file) that support arrays of values.

  • PDG Python and Job API result data methods are now deprecated and have been replaced by new methods with names that reference input file and output file. For example, the new pdg.WorkItem.inputFiles method replaces pdg.WorkItem.inputResultData and the new pdg.WorkItem.outputFiles method replaces pdg.WorkItem.resultData. However, all old PDG API ResultData methods will continue to work.

  • The pdg.utils.addItemFromSerialized(..) utility method is now deprecated. Please use the pdg.WorkItemHolder.addWorkItemFromJSONFile method instead.

  • The code used to produce wrapped ROP TOP assets is now available in the pdg.hda.ropwrapper module.

  • Query information about a node’s job script with the new pdg.Node.scriptInfo property.

  • Evaluate a PDG node parameter without applying back tick or $variable expansion with the new pdg.Port.evaluateRawString method.

  • Python scripts can now write the pdg.File.size property. It is no longer read-only.

  • The from, to, and scheduler pdg.PathMapEntry methods have been renamed to mapFrom, mapTo, and createdBy respectively.

Work items

  • Specify the name of the expanded value attribute that is added to expanded file list or partition work items with the new Value Attribute parameter on the Work Item Expand TOP node.

  • Import work items from .json files on disk or from other TOP nodes in your scene file (including any attribute data or output files listed on your source work items) with the new Work Item Import TOP node.

  • Boost the priority of a work item on a Remote Graph TOP node with the new RMB menu Boost Priority option for the work item.





  • Preserve the array size of incoming attributes when they are merged by Partitioners with the new Preserve Arrays parameter on most Partitioner nodes.

  • The Merge Operations multiparm on Partitioner nodes is now produced by the pdg.mergeOperationMenu() function instead of manually specifying its settings in each Partitioner node’s parameter interface.

  • Sort nodes by name or input index with the new Sort Nodes By parameter on the Partition by Node TOP node.

ROP workflows

  • Choose whether to cook your work items in-process, out-of-process, or using a service with the new Cook Type parameter options on all the ROP TOP nodes. You can use this for cooking both single frame and batch work items, but not for cooking ROPs in external .hip files or distributed sims.

  • Specify which service you want to use to cook your ROP TOP nodes with the new Service Name parameter.

  • Choose to ignore errors when work items load their scene files with the new Ignore Scene Load Errors parameter on all the ROP TOP nodes.

  • Start your batches only once a specific number or percentage of frames have cooked with the new Fixed Number of Frames are Ready and Percentage of Frames are Ready options for the Cook Batch When parameter on all the ROP TOP nodes.

  • Control whether or not work items should look for output log messages and specify a format string for those message with the new Output Log Parsing and Custom Log Format parameters all the ROP TOP nodes.

  • Generate work items that cook an FBX ROP and output .fbx files with the new ROP FBX Output TOP node.

  • Set-up your ROP Karma TOP nodes with greater ease with the new simplified Karma parameters. For more information, see the Solaris v19.5 What’s New.

  • Customize the labels for your ROP Karma TOP node work items with the new Work Item Label parameter and options.

  • Specify the path to a parameter that should be pressed before each frame cook with the new Reload Parm Path parameter on the the ROP Fetch TOP and ROP Geometry TOP nodes. This is helpful when cooking a ROP that references nodes that need to manually reload external resources with a Reload button.

  • ROP Fetch TOP node now sets its pre and post frame hooks on its target ROP using the hou.RopNode.addRenderEventCallback HOM API method instead of writing to the pre and post frame script parameters on the ROP node.

What’s new in Houdini 19.5