移動先: 概要 戻り値 フラグ. Python 例.

概要

cycleCheck( string[] , [all=boolean], [children=boolean], [dag=boolean], [evaluation=boolean], [list=boolean], [parents=boolean], [secondary=boolean], [timeLimit=time])

注意: オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。

cycleCheck は 「元に戻す」が可能、「照会」が可能、「編集」が不可能 です。

このコマンドは、ディペンデンシー グラフのプラグ サイクルを検索します。プラグやノードを選択すると、そのプラグやノードが関連するサイクルを検索します。プラグまたはノードも、引数として渡されます。-all フラグを使用すると、グラフ全体が検索されます。

通常、戻り値はブーリアン型で、指定の項目がサイクルに含まれていたかどうかを示します。-list フラグを使用すると、戻り値はサイクル(選択したプラグやノードが関連する)内のすべてのプラグを示すリストです。

なお、DG コネクションがない場合も、評価サイクルを発生させることは可能です。たとえば、次のような場合が考えられます。

1) 評価時に依存するコネクションを持つノード: 例としては、エクスプレッション ノードが挙げられます。エクスプレッション ノードの実際の参照先は評価時まで不明で、このように評価時に依存するノードは、ノードを評価するコンテキスト(たとえば、タイミング)によって異なる動作をする場合があるからです。このようなコネクションによるサイクルが疑われる場合に最適なサイクル検出方法は、手作業での検証です。

2) DAG 階層によるサイクル: DAG ノードは必ずペアレント化によってコネクトされるため、子の DAG ノードが親ノードの入力に出力をコネクトする場合、関係するプラグも互いに影響を与えあっているときは、サイクルが存在します。DAG に関係するサイクルを検出するには、-dag フラグをコマンド ラインに追加してください。

このコマンドも、いくつかのインスタンスが IK を使用する場合、インスタンス化されたスケルトンに正しくサイクルを記録しないことがあるので注意してください。 厳密にサイクルかどうかを判断するには、記録されたサイクルを自分で調べる必要があります。 評価時のサイクル検査は、不正なサイクルをレポートしません。

戻り値

boolean一般的な場合。
string[]list フラグを使用する場合。

戻り値の型は照会モードでは照会フラグが基になります。

フラグ

all, children, dag, evaluation, list, parents, secondary, timeLimit
ロング ネーム(ショート ネーム) 引数型 プロパティ
all(all) boolean create
セレクション リストの代わりに、サイクルのグラフ全体を検索します 注: 何も選択しない場合は、-all が指定されているとみなされます)。
timeLimit(tl) time create
検索時間を指定の長さに制限します。
evaluation(e) boolean createquery
グラフの評価中のサイクル検出をオンまたはオフにします。
secondary(s) boolean create
指定のプラグだけでなく関連プラグのサイクルも検索します。デフォルト値は、「-all」の場合は「オン」、その他の場合は「オフ」です。
children(c) boolean create
子のサイクルは考慮せず、指定したプラグのみを考慮します。
parents(p) boolean create
親のサイクルは考慮せず、指定したプラグのみを考慮します。
dag(dag) boolean create
DAG のリレーションシップによるサイクルも検索します。DAG ノードごとの子のペアレント化コネクションは、サイクルの検索時にも考慮されます。
list(l) boolean create
1 つまたは複数のサイクルに含まれるすべてのプラグを返します。指定しない場合は、サイクルが存在するかどうかを示すブーリアン値を返します。

: コマンドの作成モードで使用可能なフラグ : コマンドの編集モードで使用可能なフラグ
: コマンドの照会モードで使用可能なフラグ : タプルまたはリストとして渡された複数の引数を持てるフラグ

Python 例

import maya.cmds as cmds

# Print a message if xNode.tx is in a cycle.
cmds.createNode( 'transform', n='xNode' )
if cmds.cycleCheck('xNode.tx') > 0:
  print('xNode.tx is in a cycle')

# Get the list of plugs in a cycle with xNode.ty
cmds.connectAttr( 'xNode.tx', 'xNode.ty' )
cmds.connectAttr( 'xNode.ty', 'xNode.tx' )
cycles = cmds.cycleCheck()

# Print a message if there are any cycles in the graph.
if cmds.cycleCheck(all=True, tl='10sec') > 0:
  print("Your graph has a cycle.")
else:
  print("Your graph probably does not have a cycle")

# List all cycles involving the DG and DAG hierarchy.
cmds.cycleCheck(all=True,dag=True,l=True )