Built-in Op Types ================= .. list-table:: :header-rows: 1 :widths: 1 99 - * Op Type * Summary - * `DecomposeTransform`_ * Decomposes a transform group into components. - * `EditTransform`_ * Modifies transform components. - * `LightsDefaultValuesBackup`_ * Runs through the locations under the baking root and storeslight linking information in attributes. - * `LightsDefaultValuesRestore`_ * Restores the light linking information in the lightList foundon any location the op is run onto. - * `LiveAttribute`_ * Duplicates an attribute at a location and applies an override to it. - * `PolymeshFacesetResolve`_ * Bakes the geometry of faceset children of polymesh scenegraph locations. - * `ReverseNormals`_ * Reverses point and vertex normals. - * `Transform`_ * Applies a 3D transform DecomposeTransform ~~~~~~~~~~~~~~~~~~ Decomposes a specific transform group attribute into transform components translation, rotation and scale, based on the 'mode' Op argument. **Op Args** .. list-table:: :header-rows: 1 :widths: 5 10 15 70 - * Type * Name * Widget Hint * Description - * :kat:type:`string` * :kat:attr:`locationPath` * ``scenegraphLocation`` * Scene graph location to be used to retrieve the transform group to be decomposed. - * :kat:type:`string` * :kat:attr:`rotationOrder` * ``popup`` * Defines the rotation order to be used to decompose the transform attributes. Valid values are: 'XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX'. - * :kat:type:`string` * :kat:attr:`mode` * ``popup`` * Defines how the Op will operate to decompose the transform attributes. Supported modes are: 'global', 'local', 'childByName' and 'default'. 'global' will decompose the global transformation for the target location taking into account parents transforms. 'local' will decompose the whole 'xform' group set on the target location only. 'childByName' will decompose a specific child of the 'xform' group. 'default' won't decompose any transform, it will provide transform components from a 'decomposed' identity matrix. - * :kat:type:`string` * :kat:attr:`xformChildName` * * Specifies the name of the 'xform' group attribute's child to be decomposed. This arguments is only meaningful when the 'mode' argument is set to 'childByName'. - * :kat:type:`int` * :kat:attr:`setHints` * * If set to '1', forces to Op to create 'meta' attributes to describe hint strings for the decomposed transform component attributes. **Input Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`group` * :kat:attr:`xform` * Read at location specified by the 'locationPath' Op argument. Represents the transform group to be decomposed into translate, rotate and scale components. **Output Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.translate.x` * Written at location specified by the 'locationPath' Op argument. Represents the 'x' component of the 'translate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.translate.y` * Written at location specified by the 'locationPath' Op argument. Represents the 'y' component of the 'translate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.translate.z` * Written at location specified by the 'locationPath' Op argument. Represents the 'z' component of the 'translate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.rotate.x` * Written at location specified by the 'locationPath' Op argument. Represents the 'x' component of the 'rotate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.rotate.y` * Written at location specified by the 'locationPath' Op argument. Represents the 'y' component of the 'rotate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.rotate.z` * Written at location specified by the 'locationPath' Op argument. Represents the 'z' component of the 'rotate' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.scale.x` * Written at location specified by the 'locationPath' Op argument. Represents the 'x' component of the 'scale' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.scale.y` * Written at location specified by the 'locationPath' Op argument. Represents the 'y' component of the 'scale' vector of the decomposed transform group. - * :kat:type:`double` * :kat:attr:`decomposedXform.xform.scale.z` * Written at location specified by the 'locationPath' Op argument. Represents the 'z' component of the 'scale' vector of the decomposed transform group. EditTransform ~~~~~~~~~~~~~ Modifies transform components (translate , rotate, scale) or the whole transform group on a target location. **Op Args** .. list-table:: :header-rows: 1 :widths: 5 10 15 70 - * Type * Name * Widget Hint * Description - * :kat:type:`string` * :kat:attr:`locationPath` * ``scenegraphLocation`` * Scene graph location where to edit transform components. - * :kat:type:`string` * :kat:attr:`rotationOrder` * ``popup`` * Defines the rotation order to be used to decompose the transform attributes that will be modified. Valid values are: 'XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX'. - * :kat:type:`group` * :kat:attr:`xform` * * Defines the source transform group whose components will be used to modify the current transform attributes on the target location, according to the 'mode' argument. 'xform' must have a child group attribute for each transform component 'translate', 'rotate' and 'scale'. - * :kat:type:`string` * :kat:attr:`mode` * ``popup`` * Defines how the Op will operate to modify the transform components. Supported modes are: 'replace', 'add', and 'override'. 'replace' will replace the whole 'xform' group on the target location with the provided values (see the description of the 'xform' Op argument), assuming they represent a global transformation. It will calculate the global transform for the target's parent location, will invert it and then will apply the resulting inverse matrix, concatenating the transform components calculated from the Op arguments. 'add' will add a new transform group, calculated from the Op arguments, to the current 'xform' group on the target location. 'add supports two further options: 'stackOrder' which defines the position of the new transform group on the transform stack (valid values are 'first' or 'last') and 'xformGroupName' which defines the name of the new group to be created. Finally 'override' will override a specific 'xform' group child attribute. The child's name can be specified using the 'xformGroupName' Op argument. - * :kat:type:`string` * :kat:attr:`xformChildName` * * Specifies the name of the 'xform' group attribute's child to be created or overridden. - * :kat:type:`string` * :kat:attr:`stackOrder` * * Defines the position, on the transform stack, where to add a new transform group. This arguments is only meaningful if the 'mode' argument is set to 'add'. **Output Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`double` * :kat:attr:`xform.parentInverse` * Written at location specified by the 'locationPath' Op argument. Represents the global inverse matrix calculated for the target location. It's meant to reset the current transformation. This attribute will be set only if the 'mode' Op argument is set to 'replace'. - * :kat:type:`double` * :kat:attr:`xform..translate.x` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'x' component of the 'translate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..translate.y` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'y' component of the 'translate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..translate.z` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'z' component of the 'translate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..rotate.x` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'x' component of the 'rotate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..rotate.y` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'y' component of the 'rotate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..rotate.z` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'z' component of the 'rotate' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..scale.x` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'x' component of the 'scale' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..scale.y` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'y' component of the 'scale' vector of the computed transform group. - * :kat:type:`double` * :kat:attr:`xform..scale.z` * Written at location specified by the 'locationPath' Op argument. Represents the overridden 'z' component of the 'scale' vector of the computed transform group. LightsDefaultValuesBackup ~~~~~~~~~~~~~~~~~~~~~~~~~ LightsDefaultValuesBackup - Iterates through all locationsunder the baking root looking for light linking information to store as GroupAttributes on the same locations. This Op must run before baking, and it works in cooperation with LightsDefaultValuesRestore. This op expects a StringAttribute\|bakingRoot\| with all the baking roots, and an optional \|CEL\|StringAttribute. LightsDefaultValuesRestore ~~~~~~~~~~~~~~~~~~~~~~~~~~ LightsDefaultValuesRestore - should run after a lookFile has beenresolved to re- build the absolute paths that are found in thelightList(s). The Op assumes that LightsDefaultValuesBackup wasrun before baking. LightsDefaultValuesRestore expects aStringAttribute \|bakingRoot\| with a single value for the locationwhere the lookFile was assigned. LiveAttribute ~~~~~~~~~~~~~ This is an op whose purpose is to copy an existing attribute to a new group attribute under 'liveAttributes' and then override specific parts of that attribute. The attribute to override and its value is passed in via the op args along with the location to work on. **Op Args** .. list-table:: :header-rows: 1 :widths: 5 10 15 70 - * Type * Name * Widget Hint * Description - * :kat:type:`string` * :kat:attr:`rootAttribute` * ``scenegraphLocation`` * The name of the top-level attribute, below which live attribute overrides are stored. (default: 'liveAttributes') - * :kat:type:`group` * :kat:attr:`liveAttrs` * * Defines one or more live attributes and locations where they should be set. The GroupAttribute should have one or more children. Each child should contain a StringAttribute named 'location' and another GroupAttribute named 'attributes'. location - specifies the scene graph location to apply the live attribute. attributes - specifies the attribute values to override at this location. PolymeshFacesetResolve ~~~~~~~~~~~~~~~~~~~~~~ PolymeshFacesetFilter - Converts a polymesh scenegraph location with faceset children into a group scenegraph location with polymesh children. Each polymesh child is a duplicate of the original polymesh geometry containing only the faces specified in the original faceset data. Any unused faces will be appended in an extra child sibling named '__unusedFaces', to ensure the entire original polymesh is rendered. ReverseNormals ~~~~~~~~~~~~~~ Finds any geometry.point.N or geometry.vertex.N attributes at matching locations and inverts their direction. **Op Args** .. list-table:: :header-rows: 1 :widths: 5 10 15 70 - * Type * Name * Widget Hint * Description - * :kat:type:`string` * :kat:attr:`CEL` * ``cel`` * CEL expression to match locations against. **Input Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`float` * :kat:attr:`geometry.point.N` * Read at locations that match the CEL expression. If this attribute exists, its direction is reversed and the attribute is overridden with the result. - * :kat:type:`float` * :kat:attr:`geometry.vertex.N` * Read at locations that match the CEL expression. If this attribute exists, its direction is reversed and the attribute is overridden with the result. **Output Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`float` * :kat:attr:`geometry.point.N` * Written at locations that match the CEL expression, if there was an incoming attribute of the same name. The written value will be the inverse of the attribute from the input scene. If no attribute with the same name was found in the input scene, no output attribute will be created (and no error raised) - * :kat:type:`float` * :kat:attr:`geometry.vertex.N` * Written at locations that match the CEL expression, if there was an incoming attribute of the same name. The written value will be the inverse of the attribute from the input scene. If no attribute with the same name was found in the input scene, no output attribute will be created (and no error raised) Transform ~~~~~~~~~ Adds transform attributes to Scene Graph locations allowing you to control 3D objects in the Viewer. **Op Args** .. list-table:: :header-rows: 1 :widths: 5 10 15 70 - * Type * Name * Widget Hint * Description - * :kat:type:`string` * :kat:attr:`locationPath` * ``scenegraphLocation`` * The scene graph location to operate on. - * :kat:type:`group` * :kat:attr:`xform` * * The transformation to apply, in its deconstructed form (that is, individual attributes for rotate/scale/translate, not a 16x16 matrix). This GroupAttribute can have arbitrary hierarchy. Only recognised attribute names will cause transformations to be applied. These are: 'scale*', 'translate*' and 'rotate*'. Other names for attributes are allowed, but will be ignored when the transform is applied. - * :kat:type:`double` * :kat:attr:`pivot` * * The x/y/z pivot to apply the transformation with. - * :kat:type:`int` * :kat:attr:`makeInteractive` * * Whether the transform created should be marked as interactive or not. If enabled, the resulting transform will be named xform.interactive, and the attributeEditor.xform.exclusiveTo attribute will be created using the 'xformExclusiveTo' opArg. - * :kat:type:`int` * :kat:attr:`adjustParentBounds` * * When enabled, this will adjust the "bound" attribute of parent locations affected by the transformation of the child. As this calculation can lead to deeper scene traversal from shallow locations, it can be expensive in many cases (particularly when many of these Ops are contributing to the scene). When you know you don't need it, set this to 0 for increased performance. - * :kat:type:`string` * :kat:attr:`xformExclusiveTo` * * The name of the node to set exclusivity on. This is only used when the opArg 'makeInteractive' is also set to 1. When both opArgs are given, an attribute named 'attributeEditor.xform.exclusiveTo' will be created with the value provided to the opArg 'xformExclusiveTo'. - * :kat:type:`int` * :kat:attr:`applyFirst` * * Affects the position in the existing xform stack that the transform will be created at. When applyFirst=1, the transformation will be added to the *top* of the xform stack. When applyFirst=0, the transformation will be added to the *bottom* of the xform stack. **Input Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`group` * :kat:attr:`xform` * The existing transformation to append/prepend to. When the incoming scene graph data already has an xform attribute group, the Op will append/prepend its xform to this group. - * :kat:type:`double` * :kat:attr:`bound` * The bounding box attribute. This is only queried when the 'adjustParentBounds' opArg is 1. This is queried in order to pad the bounding box(es) to account for the transformation being applied. This is queried at all locations from the root, to the target locationPath (inclusive). **Output Attributes** .. list-table:: :header-rows: 1 :widths: 5 10 85 - * Type * Name * Description - * :kat:type:`group` * :kat:attr:`xform` * The transform stack. This incorporates and modifies the input scene graph's xform stack, applying the provided 'xform' opArg at the appropriate position, dependent on other opArgs. - * :kat:type:`string` * :kat:attr:`attributeEditor.xform.exclusiveTo` * Set when the 'makeInteractive' opArg is 1, and a value has been provided for the 'xformExclusiveTo' opArg. When that's the case, the value of this attribute will be the value provided to the'xformExclusiveTo' opArg. This is used to provide manipulators in the viewer that feed data back into the relevant node. - * :kat:type:`double` * :kat:attr:`bound` * The bounding box attribute. This is only set when the 'adjustParentBounds' opArg is 1. This is set in order to pad the bounding box(es) to account for the transformation being applied. This is set at all locations from the root, to the target locationPath (inclusive).