Houdini Main Changelogs

20.5.182

The LOP Output Processors API has had several changes for handling references with stage variable expressions:

  • beginSave takes a new stage_variables dictionary parameter whichshould be passed to the base class implementation. This dictionarycontains the stage variables set on the root layer of the stagebeing written to disk.
  • A new stageVariables method returns the dictionary passed to thebase class implementation of beginSave.
  • A new processReferenceExpression method behaves exactly likeprocessReferencePath except it is called when the asset referenceis expressed as a stage variable expression.
Thu. March 21, 2024
19.0.234

The API for USD Output Processors has changed. Specifically, the "beginSave()" method now takes an addition parameter for overrides.

In the case of a Python-based translator, that means code that was:

def beginSave(self, config_node, t):

Should now be:

def beginSave(self, config_node, config_overrides, t):

To aid with the layering of config_node and config_overrides, a helper method has been added to husd.outputprocessor.OutputProcessor

Where you used to call, for example:

outputdir = config_node.parm("outputdir").evalAtTime(t)

You should now call:

outputdir = self.evalConfig("outputdir", config_node, config_overrides, t)

Note that "evalConfig()" also handles the validation that the node and parm exist (i.e., you can remove these safety-checks from your translator)

Fri. April 23, 2021
19.0.234

The API for USD Output Processors has changed. Specifically, the "beginSave()" method now takes an addition parameter for overrides.

In the case of a Python-based translator, that means code that was:

def beginSave(self, config_node, t):

Should now be:

def beginSave(self, config_node, config_overrides, t):

To aid with the layering of config_node and config_overrides, a helper method has been added to husd.outputprocessor.OutputProcessor

Where you used to call, for example:

outputdir = config_node.parm("outputdir").evalAtTime(t)

You should now call:

outputdir = self.evalConfig("outputdir", config_node, config_overrides, t)

Note that "evalConfig()" also handles the validation that the node and parm exist (i.e., you can remove these safety-checks from your translator)

Fri. April 23, 2021
19.0.234

The API for USD Output Processors has changed. Specifically, the "beginSave()" method now takes an addition parameter for overrides.

In the case of a Python-based translator, that means code that was:

def beginSave(self, config_node, t):

Should now be:

def beginSave(self, config_node, config_overrides, t):

To aid with the layering of config_node and config_overrides, a helper method has been added to husd.outputprocessor.OutputProcessor

Where you used to call, for example:

outputdir = config_node.parm("outputdir").evalAtTime(t)

You should now call:

outputdir = self.evalConfig("outputdir", config_node, config_overrides, t)

Note that "evalConfig()" also handles the validation that the node and parm exist (i.e., you can remove these safety-checks from your translator)

Fri. April 23, 2021
19.0.234

The API for USD Output Processors has changed. Specifically, the "beginSave()" method now takes an addition parameter for overrides.

In the case of a Python-based translator, that means code that was:

def beginSave(self, config_node, t):

Should now be:

def beginSave(self, config_node, config_overrides, t):

To aid with the layering of config_node and config_overrides, a helper method has been added to husd.outputprocessor.OutputProcessor

Where you used to call, for example:

outputdir = config_node.parm("outputdir").evalAtTime(t)

You should now call:

outputdir = self.evalConfig("outputdir", config_node, config_overrides, t)

Note that "evalConfig()" also handles the validation that the node and parm exist (i.e., you can remove these safety-checks from your translator)

Fri. April 23, 2021