class cymel.core.cyobjects.dagnode.DagNode

Inheritance diagram of DagNode
class cymel.core.cyobjects.dagnode.DagNode(*args, **kwargs)

ベースクラス: DagNodeMixin, Entity

dagNode ノードタイプラッパークラス。

固定引数無しでのクラスインスタンス生成時のノード生成をサポート。

Methods:

commonAncestor(other[, skipFirst])

指定したノードとの共通の先祖ノードを得る。

findCommonAncestor([nodes, skipFirst])

指定したDAGノードに共通の先祖ノードを見つける。

findLeafNodes(nodes)

指定したDAGノード群から指定集合内leafとなるノード群を得る。

findTopNodes(nodes[, getParent, includeNone])

指定したDAGノード群から最上位のノード群を得る。

hide()

visibility アトリビュートを False にする。

iterBreadthFirst([shapes, intermediates, ...])

DAGノードツリーを幅優先反復する。

iterDepthFirst([shapes, intermediates, ...])

DAGノードツリーを深さ優先反復する。

iterPath([end, includeStart, includeEnd, ...])

DAGパスをたどるイテレータ。

setParent([parent, r, add, avoidJointShear, ...])

親ノードを変更する。

show()

visibility アトリビュートを True にする。

Attributes:

TYPE_BITS = 1

クラスでサポートしているノードの特徴を表す。

Methods Details:

commonAncestor(other, skipFirst=False)

指定したノードとの共通の先祖ノードを得る。

findCommonAncestor を [self, other] で呼び出すことと同じ。

パラメータ:
  • other (DagNode) -- 比較するDAGノード。

  • skipFirst (bool) -- 指定したノードの親を探索起点とするかどうか。 デフォルトでは指定したノード自身も結果となり得る。

戻り値の型:

DagNode or None

static findCommonAncestor(nodes=None, skipFirst=False)

指定したDAGノードに共通の先祖ノードを見つける。

パラメータ:
  • nodes (iterable) -- 1つ以上のDAGノード。省略時はカレントセレクション。

  • skipFirst (bool) -- 指定したノードの親を探索起点とするかどうか。 デフォルトでは指定したノード自身も結果となり得る。

戻り値の型:

DagNode or None

static findLeafNodes(nodes)

指定したDAGノード群から指定集合内leafとなるノード群を得る。

指定ノード間に先祖・子孫関係がある場合、先祖を除外する。 インスタンスの全パスは考慮せず、各ノードが保持する DAGパスに沿って判定する。

結果の順序は入力順となり、同じDAGパスの重複は最初の1つだけが得られる。 空の入力には空のリストを返す。

パラメータ:

nodes (iterable) -- DAGノード群。

戻り値の型:

DagNode のリスト。

static findTopNodes(nodes, getParent=False, includeNone=False)

指定したDAGノード群から最上位のノード群を得る。

指定ノード間に先祖・子孫関係がある場合、子孫を除外する。 インスタンスの全パスは考慮せず、各ノードが保持する DAGパスに沿って判定する。

結果の順序は入力順となり、同じDAGパスの重複は最初の1つだけが 残る。空の入力には空のリストを返す。

パラメータ:
  • nodes (iterable) -- DAGノード群。

  • getParent (bool) -- 最上位の指定ノードではなく、その親を結果とするかどうか。 親同士も同じ規則で集約され、デフォルトでは親の無いノードは 除外される。

  • includeNone (bool) -- getParent=True の場合に、親の無いシーン最上位ノードを None として結果に含めるかどうか。複数の None は1つに集約される。 getParent=False の場合は結果に影響しない。

戻り値の型:

list 通常は DagNode のリスト。 getParent=True かつ includeNone=True の場合のみ None を含み得る。

hide()

visibility アトリビュートを False にする。

iterBreadthFirst(shapes=False, intermediates=False, underWorld=False)

DAGノードツリーを幅優先反復する。

パラメータ:
  • shapes (bool) -- シェイプも含めるかどうか。

  • intermediates (bool) -- インターミディエイトオブジェクトも含めるかどうか。

  • underWorld (bool) -- アンダーワールドノード(カーブオンサーフェース等)も含めるかどうか。

戻り値の型:

yeild DagNode

iterDepthFirst(shapes=False, intermediates=False, underWorld=False)

DAGノードツリーを深さ優先反復する。

パラメータ:
  • shapes (bool) -- シェイプも含めるかどうか。

  • intermediates (bool) -- インターミディエイトオブジェクトも含めるかどうか。

  • underWorld (bool) -- アンダーワールドノード(カーブオンサーフェース等)も含めるかどうか。

戻り値の型:

yeild DagNode

iterPath(end=None, includeStart=True, includeEnd=True, includeTurn=False)

DAGパスをたどるイテレータ。

パラメータ:
  • end -- 終点とする DAG ノード。 省略時はルートまでイテレーションする。

  • includeStart (int) --

    始点ノードを含めるかどうか。

    上昇のみ(始点が終点の子孫)の場合は、 さらに includeTurn も True である必要がある。

  • includeEnd (int) --

    終点ノードを含めるかどうか。

    下降のみ(始点が終点の先祖)の場合は、 さらに includeTurn も True である必要がある。

    終点省略時はこの指定は無視され、シーン上の最上位ノードまで常に含める。

  • includeTurn (bool) --

    上昇から下降への折り返し点を含めるかどうか。

    折り返し点とは、イテレーション中の最上位に位置するノードのことで、 commonAncestor で取得できるものと同じく、始点と終点の共通の先祖である。

    下降のみ(始点が終点の先祖)の場合の始点や 上昇のみ(始点が終点の子孫)の場合の終点は、 始点や終点であると同時に折り返し点でもあるという扱いになる。 それらは、includeStart か includeEnd に加えて includeTurn も True でないと取得されない。

戻り値:

yield (DagNode, int)

整数値は次の値をとり、辿っている方向を示す。

  • 0 - 下降。

  • 1 - 上昇。

  • 2 - 上昇から下降への折り返し点(イテレーション中の最上位点)。

注釈

終点ノード空間の始点ノードのローカルマトリックス配列を得る場合、 デフォルト設定で使用し、 返される整数値が 0 なら inverseMatrix、1 なら matrix を参照すれば良い。

setParent(parent=None, r=False, add=False, avoidJointShear=False, unmaintainIS=False)

親ノードを変更する。

パラメータ:
  • parent -- 親の Transform や名前。省略すればペアレント解除。

  • r (bool) -- 現在のローカル変換を維持するかどうか。 デフォルトではワールド空間で維持される。

  • add (bool) -- 移動ではなくパスを追加する(インスタンス)。

  • avoidJointShear (bool) -- このノードが joint で、ワールド姿勢の維持のために shear が必要な場合に、その使用を避けるための transform が 追加されるようにする。 これは本来の Maya の挙動だが、このメソッドのデフォルトでは joint の shear を使用することで transform を追加しない。

  • unmaintainIS (bool) -- このノードが joint の場合に inverseScale 接続・切断の 保守をしない。

警告

2019 全てと 2020.0 では、joint の shear は機能しないため、 avoidJointShear=True を指定しないと姿勢を維持できない場合がある。 この問題は 2020.1 以降はバグとして修正されている。

show()

visibility アトリビュートを True にする。