[エクスプレッション]wiggleの動きをループさせるには?

wiggleはよく使うエクスプレッションですが動きのコントロールは式自体が行います。wiggleをループアニメーションなどを使う場合に重宝する方法を共有します。

wiggleの構文
wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)

///////freq = 速度
//////amp = 移動量

////octaves = 基本の動きに加える変動の細かさ

///amp_mult = 変動の変化量

//t = 現在の時間



freq = 1;
amp = 100;

//ループする周期の決定。コンポジションの時間と同じにすれば一周

loop = 1;
//指定時間でループを繰り返す

t = time%loop;


//wiggleの最初の位置


wiggle1 = wiggle(freq, amp, octaves = 1, amp_mult = .5, t);


//wiggleのコンポジション最後の数値。最初の数値と同じに最後はなる

wiggle2 = wiggle(freq, amp, octaves = 1, amp_mult = .5, t - loop);



//指定したloopの時間でwiggleがループするようになる

linear(t,0,loop,wiggle1,wiggle2)

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

wiggleの元の指揮を使います。普段はfreqとampしか使わないことも多いと思いますが今回はtimeの部分をコントロールしたいので全部記入します

式の手順

指揮をそのまま使える様に変数を2つ作ります

//動く速度
freq = 1;
//動く強さ
amp = 500;

周波数と強さですね。そしてループするためにcompのデュレーションに合わせてloopという変数を作りましょう。

//ループする秒数
loop = 5; //(今回はcompのデュレーションは5秒にしています)

上で作った秒数で繰り返したいのでtimeのループをつくりtの変数に戻します。

//loopに入れた時間を繰り返す
 t = time % loop;

始まりと終わりのwiggleを作る

あとはlinear or easeを使ってwiggleをループする様に設定するため2つのwiggleをつくります。

//始まりのwiggleの動き
wiggle1 = wiggle(freq, amp, octaves=1, amp_mult=.5, t);
//compのデュレーションの終わりでwiggleのパラメーターを元に戻す
wiggle2 = wiggle(freq, amp, octaves=1, amp_mult=.5, t - loop);

ループをlinearでコントロールする

さっき作成した2つのwiggleをlinearかeaseに入れてループさせます

//0秒からloopの秒数まででwiggleが動き出して元の位置にもどる
linear(t , 0 , loop , wiggle1 , wiggle2)

これで完成です。ちょっとこれは難しいですね。。。。実際の勉強会とかで詳しく話せればいいかなと思います。意味を理解して使う事がエクスプレッションを理解する近道だと思います。

エクスプレッションを使って快適なAE生活を^^

https://everydayskillshare.jp/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です