エクスプレッションが実行される頻度
 
 
 

エクスプレッション エディタ(Expression Editor)にエクスプレッションを入力した後、作成(Create)ボタンまたは編集(Edit)ボタンをクリックすると、エクスプレッションがコンパイルされます。エクスプレッションをコンパイルすると、構文(ステートメント)エラーがチェックされ、アニメーションの巻き戻しや再生を実行できる形式に変換されます。その後、コンパイルされたエクスプレッションがカレント フレームの値に基づいて実行されます。

エクスプレッションは、アニメーション時間またはフレーム番号が変わるたびに実行されます。たとえば、アニメーションを巻き戻しまたは再生する場合、エクスプレッションが実行されます。エクスプレッションはアニメーション時間またはフレーム番号が変わるたびに 1 回ずつ実行されます。

また、Maya によりエクスプレッション内のアトリビュートが使用された場合にも実行されます。たとえば、球体の 移動 X(Translate X) アトリビュートを別のアトリビュートに代入するエクスプレッションが存在する場合に、その球体を X 軸方向に沿って動かすと、球体の動きに伴ってエクスプレッションが実行されます。これは球体のアトリビュートを直接参照した場合のみに有効です。

評価

パーティクル シェイプ ノード以外のオブジェクトを選択すると、エクスプレッション エディタ(Expression Editor)評価(Evaluation)プルダウン メニューを使用して、エクスプレッションをいつ実行するか設定することができます(パーティクル シェイプ ノードを選択した場合は、エクスプレッション エディタ(Expression Editor)によりこのメニューはグレー表示になります。パーティクル シェイプ ノードのエクスプレッションの詳細については、 パーティクル エクスプレッションを参照してください)。

エクスプレッションを記述する際、オブジェクトのアトリビュートは直接、または MEL を使用してアクセスできます。

直接:

pCube1.tx = pCube2.ty * 3.0

MEL:

setAttr pCube1.tx (‘getAttr pCube2.ty’ * 3.0)

オブジェクトのアトリビュートに直接アクセスすると、Maya はこれらのアトリビュートのノード間の関連付けを行います。つまり、Maya で指示されたグラフ評価プロセスにより、pCube2.ty の値の変化が自動的に認識され、評価(Evaluation)オプションが常時(Always)に設定されているかどうかに関係なく、pCube1.tx はダーティ(再計算が必要)とマークされます。

オブジェクトのアトリビュートに MEL スクリプトを介してアクセスすると、Maya はノードの該当アトリビュートのコネクションの関連付けを行わないため、直接グラフの評価プロセスは無視されます。pCube1.tx の値を常に最新にするには、評価(Evaluation)オプションを常時(Always)に設定し、必要に応じて評価がトリガされるようにする必要があります。

場合によっては、評価(Evaluation)オンデマンド(On demand)に設定して冗長なエクスプレッション実行を減少させて Maya の操作を速めます。このオプションを利用するには、エクスプレッション実行の詳細を良く理解している必要があります。

評価(Evaluation)オン デマンド(On demand)に設定されていると、エクスプレッションは、エクスプレッションのインプット コネクションが変更(上の例では、pCube2.ty が変更)、またはエクスプレッション エディタ(Expression Editor)編集(Edit)がクリックされた場合にのみ計算を実行します。評価(Evaluation)常時(Always)に設定されると、シーンに何の変化がない場合でもフレームを変更するたび評価がトリガされます。

注:評価(Evaluation)常時(Always)に設定した場合だけ、時間変更にともなうエクスプレッションが評価されます。したがって、インタラクティブ再生(Interactive Playback)中でない限り、シーン ビューでオブジェクトを操作するときに MEL エクスプレッションと常時(Always)に設定した評価(Evaluation)を含むソリューションを使用しても評価は行われません。