エクスプレッションを記述する場合、アニメーションが再生されるに従ってアトリビュート値が予想通りに増加するようにするには、通常、アトリビュートに組み込みの time 変数を使用します。また、Ball の scaleY と scaleZ アトリビュートが scaleX の値と等しくなるように設定するなど、あるアトリビュートの値を別のアトリビュートの値とリンクしておくと便利です。
エクスプレッションで 1 つのオブジェクトや複数のオブジェクトにある複数のオブジェクトを制御することができます。また、アトリビュートやオブジェクトごとに単一のエクスプレッションを記述することも可能です。
このレッスンでは説明していませんが、一定の数値から time を引くことにより、再生中にアトリビュートの値を減らすことができます。例:
Ball.scaleY = 3 - time;
これにより、再生するに従って Ball のスケール Y(Scale Y)アトリビュートの値は 3 から減少していきます。
定義済み time 変数を使用している場合は、アニメーションの開始フレーム値に注意してください。この章のレッスンでは、開始時間として 0 を使用しています。実際の作業では、開始時間が 1 のアニメーションを作成する場合もあるでしょう。1 秒間に 24 フレーム再生される Maya のデフォルトのフレーム レートでは、フレーム 1 の経過時間は 0.0417 です。
この小さな時間差により、開始時間にフレーム 1 を指定して、この章で説明したレッスンを学習すると、手順や指示の数が増えます。たとえば、開始時間を 1 に指定して、次のエクスプレッションを使用するとします。
Ball.scaleY = time + 1;
開始時間に移動すると、Ball のスケール Y アトリビュートの初期値が time + 1 = 0.0417 + 1、つまり 1.0417 に設定されます。Ball のスケール Y アトリビュートを作成した時点でこの値は 1 だったので、開始時間に移動したときに、スケール Y は最初の値よりも 0.0417 大きい値に設定されることになります。
この差は、Ball のスケール Y が、アニメーションの最初のフレームにおけるスケール X(scale X)およびスケール Z(scale Z)アトリビュートよりも大きいことを意味します。この例での差分はたいしたことはありませんが、別の例ではもっと大きな差分となる場合もあります。
アニメーションをフレーム 1 から開始して、このサンプルと同じ結果を得るためには、スケール Y アトリビュートから 0.0417 を引く必要があります。
Ball.scaleY = (time - 0.0417) + 1;
開始時間に移動すると、Ball のスケール Y 値は(0.0417 - 0.0417)+ 1 = 1(スケール Y アトリビュートの元の値)に設定されます。