dA-tools.com

HOME > AfterFx > expression > 実践 > 階段変化

階段変化 Step

Step.gif
指定コマ数だけ値をキープして増減する

  • KeyFrameの「時間補間」→「停止」に似たグラフになります。
  • このグラフは現在の時間をKeepしたいコマ数で割って端数を切り捨てることで得られます。

fr = time * 24 ;
Math.floor(fr / k);

※Ver6以降では posterizeTime(fr/sec) を使っても同じ結果になります。

フル・アニメを任意のコマ単位にする

  • オレンジの四角は始めと終わりにKeyを打って移動している1Fr単位の滑らかな動きです。
  • グリーンの四角は同様にして作った動きの「位置」プロパティに以下のエクスプレッションを書いています。step=6のところを書き換えて任意のステップに変更できます。これは作画のコマ打ちとタイミングを合わせたい時に使えます。

function Hold(k){
 fr = time * 24 ;
 return Math.floor(fr / k);
}

step=6;
StRate=Hold(step);
valueAtTime(StRate/(24/step));

※Ver6.0以降では次の式が有効です。

posterizeTime(4);
thisProperty

  • posterizeTime()の引数はFrame/Secです。
  • posterizeTimeはそれを書いた後のExpressionの時間を制御するので、単独では結果が出ません。
  • この例の場合thisPropertyが必要です。

スナップ

空間に対して適用するとレイヤーをグリッドにスナップするように配置することが出来ます。

例ではグリッド間隔を g としています。
このExpを[位置]に書くとそのレイヤーは50pix単位で配置されます。レイヤーをドラッグすると上例のグリーン平面のように動かすことが出来ます。

またg=1とすれば小数点以下の位置をとらないようにしたい時にも使えます。

g=50;
x=Math.round(position[0]/g)*g;
y=Math.round(position[1]/g)*g;
[x,y]