単一のアトリビュートを制御するエクスプレッションを作成する

 
 
 

次の手順では、既定の球を作成してから、再生時にアニメーション時間が経過するに従ってスケール Y (Scale Y)アトリビュートを増加させるエクスプレッションを記述します。

エクスプレッションを作成するには

  1. レッスンの準備で説明されている手順を完了していることを確認してください。
  2. NURBS かポリゴン球を作成します。アトリビュート エディタ(Attribute Editor)で transform ノード(nurbsSphere1 または pSphere1)をクリックします。
  3. スケール X、スケール Y、スケール Z の値が 1 であることを確認します。この球の名前を Ball に変更します (大文字と小文字は区別されます)。
  4. Ball が選択されている状態で、ウィンドウ > アニメーション エディタ >エクスプレッション エディタ(Window > Animation Editors > Expression Editor)を選択します。
  5. エクスプレッション名(Expression Name)フィールドに、ScaleBallHeight など、必要に応じてエクスプレッション名を指定します。

    1 つのシーンに対して複数のエクスプレッションを記述する場合には、エクスプレッションそれぞれに名前を付けておくと、あとで修正するときに目的のエクスプレッションが検索しやすくなります。名前を指定しなかった場合、expression1 のような既定名が付けられます。

    アトリビュート(Attributes)リストには、Ball のアトリビュートのうち、キー設定可でロックされていないアトリビュート、つまりエクスプレッションを使ってアニメートする頻度の高いアトリビュートの一覧が表示されます。スクロール バーを使用すると、リスト全体を確認することができます。

  6. エクスプレッション(Expression)テキスト領域に次のエクスプレッションを入力します。

    上記のとおり、すべての文字を正確に入力してください。MEL では、大文字と小文字が区別されます。セミコロン(;)はエクスプレッション ステートメントの終わりを表します。エクスプレッションのステートメントの末尾には、必ずセミコロンを付けてください。

    エクスプレッションのステートメントが誤っている場合や、入力ミスがある場合は、スクリプト エディタ(Script Editor)内とコマンド ライン(Command Line)の応答領域にエラー メッセージが表示されます。

  7. 作成(Create)をクリックして、エクスプレッションをコンパイルします。

    エクスプレッションをコンパイルすると、構文エラーのチェック後、開始時間に戻ったときやアニメーションを再生したときに Maya で実行できる形式にエクスプレッションが変換されます。同時に、作成をクリックすると、現在フレームのエクスプレッションが実行されます。

    このエクスプレッションは、Ball のスケール Y アトリビュートを time + 1 の値に設定します。Ball.scaleY はアトリビュートのフル ネームです。ピリオド(.)は、オブジェクト名とアトリビュート名を区切るセパレータ文字です。オブジェクト名とアトリビュート名を入力するときは、エクスプレッション エディタ(Expression Editor)オブジェクト(Objects)アトリビュート(Attributes)リストに表示されるとおりのスペルで、大文字と小文字を使い分ける必要があることに注意してください。

    time という単語は一般的に使用される定義済み変数のことで、アニメーションの再生に従って更新されます。time には、開始フレームから現在フレームまでの経過秒数が格納されます。この値はフレームの増加に伴って増加します。

    既定のアニメーション再生レート(24 フレーム/秒)では、time 変数には次の値が格納されます(値は小数点以下 4 桁に四捨五入)。

    フレーム 時間(秒)

    0

    0

    1

    0.0417

    2

    0.0833

    3

    0.125

    24

    1.0

    240

    10.0

    電卓を使用してこの数式を計算すれば、アニメーションの経過時間は簡単に計算できます。

    たとえば、フレーム レートが 24 フレーム/秒で、アニメーションがフレーム 1 の場合、経過時間は 1 を 24 で割った値、つまり 0.0417 です。フレーム 6 までの経過時間は 6/24 = 0.25 秒です。フレーム レートが 30 フレーム/秒であれば、計算される値が違ってくるので注意してください。

  8. 開始時間に移動して、アニメーションを再生してください。時間が経過するに従って、Ball のスケール Y アトリビュートが増加します。
    フレーム 時間(秒) Ball.scaleY (time + 1)

    0

    0

    1

    1

    0.0417

    1.0417

    2

    0.0833

    1.0833

    3

    0.125

    1.125

    24

    1.0

    2.0

    240

    10.0

    11.0

    Maya により、各フレームごとにエクスプレッションが実行されます。この結果、Y 軸に沿ってオブジェクトのサイズがスケールされ、再生中にこのオブジェクトの高さが高くなります。

    特定のフレームにおける Ball のスケール Y アトリビュートを表示するには、Ball を選択し、チャネル ボックス(Channel Box)を表示してから、目的のフレームでアニメーションを停止します。アニメーションを停止すると、チャネル ボックス(Channel Box)の値が更新されます。

    このスケーリングはスムーズに行われますが、これはアニメーションの再生中、短い時間間隔でかつ同期的にジオメトリが伸長するからです。

  9. エクスプレッション エディタ(Expression Editor)を閉じます。