トリガー
エクスプレッションのキッカケ
- ここまで見てきたグラフはいずれもコンポジットの0フレームから最後まで続いています。しかし実際には3秒目までは何も変化させたくないとか、アニメーションのきっかけを試行錯誤しながら決めたい、など柔軟性を持たせたい場合が多々あります。
- アクションを起こさせる、又は終わらせるきっかけを「トリガー」と個人的には呼んでいます。エクスプレッションにトリガーを加えることでインタラクティブにアニメートすることが出来るようになります。
- トリガーの要素として使いやすいのがタイム・マーカーとレイヤー・マーカーです。
タイムマーカー
- これはマーカーの位置で2つのレイヤーの不透明度のタイミングを調整するエクスプレッションの例です。
- グリーンレイヤーの不透明度に次のエクスプレッションを書くと、marker1からFade.in が始まり、marker2で終わります。マーカーを移動することでFadeの位置や長さをコントロールすることが出来ます。
marker1=thisComp.marker(1);
marker2=thisComp.marker(2);
linear(time,marker1,marker2,0,100)
- オレンジのレイヤーには3行目を次の式に代えて記述
linear(time,marker1,marker2,100,0)
CS3以降はマーカー番号でマーカーにアクセス出来ません。
- 2行目を次の記述に変更する必要があります。
marker1=thisComp.marker.key(1).time;
marker2=thisComp.marker.key(2).time;
レイヤー・マーカー
レイヤーマーカーはレイヤーごとのトリガーにすることが出来ます。
例1:マーカーの位置からSin波が発生
- レイヤーマーカーに"Trigger"と名づけました。下のエクスプレッションを「位置」のプロパティに書くと、マーカーがあるフレームから振幅50pixのSin波が発生し、レイヤーはy軸方向に振幅します。
tr=marker.key("Trigger").time;
time<tr? a=0:a=50;
y=Math.sin((time-tr)*Math.PI*2)*a;
[position[0],y]
例2:マーカーの位置で振動
- マーカーのtimeと現在のtimeを比較して揺れを発生しています。
- 恐竜の歩きに合わせて画面動を付ける時など、マーカーを移動させて簡単にブレのきっかけをコントロールすることができます。
- 揺れは減衰グラフを使っています。波の合成
keyN = 0; shiftTime=0;
if (marker.numKeys){
keyN = marker.nearestKey(time).index;
if (marker.key(keyN).time > time) keyN--;
}
if (keyN > 0) shiftTime = time - marker.key(keyN).time;
vel=50; amp = 50; decay = 2.0;
y=amp*Math.sin(vel*shiftTime)/Math.exp(decay*shiftTime);
position+[0,y]
その他のトリガー要素
- Null は不透明度以外はレイヤーと同じプロパティを持っているので、様々なトリガー条件を発生させることが出来ます。