[ブレ]のバリエーション
Sample:random/seedRandom/slider/switch_case/wiggle
- キーフレームだけだと規則的になってしまう動きに変化を付けたいケースは多いと思います。いわゆる画面動、ブレ、揺らぎ、振動です。
- 「位置」プロパティにエクスプレッションを記述しています。
- スライダー制御を適用してブレ幅を制御できるようにしています。
amp=effect("スライダ制御").param("スライダ");
p=[1,2];
random(-p,p)*amp+position;
- 配列pで縦横の移動比率を決定します。
- 配列pの要素は[ x座標 , y座標 ]です。
- この例では縦ブレ幅が横ブレの2倍になり、p=[0,2]では縦ブレだけになります。
- 振幅をスライダーで時間変化させると下のようになります。
- 上下は1Fr毎に規則的、左右はランダムなブレ
amp=effect("スライダ制御").param("スライダ");
y=amp*((time*24%2)-0.5)
x=random(-1,1)*amp;
p=[x,y];
position+p;
- ブレの中に時々大きなブレ
amp=effect("スライダ制御").param("スライダ");
p=[1,1];
nz=Math.min(random(100), 5)+Math.max(random(-100),-5);
random(-p,p)*amp+[0,nz]+position;
- ブレ_AをベースにY軸方向に不規則に発生するノイズを加えています。
- random( )の100と5の差が大きいほどノイズの発生率が減ります。
- 特定のポイントでブレ
p1=[1,1] , p2=[1,-1] , p3=[-1,-1] , p4=[-1,1] , p5=[0,0];
amp=effect("スライダ制御").param("スライダ");
ran=Math.round(random(4))
switch (ran) {
case 0 :shift=p1 break;
case 1 :shift=p2 break;
case 2 :shift=p3 break;
case 3 :shift=p4 break;
case 4 :shift=p5 break;
}
position+shift*amp
- p1から5で左右上下とセンターのポイントを設定しています。
- 設定したポイント以外の位置には移動しないので、ブレ_A よりは硬い感じです。
- スケール変化を加味
rand=random(-8,8);
scale+[rand,rand]
- ブレ_Aをベースにして「スケール」に上の式を追加しています。
- random( )の引数は任意です。
- ウィグルを使ったブレ
wiggle ( 24,2, octaves = 1, amp_mult = .5, t = time)
- ウィグルは引数"freq"を上げればradom( )に近いブレになりますが連続性があるのでやさしいブレが出来ます。
- 「揺らぎ」の感じ?
- 横8の字型の軌跡上のぶれ
amp=effect("スライダ制御").param("スライダ");
ran=random();
x=Math.cos(Math.PI*2*ran);
y=Math.sin(Math.PI*2*ran*2);
position+[x,y]*amp
- リサージュで説明した8字型軌跡上をランダムに移動します。
- 左右に”つまった”ばらつきなので手持ちカメラっぽい?ブレです。
- 1f/sより遅いブレ
amp=effect("スライダ制御").param("スライダ");
hold = 3/24;
seed = Math.floor(time/hold);
A = seed*hold;
seedRandom(seed,true);
valA = random([-1,-1],[1,1]);
seedRandom(seed+1,true);
valB = random([-1,-1],[1,1]);
jolt=ease(time,A,A + hold, valA, valB)
position+jolt*amp
- 3コマ毎にランダムを発生させてその間をeaseで補間しています。
- seedRandom:乱数のコントロール の応用です