dA-tools.com

HOME > AfterFx > expression > 実践 > トリガー

トリガー

エクスプレッションのキッカケ

  • ここまで見てきたグラフはいずれもコンポジットの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以降はマーカー番号でマーカーにアクセス出来ません。

  • 1,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を比較して揺れを発生しています。
  • 恐竜の歩きに合わせて画面動を付ける時など、マーカーを移動させて簡単にブレのきっかけをコントロールすることができます。
  • 揺れは減衰グラフを使っています。LinkIcon波の合成

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 は不透明度以外はレイヤーと同じプロパティを持っているので、様々なトリガー条件を発生させることが出来ます。