ウィグル : Wiggle
ウィグルは値を不規則に変化、変動させます。
- ランダムと違い連続性があるので、くねくね、ゆらゆらとした表現ができます。
- この例ではパーティクルの発生、角度、速度、明度にwiggleを適用しています。
wiggle ( freq, amp, octaves, ampMult, t )
戻り値はNumber / array
引数が多いので制御しにくいようですが、2つの波の合成であるということが判ると理解しやすいでしょう。
- freq , amp が基本の波のパラメーター(右図・上)
- octaves , ampMult が加算する波のパラメーター(右図・中)
- timeは位相
- 始めの2つのパラメータは必須です。
- 後半のパラメータを省略すると以下の値がデフォルト値として適用されます。
- octaves=1 : ampMult=0.5 : t=time
パラメーター
freq:周波数
1秒あたりの変化数です。- 0以上の値が使用できますがフレームレート以上では[random]とほとんど結果が変わりません。
- 値が低いほど変化が緩やかです。
amp:振幅
値の変化幅、つまりベースの波高を決めます。- freqの値に乗算した結果を返します。
octaves:オクターブ
ベースの波に加算するノイズの周波数です。- 音楽で使うオクターブと同じ意味ですから、1オクターブはfreqの2倍の周波数を意味します。
- 値が大きくなるほどのこぎりの歯のような波形になります。
ampMult:振幅
加算するノイズの振幅を決めます。- 加算する波ですから大きな値ではfreqで決めた波のうねりを殺してしまいます。
t:時刻
標準では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);
この例ではスライダーの値をサンプル対象としています。- スライダ値は1.5秒までは「0」で、その後「180」まで増加しています。
- スライダ値の変化がない1.5秒まで、temporalWiggleはまったく値が変動していませんが、wiggleは終始同じ量の揺れが加わっています。
- サンプル値の変化量に応じてウィグル量をコントロールできるので、早く走っている車は大きいブレで、スピードを落とすとゆれが小さくなり、止まるとブレが無くなる、というようなことができます。

前のページへ