次の手順では、デフォルト球体を作成してから、再生時にアニメーション時間が経過するに従ってスケール Y アトリビュートを増加させるエクスプレッションを記述します。
1 つのシーンに対して複数のエクスプレッションを記述する場合には、エクスプレッションそれぞれに名前を付けておくと、あとで修正するときに目的のエクスプレッションが検索しやすくなります。名前を指定しなかった場合、expression1 のようなデフォルト名が付けられます。
アトリビュート(Attributes)リストには、Ball のアトリビュートのうち、キー設定可でロックされていないアトリビュート、つまりエクスプレッションを使ってアニメートする頻度の高いアトリビュートの一覧が表示されます。スクロール バーを使用すると、リスト全体を確認することができます。
上記のとおり、すべての文字を正確に入力してください。MEL では、大文字と小文字が区別されます。セミコロン(;)はエクスプレッション ステートメントの終わりを表します。エクスプレッションのステートメントの末尾には、必ずセミコロンを付けてください。
エクスプレッションのステートメントが誤っている場合や、入力ミスがある場合は、スクリプト エディタ内とコマンド ラインの応答領域にエラー メッセージが表示されます。
エクスプレッションをコンパイルすると、構文エラーのチェック後、開始時間に戻ったときやアニメーションを再生したときに Maya で実行できる形式にエクスプレッションが変換されます。同時に、このボタンをクリックすると、カレント フレームのエクスプレッションが実行されます。
このエクスプレッションは、Ball のスケール Y アトリビュートを time + 1 の値に設定します。Ball.scaleY はアトリビュートのフル ネームです。ピリオド(.)は、オブジェクト名とアトリビュート名を区切るセパレータ文字です。オブジェクト名とアトリビュート名を入力するときは、エクスプレッション エディタのオブジェクト(Objects)とアトリビュート リストに表示されるとおりのスペルで、大文字と小文字を使い分ける必要があることに注意してください。
time という単語は一般的に使用される定義済み変数のことで、アニメーションの再生に従って更新されます。time には、開始フレームからカレント フレームまでの経過秒数が格納されます。この値はフレームの増加に伴って増加します。
デフォルトのアニメーション再生レート(24 フレーム/秒)では、time 変数には次の値が格納されます(値は小数点以下 4 桁に四捨五入)。
電卓を使用してこの数式を計算すれば、アニメーションの経過時間は簡単に計算できます。
たとえば、フレーム レートが 24 フレーム/秒で、アニメーションがフレーム 1 の場合、経過時間は 1 を 24 で割った値、つまり 0.0417 です。フレーム 6 までの経過時間は 6/24 = 0.25 秒です。フレーム レートが 30 フレーム/秒であれば、計算される値が違ってくるので注意してください。
フレーム | 時間(秒) | 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)を表示してから、目的のフレームでアニメーションを停止します。アニメーションを停止すると、チャンネル ボックスの値が更新されます。
このスケーリングはスムースに行われますが、これはアニメーションの再生中、短い時間間隔でかつ同期的にジオメトリが伸長するからです。