dA-tools.com

HOME > AfterFx > expression > 実例 > ZoomLenzの加速

 Zoom Lenz の加速

Sample: linear( ) / Math.log/ Math.pow

Zoomの問題:

  • 2DでカメラのTU・TBをする時にリニアな補間をすると[movie:A]のように手前はゆっくりで奥が早い不自然なカメラワークになってしまいます。というのもレンズを使用した光学的なズームはリニアではないからです。レンズズームをシミュレートして自然な感じにするにはスケールの変化を指数にする必要があります。
  • AfterFxのプロ版にはこの問題に対処するために「キーフレーム補助」に「指数スケール」があります。しかしこれはすべてのフレームにキーを打ってしまうので修正が面倒です。そこでこの指数スケールをエクスプレッションでやってみようと思います。(結果は[movie:B])

 設定

  • レイヤーのzoom Startの[Scale]を決めてキーフレームを打ちます。
  • zoom Endの[Scale]を決めてキーフレームを打ちます。これでリニア補間のアニメーションが完成。
  • [Scale]に次のエクスプレッションを書きます。

k1=1; //zoomのスタートキーインデックス *1
k2=k1+1;

if ( key(k1).time <= time && key(k2).time > time ){
  stScale= key(k1)[0]; //キーのスケールを取得
  endScale = key(k2)[0];

  if(stScale==0) stScale=0.1; //ゼロ回避
  if(endScale==0) endScael=0.1;

  x = Math.log(endScale) / Math.log(stScale);
  exp = linear(time, key(k1).time, key(k2).time, 1, x); //*2
  sc = Math.pow(stScale, exp);
  [sc, sc];
}
else{
 thisProperty;  //zoomしていないときは元の値
}

*1
: 変数 k1 はZoomを始めるキーのインデックス番号です。キーが2つ以上ある場合はその数字に変更します。
*2
: 補間はease, easIn , easeOutを使うことも出来ます。(下図)

補間を[ linear ]から [ ease ]に変更 

expoGraph.jpg

  • [ A ]はエクスプレッションなし
  • [ B ]は上のエクスプレッションの結果
  • [ C ]は補間を[ ease ]に変更した結果です。
  • 「キーフレーム補助」の「指数スケール」では[ C ]のカーブを作ることはできません。