CGらぼ

広く浅くCGを勉強していきます。

AfterEffectsで追従するアニメーションを作ってみた!!

今回制作したものはこちら!!

左の赤い正方形に追従するようExpressionを組みました。


AfterEffects Expression - YouTube

 

今回使用したものは

ValueAtTime

if else

slider

check box

 

valueAtTimeは追従させるために

if elseは条件分けさせるため

slider , check boxはExpression内の数値を制御するために使用しました。

 

では早速解説を始めます!!

 

①正方形のアンカーポイントを上辺に移動させます。

(アンカーポイントを移動させる際に便利なScriptを見つけたのでリンクをはっておきます

Move Anchor Point | BatchFrame.com

 

②3Dレイヤーにし、X軸に90度回転させます。。。

が、3Dの為90度回転させても隠れずに見えてしまいます。

f:id:foreverLab:20150303235556j:plain

 

そこで不透明度にExpressionを書きます。

記述内容は

もしx軸回転が90度のときは不透明度0その他は不透明度100にしてとう内容

 

もし○○のときは△△して、××のときは□□

そう条件分けしないといけないのでif elseを使用します。

 

if(thisLayer.transform.xRotation == 90){
0
}else{
100
};

 

-90度のときも不透明度を0にしたい場合『||』で条件を増やしてください

 

if(thisLayer.transform.xRotation == 90)||(thisLayer.transform.xRotation == -90){
0;
}else{
100
};

 

※条件を追加する場合は二重括弧でif {の間を囲んでください。

ブログ上では二重括弧で囲むと表示されなくなってしまいましたので一つの括弧で閉じてます。

 

コンポジション内にコントローラー用レイヤーを作成し、エフェクト > エクスプレッション制御 >スライダー制御、チェックボックス制御を適用する。

f:id:foreverLab:20150304003812j:plain

 

④追加したエフェクト名を任意の名前に書き換える。

自分はエラーを避ける為に日本語ではなく英語で書き換えます

チェックボックス制御の名前を『apply』

スライダー制御の名前を『Time_Lag』

f:id:foreverLab:20150304004542j:plain

 

⑤赤い正方形レイヤーにキーフレームを打ちます。

今回は、X軸回転と位置にキーを打ってます。

 

⑥左から二番目の正方形レイヤーを選択

赤い正方形レイヤーに追従するようにExpressionを書きます。

 

内容は

もしパラメーターレイヤーのapplyがオンであった場合Time_Lagの数値分時間差で追従するその他はapplyがオフだったらタイムラグなしで追従。(X軸回転)

 

A = thisComp.layer("Parameter").effect("apply")(1);
T = thisComp.layer("Parameter").effect("Time_Lag")(1);
if(A > 0)
{
thisComp.layer(index+1).transform.xRotation.value_at_time(time-T);
} else {
thisComp.layer(index+1).transform.xRotation;
};

 

左から二番目の正方形レイヤーを選択

赤い正方形レイヤーに追従するようにExpressionを書きます。(位置)

 

T = thisComp.layer("Parameter").effect("Time_Lag")(1);
pY = thisComp.layer("1").transform.position.valueAtTime(time - T)[1];
[position[0], pY, position[2]]

 

 

 

 

 

エクスプレッション制御って動作が軽いと思っていたけど、

レイヤー数が多くなるとメッチャ重くなる( ꈨຶ ˙̫̮ ꈨຶ )

30,40レイヤーを越えたあたりからバカアフターさん並に重くなった。

 

自分のエクスプレッションの組み方に問題があるのかな!?