dA-tools.com

 アンチ・フリッカー

 

Sample:nearestKey()/key.value/条件演算子

更新 June 25/2011
    • 大判作画のキャラの走り・歩きなどにカメラを付けて追った場合に、図の上段のようなフリッカーが出ます。それを下段のように修正する方法です。
    • なお、例ではどちらも2kの歩きで、BG引きが1Kです。

 フリッカーの原因と対策:

    • 2K(又は3K)作画と1Kのカメラ移動により画面内でキャラが1K毎にPan方向に前後移動する為、フリッカーになります。
    • 対処方法としては作画の2K目でタップ位置をPanの方向に移動させて画面内でキャラを同じ位置にキープするようにします。ただし次のフレームではタップを元の位置に戻さなくてはなりません。この1K毎の移動を手付けでやるのは手間がかかりすぎます。

 ポイント

  • 現在のタイムマーカーの前後のキーを取得するためにnearestKey()を使います。

 設定

    • キャラの移動方向と移動量を測るためにNullを追加します。
    • 原画のポイント(足、腰)にNullをトラッキングしてKeyを打ちます。つまりNullをキャラの動きと同じ方向、同じ距離だけ移動させます。
    • Nullの「位置」に次の式を書きます。

if ((time > key(1).time) && (time < key(numKeys).time) )
//最初と最後のキーフレームの間だけexpressionを適用
{
a=position.nearestKey(time);
(time-a.time>=0) ? P1=a.index: P1=a.index-1
b=position;
diff=b.key(P1+1).value-b.key(P1).value; 
 
//KeyFrame間のキャラの移動ベクトル
koma=b.key(P1+1).time*24-b.key(P1).time*24;
 
//KeyFrame間隔=Fr数
(time*24%2)*(diff/koma)  
//1K毎の01フリップ * 1Kの移動幅
} else [0,0];

  • これでNullが1コマごとにぴくぴく動くようになっていますね。
  • 最後にフリッカーを除去したいレイヤーをこのNullにペアレントします。

 

このExpは作画が2K打ちの場合です。
動画のつめがきつい時は必要に応じてKeyを増やします。

 

スケールやローテーションなども考慮した対処法はこちらのLinkIcon「ねこまたや」さんにも解説があります。 TOP>雑貨や>AEエクスプレッション>アンチフリッカー