DAG 階層(オブジェクト階層とも呼ばれる)は、オブジェクトを構成するすべてのノードの親子関係を示します。DAG は Directed Acyclic Graph の略です。本質的には、DAG はオブジェクトのインスタンスがジオメトリからどのように構築されているのかのブレイクダウンです。
オブジェクトの DAG 階層には、常に 2 種類のノード、トランスフォームとシェイプが含まれています。
たとえば、ポリゴン球を作成すると、シェイプ ノードとトランスフォーム ノードが含まれていることをアトリビュート エディタ(Attribute Editor)で見ることができます。シェイプ ノードにはジオメトリを定義するアトリビュートが含まれており、トランスフォーム ノードには球の位置、スケール、回転をコントロールするアトリビュートが含まれています。この場合、シェイプ ノードはトランスフォーム ノードの子ノードになります。
注: DAG 階層ノードと Maya API のディペンデンシー グラフ(DG)ノードとを比較してください。これらは関連がありますがシステムが異なり、異なる目的で使用されます。DAG ノードとは異なり、ディペンデンシー グラフ ノードは循環させることができ、両方向に情報が渡すことができます。
また、ハイパーグラフ(Hypergraph)ウィンドウの階層フォームで DAG 情報を表示することもできます。
- トランスフォーム ノード
- トランスフォーム ノードには、トランスフォーム情報(移動、回転、スケール)とペアレント化の情報が含まれています。トランスフォーム ノードは、その下にグループ化される複数の子ノードを持つことができます。ノードのグループ化により、複数の DAG パス間で同じシェイプを共有できるようになります。(DAG パスはノード間の階層リンクを表し、階層の最初から最も遠いノードまでの方向を定義しています)。
たとえば、手をモデル化し、手のひらと指が(それぞれを個別に回転させるのではなく)回転するように 1 つのトランスフォームを適用する場合、手のひらと指には共通のペアレント トランスフォーム ノードを使用することができます。
- シェイプ ノード
- シェイプ ノードはジオメトリを記述し、ペアレント化情報やトランスフォーム情報は含まれません。ジオメトリをトランスフォーム ノードの下にすることはできません。したがってすべてのジオメトリには、自分自身の上に 2 つの DAG ノードが必要です。つまり、すぐ上にシェイプ ノード、シェイプ ノードの上にトランスフォーム ノードが必要です。