エンジンのピストンが translateY の 2.0 から -2.0 の間隔を、 60 frame の周期で往復運動をする場合のアニメーションを、 三角関数を使って表してみましょう。
このアニメーションをグラフにすると以下のようになります。
このグラフを三角関数で表したいときには、 まず、形の似ている三角関数のグラフをさがします。 この場合には cos(X) のグラフの形が同じであることに気がつきます。
2 つのグラフを 1 つにして比べてみましょう。 (cos のグラフと目的のグラフです)
上の 2 つのグラフの違いは縦軸と横軸の範囲です。 アニメーションのグラフは frame (横軸)は 0 から 60 まで、 translateY (横軸)は -2.0 から 2.0、 cos のグラフは 横軸が 0 から 360、 縦軸が -1.0 から 1.0 になっています。
これから 2 つの図の縦軸と横軸の範囲を合わせてゆきます。
まず、縦軸を合わせるために cos の図を縦に 2 倍のスケールをかけます。
縦軸の最大値と最小値に注意してください。
次に横軸を合わせるために、角度を 6 倍します。
(360/60 = 6)
すると、cos の周期が 1/6 になります。
これで 2 つのグラフが同じになったので、 2 * cos(6 * X) が求める式になります。
実際に上記の式で望んだアニメーションが実行できるかどうか、 Maya 上で確かめてみましょう。
上の Expression の式において、 cos ではなく cosd という関数が使われています。
これはなぜかというと
Maya の cos 関数では引数の単位が、
円の 1 周を 2 * 円周率(π = 3.14...)で表すラジアンになっているので、
その代わりに今までの説明で使ってきた
弧度法(円の 1 周 360 度)を単位とする関数である cosd を使っているのです。
もし、上の Expression を cos 関数で表したければ、
弧度法をラジアンに変換する関数 deg_to_rad を使います。
具体的には以下のような式を
Expression: に打ち込みます。
sin 関数の場合も、同じ理由で sind を使用します。