ウィグル

Anime の 道具箱

dA-tools.com

HOME > AfterFx > expression > 実践 > ウィグル

ウィグル : Wiggle

ウィグルは値を不規則に変化、変動させます。

  • ランダムと違い連続性があるので、くねくね、ゆらゆらとした表現ができます。
  • この例ではパーティクルの発生、角度、速度、明度にwiggleを適用しています。

wiggle ( freq, amp, octaves, ampMult, t )

戻り値はNumber / array

waveAdd.gif引数が多いので制御しにくいようですが、2つの波の合成であるということが判ると理解しやすいでしょう。

  1. freq , amp が基本の波のパラメーター(右図・上)
  2. octaves , ampMult が加算する波のパラメーター(右図・中)
  3. timeは位相
  • 始めの2つのパラメータは必須です。
  • 後半のパラメータを省略すると以下の値がデフォルト値として適用されます。
    • octaves=1 : ampMult=0.5 : t=time

パラメーター

freq:周波数

  • wiggleFreq.gif1秒あたりの変化数です。
  • 0以上の値が使用できますがフレームレート以上では[random]とほとんど結果が変わりません。
  • 値が低いほど変化が緩やかです。

amp:振幅

  • wiggleAmp.gif値の変化幅、つまりベースの波高を決めます。
  • freqの値に乗算した結果を返します。

octaves:オクターブ

  • wiggleOct.gifベースの波に加算するノイズの周波数です。
  • 音楽で使うオクターブと同じ意味ですから、1オクターブはfreqの2倍の周波数を意味します。
  • 値が大きくなるほどのこぎりの歯のような波形になります。

ampMult:振幅

  • wiggleAmpMult.gif加算するノイズの振幅を決めます。
  • 加算する波ですから大きな値ではfreqで決めた波のうねりを殺してしまいます。

t:時刻

  • wiggleTime.gif標準ではt=time(現在の時間)で使います。
  • 波の位相をずらす、つまりグラフを左右に移動させたいときに使えます。
  • 例:time+0.5 でグラフを左に0.5秒分移動できます。
  • 移動幅を大きくするとパターンを変える目的に使えます。
    なお、seedRandom(seed)でwiggleの初期値を制御することもできます。

次元

  • ウィグルは適用したパラメーターの次元全てに適用されます。
  • 例:位置プロパティであれば[X,Y]両方に適用されます。それを一方向だけにするには、次のように配列のインデックスを書き加えます。

newY=wiggle(4, 10)[0];
[thisProperty[0],newY]

  • wiggle( )の後に[ ]で括った数字を加えると、1次元のウィグル値を返します。
  • 位置のプロパティは2次元なので0か1を入れます。どちらでもかまいません。

temporalWiggle

temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

戻り値はNymber / array

  • パラメーターはwiggle( )と同じです。
  • 2つの違いは、サンプリング対象となるプロパティが時間変化(アニメート)しているかどうかです。

wiggle と temporalWiggleの比較

  • 下のムービーは静止している平面にtemporalWiggle(上)とwiggle(下) を適用したものです。
  • 次のエクスプレッションを回転と位置[x]に記述しています。

effect("スライダ制御")("スライダ").temporalWiggle(5,1);
effect("スライダ制御")("スライダ").wiggle(5,5);

  • tempWigl.jpgこの例ではスライダーの値をサンプル対象としています。
  • スライダ値は1.5秒までは「0」で、その後「180」まで増加しています。
  • スライダ値の変化がない1.5秒まで、temporalWiggleはまったく値が変動していませんが、wiggleは終始同じ量の揺れが加わっています。

  • サンプル値の変化量に応じてウィグル量をコントロールできるので、早く走っている車は大きいブレで、スピードを落とすとゆれが小さくなり、止まるとブレが無くなる、というようなことができます。