エクスプレッション エディタ(Expression Editor)にエクスプレッションを入力した後、作成(Create)ボタンまたは編集(Edit)ボタンをクリックすると、エクスプレッションがコンパイルされます。エクスプレッションをコンパイルすると、構文(ステートメント)エラーがチェックされ、アニメーションの巻き戻しや再生を実行できる形式に変換されます。その後、コンパイルされたエクスプレッションが現在のフレームの値に基づいて実行されます。
既定では、エクスプレッションは現在のアニメーション時間またはフレームが変更された場合も実行されます。たとえば、アニメーションを巻き戻しまたは再生する場合、エクスプレッションが実行されます。エクスプレッションはアニメーション時間またはフレーム番号が変わるたびに 1 回ずつ実行されます。 この既定の評価を停止するには、エクスプレッション エディタでエクスプレッション ノード の評価モードをオンデマンド(On Demand)に設定します。
エクスプレッションで直接参照されるアトリビュートの値が変更された場合も、エクスプレッションは実行されます。たとえば、球体の 移動 X(Translate X) アトリビュートを別のアトリビュートに代入するエクスプレッションが存在する場合に、その球体を X 軸方向に沿って動かすと、球体の動きに伴ってエクスプレッションが実行されます。
pCube1.tx = pSphere1.tx * 3.0
パーティクル シェイプ ノード以外のオブジェクトを選択すると、エクスプレッション エディタ(Expression Editor)の評価(Evaluation)プルダウン メニューを使用して、エクスプレッションをいつ実行するか設定することができます(パーティクル シェイプ ノードを選択した場合は、エクスプレッション エディタ(Expression Editor)によりこのメニューはグレー表示になります。パーティクルのシェイプ ノードのエクスプレッションの詳細については、「パーティクル エクスプレッションの概要」を参照してください)。
エクスプレッションを記述する際、オブジェクトのアトリビュートは直接、または MEL を使用してアクセスできます(以下の注を参照)。
直接:
pCube1.tx = pCube2.ty * 3.0
MEL:
setAttr pCube1.tx (`getAttr pCube2.ty`* 3.0)
評価(Evaluation)がオン デマンド(On demand)に設定されていると、エクスプレッションは、エクスプレッションの入力接続が変更された場合(上の例では、pCube2.ty が変更された場合)、またはエクスプレッション エディタ(Expression Editor)の編集(Edit)がクリックされた場合にのみ計算を実行します。評価(Evaluation)が常時(Always)に設定されると、シーンに何の変化がない場合でもフレームを変更するたび評価がトリガされます。
評価(Evaluation)を常時(Always)に設定した場合だけ、時間変更に伴ってエクスプレッションが強制的に評価されます。したがって、インタラクティブ再生(Interactive Playback)中でない限り、シーン ビューでオブジェクトを操作するときに MEL エクスプレッションと常時(Always)に設定した評価(Evaluation)を含むソリューションを使用しても評価は行われません。