dA-tools.com

 Pan + TU

Sample:linear( ) / スライダー制御

  • ベジェ曲線を同じカーブにする

 Pan+TUの問題:

    • カメラのPan+TU(=位置+スケール)などでキーをベジェ補間にしてツメを調整したときに[位置]と[Scale]に同じカーブが作れずに下のようになってしまうことがあります。特に尺が長い場合や極端にツメたい時にこんな問題にぶつかります。それに対処する方法です。

 ポイント

    • プロパティ毎にカーブを作らずに、1つのベジェカーブを複数のプロパティが参照するようにします。

 設定

    • 1,レイヤーのスタート[位置]と[Scale]にキーフレームを打ちます。
    • 2,ラスト[位置]と[Scale]にもキーフレームを打ちます。これでリニア補間のアニメーションが完成。
    • 3,制御の元になるカーブを作る為に[スライダー]を適用します。
    • 4,Pan+TUのスタートとラストポイントにスライダーのキーフレームを打ちます。
    • 5,[位置]と[Scale]に下のエクスプレッションを記述します。
    • 6,スライダーのベジェ曲線で動きを調整します。

t=effect("スライダ制御")("スライダ");
tx=linear(t, 0, 100, thisProperty.key(1).time, thisProperty.key(2).time); //txからここまで一行
valueAtTime(tx)

 解説

    • まず、スライダー値(0-100)を変数 t に代入します。この値(ベジェカーブ)が [位置]と[Scale]をコントロールします。
    • linear( ) 関数でスライダーの値を当該プロパティのキーフレーム(1)と(2)の間にマッピングします。変数txにはtimeが入ります。キーフレームが多い場合は適宜番号を修正してください。
    • thisProperty.key(#).time でキーの値を取得しています。
    • valueAtTimeでキーフレーム間のどの時間のプロパティにするか指定しています。スライダーを動かしてみるとレイヤーの[位置]と[Scale]が変化するのがわかります。
    • スライダーにはいくつキーを打っても構いませんが(0-100)以外の値は無視されます。
    • スライダーの値で動きを決めているので[位置]と[Scale]の元のキーを左右に移動させても影響ありあせん。逆にスライダーのキーを左右に移動するとスタート、エンドの時間が変わります。
    • ※位置のカーブを参照してスケールのを決める方法も考えられますが、このエクスプレッションの方が簡潔だし、[位置]と[Scale]以外のプロパティにもこのまま適用出来ます。

 結果

  • エクスプレッション適用後
  • 比較