Transform Property Widget#
USD has a very flexible transform system. In additional the traditional xformOps, e.g. translation, rotation, scale, USD supports many other types of xformOps e.g. orient quaternions, transform matrix. Moreover, each USD xformable contains an attribute called xformOpOrder which is a list of xformOp tokens, e.g. xformOp:translate, xformOp:orient, xformOp:scale, etc.. The xformOpOrder has two level of meanings:
An xformOp takes part in the transform pipeline only if it is listed in the xformOpOrder. e.g. if there is an xformOp:scale attribute but xformOp:scale is not included in the xformOpOrder attribute, the current prim’s scale won’t be affected by the xformOp:scale attribute’s value.
The transform operators are applied according to the xformOpOrder token list. In other words, xformOpOrder = [xformOp:translate, xformOp:rotateZYX, xformOp:scale] means doing scale first, followed by rotation followed by translation(yes, the order is reversed here).
In addition to adjust the values of different xformOps, the design philosophy of the transform property widget is such that we can also modify the xformOpOrder without explicitly display this attribute in the transform collapsible sub-frame. That been said, the transform property widget acts as a USD xformOp framework’s editor.
Transform property widget for various types of xformOp cases
Transform property widget update the xformOpOrder indirectly