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