2007年9月17日月曜日

AfterEffectsエクスプレッション講座 その11(ゆらゆらした動きを与える)

平面にゆらゆらした動きを与える。(三角関数を使う)

三角関数を用いたコードの第2弾です。今度は位置に使って見ましょう。
次のコードを位置のエクスプレションフィールドに入力してください。
(コンポとレイヤーは自由に設定してください。)

h = 10 ; 
yh = this_comp.height/2 ;
t = 3 ;
r = 360/t;
d = degrees_to_radians(time*r-90);
[position[0],Math.sin(d)*h+yh]

いかがでしょうか?ここまで読み進めてくるとなんとなくコードの意味
も分かるようになってくると思います。まず、

h = 10 ; 

はゆれ幅をピクセル数で指定しています。

yh = this_comp.height/2 ;

見た目は違いますが、これも変数yhに値を保存しています。
this_comp.heightは現在のコンポの高さを取得してくれます。
このようにある値を取得してくることをプログラムの世界で
「返す」といいます。(今の場合「this_comp.heightは現在の
コンポの高さを返す」のように使われます。)
さらに高さを2で割ることでゆれの中心を求めています。

t = 3 ;

は前回同様、ゆれのループする時間指定です。

r = 360/t;
d = degrees_to_radians(time*r-90);

の部分は前回と全く同じです。

[position[0],Math.sin(d)*h+yh]

コードの本体です。position[0]はx座標、Math.sin(d)*h+yhは
y座標でy座標のみ三角関数を用いてるので縦にゆらゆらする
という仕組みです。

0 件のコメント: