AfterEffectsエクスプレッション講座 その13(地球を回る月を作成する)
地球を回る月を作成する。(三角関数を使う)
前回のサークル運動の応用編です。
地球の動きは前回のコードを使えばOKですが、
ポイントになるのは月が地球と共に移動しながら
地球の周りをぐるぐる回る、衛星の動きです。
解決策は地球の「位置」を取得して、それを月の
「サークル運動の中心にする」ことです。
以下のサンプル使用します。「継続時間」を12秒に
地球レイヤーを上、月レイヤーを下に配置して
「位置」にエクスプレッションを適用します。
地球レイヤー用エクスプレッション
r = 100 ;
w = this_comp.width/2 ;
h = this_comp.height/2 ;
t = 12 ;
d = 360/t;
ra = degrees_to_radians(time*d-90);
[Math.cos(ra)*r+w,Math.sin(ra)*r+h]
前回のコードを使い回します。
t = 12 ;で回転の周期を12秒に変更していますが
それ以外は変更していません。
月レイヤー用エクスプレッション
r = this_comp.layer(index-1) .width ;
w = this_comp.layer(index-1).position[0] ;
h = this_comp.layer(index-1).position[1];
t = 6 ;//fade time
d = 360/t;
ra = degrees_to_radians(time*d-90);
[Math.cos(ra)*r+w,Math.sin(ra)*r+h]
地球レイヤーの幅から月レイヤーの回転の半径を取得
r = this_comp.layer(index-1) .width ;
地球レイヤーの「位置X」から月レイヤーの回転の中心の
X座標を取得
w = this_comp.layer(index-1).position[0] ;
地球レイヤーの「位置Y」から月レイヤーの回転の中心の
Y座標を取得
h = this_comp.layer(index-1).position[1];
地球レイヤーより若干早めに回転周期を設定
t = 6 ;
以下地球レイヤーと同じ。
いかがでしょうか?レイヤー同士を連携させるのは
エクスプレッションの最も得意とするところでもあり、
変数をかえるだけでガンガン使い回していくことが
できます。
今回のサンプルコードは地球レイヤーを参照するのに
「index-1」を使用しているので月レイヤーを「ctl+D」
で複製して、地球の動きや地球と月の回転周期を変えて
みると面白い効果を得ることができます。
是非試してみてください。