Go to: Attributes.

DAG object node. Base class for all objects in the 3D transformation hierarchy or DAG.

Transformation Hierarchy (DAG)

The transformation hierarchy or DAG (Directed Acyclic Graph) is a hierarchy where objects are defined relative to the transformations on their parent objects. These objects are dependency nodes and are referred to as dag nodes. There are basically two types of dag nodes: transforms and shapes. Transform nodes are grouping nodes which can have any number of other dag nodes below it. Transform nodes have affine transformation information which is applied to nodes below them. Shape nodes are leaf level nodes and cannot have any other nodes below them. Shape nodes must have at least one transform node as a parent. Dag nodes can have more than one parent. That is, they can be in more than one hierarchy. This makes the transformation hierarchy a graph instead of a tree. Dag nodes that are in more than one hierarchy are said to be "instanced".

Names

Dag nodes have names. There can be more than one dag node in the dag with the same name. However, a transform grouping node cannot have two child nodes with the same name.

Paths

Since there may be multiple ways to reach an instanced dag node when traversing down from the root of the hierarchy, all dag nodes are identified by a "path" which uniquely identifies a particular instance of an object. Paths define the traversal path from the root of the hierarchy down to the node. A dag node may have multiple paths to it. Paths have an associated number which corresponds to their position in the list of paths to the node at the end of the path. DAG Traversal is depth first so the first time a node is visited, the path traversed is path 0. The second time the dag node is visited, this different path traversed is path 1, and so on. Each path to a dag node also defines how the node is to be transformed. Instanced dag nodes will appear multiple times in the scene (once for each unique path from the root of the hierarchy to the object).

Transformations

All transformations in the DAG are affine transformations. All dag node transformations can be represented by a 4x4 transformation matrix where the fourth column contains the vector (0,0,0,1), the fourth row contains the vector (tx, ty, tz, 1) and represents a translational component. This implies objects are transformed by post multiplying their position by the transformation matrix.

Transformation Spaces

When dealing with dag nodes there is the concept of "transformation space". Common transformation spaces include "world-space", "object-space" and "parent-space". "world-space" is the space in which the objects appear in the scene, after all the hierarchical transformations have been applied. "object-space" is defined as the space in which the geometry of the object is defined before any transformations have been applied. Finally, "parent-space" is the transformation space that includes the matrices of the parents above the object but not the object's transformation matrix. These transformation spaces are essential when dealing with attributes from different nodes to ensure consistent behaviour. For example, to compare the positions of vertices on two different objects in the scene, the vertices must first be transformed to a common transformation space. One way this can be accomplished is to transform the vertices using the worldMatrix attribute before doing the comparison. Note: certain attributes like the transformation channels defined in a transform node do not correspond to any of the transformation spaces described above because they are used to construct the transformation matrix. Therefore, the order in which they are applied within the transformation matrix defines a unique transformation space for each of these attributes.

Instanced Attributes

Additionally, dag nodes can contain a special type of attribute called an "instanced attribute". Instanced attributes are array attributes where the array attribute at index 'i' corresponds to instance number 'i' for this object in the transformation hierarchy. Instances are mapped to array indices according to their relative ordering when traversing the DAG depth first. (in ascending child order) When specifying instanced attributes it is not necessary to give the array index because the system will infer this information from the path. Therefore, the attribute "ball.worldMatrix" corresponds to the array attribute "ball.worldMatrix[0]". From this definition it follows that all instanced attributes must contain at least one array item.

Matrix Attributes and MEL

Some attributes represent transformation matrixes. Although these attributes are represented internally as 4x4 matrices, unfortunately, matrix attributes are not returned as MEL 4x4 matrix types. Instead, they are returned as an array of floats where the elements of the matrix are listed in row major order. For instance, "matrix $m[4][4] = `getAttr ball.worldMatrix`;" will not work. To obtain the value of a matrix attribute, you need something like "float $m[16] = `getAttr ball.worldMatrix`;".

This node is abstract

Node name Parents MFn type Compatible function sets
dagNode entity kDagNode kBase
kNamedObject
kDependencyNode
kDagNode

Attributes (61)

The following quick index only shows top-level attributes (too many attributes to show them all): boundingBox (12), center (3), drawOverride (8), ghostCustomSteps (3), ghostDriver, ghostFrames, ghostRangeEnd, ghostRangeStart, ghosting, ghostingControl, instObjGroups (4), intermediateObject, inverseMatrix, lodVisibility, matrix, objectColor, parentInverseMatrix, parentMatrix, renderInfo (3), renderLayerInfo (3), template, useObjectColor, visibility, worldInverseMatrix, worldMatrix

Long name (short name) Type Default Flags
boundingBox (bb) compound n/a outputconnectable
Bounding box. The bounding box of a dagNode includes the bounding boxes of all its children and is transformed by the matrix attribute.
boundingBoxMin (bbmn) double3 outputconnectable
Bounding box minimum.
boundingBoxMinX (bbnx) distance (double) 0.0cm outputconnectable
Bounding box minimum X value
boundingBoxMinY (bbny) distance (double) 0.0cm outputconnectable
Bounding box minimum Y value
boundingBoxMinZ (bbnz) distance (double) 0.0cm outputconnectable
Bounding box minimum Z value
boundingBoxMax (bbmx) double3 outputconnectable
Bounding box maximum.
boundingBoxMaxX (bbxx) distance (double) 0.0cm outputconnectable
Bounding box maximum X value.
boundingBoxMaxY (bbxy) distance (double) 0.0cm outputconnectable
Bounding box maximum Y value.
boundingBoxMaxZ (bbxz) distance (double) 0.0cm outputconnectable
Bounding box maximum Z value.
boundingBoxSize (bbsi) double3 outputconnectable
Bounding box extents. (boundingBoxMax - boundingBoxMin)
boundingBoxSizeX (bbsx) distance (double) 0.0cm outputconnectable
Bounding box extent in X.
boundingBoxSizeY (bbsy) distance (double) 0.0cm outputconnectable
Bounding box extent in Y.
boundingBoxSizeZ (bbsz) distance (double) 0.0cm outputconnectable
Bounding box extent in Z.
center (c) double3 outputconnectable
Center of the boundingBox. Note: like the boundingBox attribute, this attribute is also transformed by the matrix attribute.
boundingBoxCenterX (bcx) distance (double) 0.0cm outputconnectable
Center X value.
boundingBoxCenterY (bcy) distance (double) 0.0cm outputconnectable
Center Y value.
boundingBoxCenterZ (bcz) distance (double) 0.0cm outputconnectable
Center Z value.
matrix (m) matrix identity outputconnectable
Local transformation matrix for the dagNode.
inverseMatrix (im) matrix identity outputconnectable
Inverse of matrix attribute.
worldMatrix (wm) matrix identity arrayoutputconnectable
The worldMatrix instanced attribute is the 4x4 transformation matrix that transforms the object to world-space. There is a world-space matrix for each unique path to the object. Eg. 'ball.worldMatrix[0]' identifies the world-space transformation matrix for the first instance of the object 'ball'. Each world-space transformation matrix is the result of post multiplying the 'matrix' attribute by corresponding 'parentMatrix' instanced attribute (i.e. worldMatrix[i] == matrix x parentMatrix[i]). Thus, the worldMatrix is the concatenation of the 'matrix' attribute of all the dagNodes along the path from the node up to the root of the dag hierarchy.
worldInverseMatrix (wim) matrix identity arrayoutputconnectable
Inverse of worldMatrix instanced attribute.
parentMatrix (pm) matrix identity arrayoutputconnectable
The parentMatrix instanced attribute represents the world-space transformation matrix for the parents of this dagNode. If the dagNode is a transform node and its inheritTransform attribute is false, then the parentMatrix is identity.
parentInverseMatrix (pim) matrix identity arrayoutputconnectable
Inverse of parentMatrix instanced attribute.
visibility (v) bool true outputinputconnectablestorablekeyable
Boolean attribute that is set to false for invisible objects in the scene. Note: visibility is inherited by children of a dagNode.
intermediateObject (io) bool false outputinputconnectablestorable
Boolean attribute that specifies whether the dagNode is an intermediate object resulting from a construction history operation. dagNodes with this attribute set to true are not visible and/or rendered. This attribute is automatically set so changing this value may cause unpredictable results.
template (tmp) bool false outputinputconnectablestorable
Boolean attribute that specifies whether the object is templated. Templated objects are objects in the scene that are not rendered, always drawn in wireframe mode, and can only be selected using "template" selection mode. Note: template state is inherited by children of a dagNode.
ghosting (gh) bool false outputinputconnectablestorable
Boolean attribute controls whether ghosts of the object are displayed.
instObjGroups (iog) compound n/a arrayoutputinputconnectablestorable
An instanced attribute array of compound attributes used to represent "set" membership information. Connections are made to this attribute if the entire instance is in a set and connections are made to the children of this attribute if portions of this attribute are in sets.
objectGroups (og) compound n/a arrayoutputinputconnectablestorable
An array of compound attributes used to identify the parts of the object that are in various sets. Each element in the array refers to the membership in one set.
objectGrpCompList (gcl) componentList NULL outputinputstorable
Specifies the portion of the object that is in the set.
objectGroupId (gid) integer 0 outputinputconnectable
Group Id Integer that identifies the object group in the object.
objectGrpColor (gco) short -1 outputinputconnectable
Integer representing the user-defined color index assigned to the set this that this object group is a part of. A value of -1 turns off this attribute. Warning, setting this value to anything outside the range -1..7 will cause unpredictable results.
useObjectColor (uoc) bool false outputinputconnectablestorable
If true the dormant wireframe color of the dagNode is controlled by the aObjectColor attribute. Otherwise, the dormant color is determined by the type of object and the color preferences.
objectColor (oc) short 0 outputinputconnectablestorable
Integer representing a user-defined color index to use as the dormant color for this dagNode in wireframe mode. Warning, setting this value to anything outside the range 0..7 will cause unpredictable results.
drawOverride (do) compound n/a outputinputconnectablestorable
Parent attribute encapsulating all draw override information
overrideDisplayType (ovdt) enum 0 outputinputconnectablestorable
Override for the method of drawing. 0=Normal, 1=Template, 2=Reference
overrideLevelOfDetail (ovlod) enum 0 outputinputconnectablestorable
Override for the amount of detail to be drawn. 0=Full, 1=Bounding Box
overrideShading (ovs) bool true outputinputconnectablestorable
Override of shading state when in shaded display
overrideTexturing (ovt) bool true outputinputconnectablestorable
Override of texturing state when in shaded display
overridePlayback (ovp) bool true outputinputconnectablestorable
Override of ability to animate
overrideEnabled (ove) bool false outputinputconnectablestorable
Turn on/off the effect of the sibling attributes
overrideVisibility (ovv) bool true outputinputconnectablestorable
Override of the object visibility
overrideColor (ovc) unsigned char 0 outputinputconnectablestorable
Override of the object color. Valid range is [0-31]. A value of zero disables the override.
lodVisibility (lodv) bool true outputinputconnectablestorable
Override of the object visibility. Used to control visibility of objects for level of detail.
renderInfo (ri) compound n/a outputinputconnectablestorable
Maya V7 obsolete
identification (rlid) short 0 outputinputconnectablestorable
Maya V7 obsolete
layerRenderable (rndr) bool true outputinputconnectablestorable
Maya V7 obsolete
layerOverrideColor (lovc) unsigned char 0 outputinputconnectablestorable
Maya V7 Obsolete
renderLayerInfo (rlio) compound n/a arrayoutputinputconnectablestorable
Parent attribute encapsulating all render override information.
renderLayerId (rli) short 0 outputinputconnectablestorable
Render layer identification number
renderLayerRenderable (rlr) bool true outputinputconnectablestorable
Specifies whether the layer is visible when rendered.
renderLayerColor (rlc) unsigned char 0 outputinputconnectablestorable
Color with which to draw.
ghostingControl (gc) enum 0 outputinputconnectablestorable
This attribute specifies how the user wants to specify the frames where the ghosts appear. The settings have the following meanings: globalPreferences: ghosts are drawn at the steps specified in the Animation Preferences customFrames: ghosts are drawn at the frames specified in the ghostFrames attribute customFramePrePost: ghosts are drawn at the steps of frame specified in the ghostPrePost attribute customKeyPrePost: ghosts are drawn at the steps of key specified in the ghostPrePost attribute keyframeRange: ghosts are drawn at the frames within the range where there are keys
ghostCustomSteps (gcs) compound n/a outputinputconnectablestorable
Attribute which stores the step information for ghosting. This value is only used if the ghostingControl is set to customPrePost.
ghostPreSteps (gpr) integer 3 outputinputconnectablestorable
The number of ghost steps before the current frame. This value is only used if the ghostingControl is set to customPrePost.
ghostPostSteps (gps) integer 3 outputinputconnectablestorable
The number of ghost steps after the current frame. This value is only used if the ghostingControl is set to customPrePost.
ghostStepSize (gss) integer 1 outputinputconnectablestorable
The number of frames per ghosting step. This value is only used if the ghostingControl is set to customFramePrePost or customKeyPrePost.
ghostFrames (gf) intArray empty outputinputconnectablestorable
Specific frames where the ghost will apear. This value is only used if the ghostingControl is set to customFrames.
ghostRangeStart (grs) time 0film outputinputconnectablestorable
Start of time range where ghosts on keyframes will appear. This value is only used if the ghostingControl is set to keyframeRange.
ghostRangeEnd (gre) time 100.0film outputinputconnectablestorable
End of time range where ghosts on keyframes will appear. This value is only used if the ghostingControl is set to keyframeRange.
ghostDriver (gdr) Message n/a outputinputconnectable
The message attribute determines which dag object's keys will be used to display ghosting for this object