画像をZ方向にランダムでバラけさせたい
たくさん画像を適当にいい感じにバラけて配置できないかなーと思って、Z方向だけをランダムの値を入れるエクスプレッションを書いてみました。
目次
使用するエクスプレッション
①特定の時間に固定するエクスプレッション/Z値だけランダムにする
seedRandomのコードをしておくと時間固定できます。そして各方向の値を取得、さらにZ値にランダム値を追加します。
seedRandom(index,true);
var x = thisComp.layer(index).transform.position[0];
var y = thisComp.layer(index).transform.position[1];
var z = thisComp.layer(index).transform.position[2]+random(2000);
[x,y,z];②コンポジションのマーカーコメントを参照するエクスプレッション
まとめてエクスプレッションを制御する時に便利です。ヌルに入れても良いのですが、フレーム単位で更新がかかり重くなるのでコメントに入れています。
eval(thisComp.marker.key(1).comment)Z方向だけをランダムの値を入れるエクスプレッションのやり方

- 画像の3DレイヤーをON
- すべての画像の「位置」パラメーターに②のエクスプレッションを追加(マーカーのエクスプレッションを参照できるように仕込みます)
- コンポジションのマーカーコメントに①のエクスプレッションを記述
- さらにZ値を動かして微調整(エクスプレッションが入っている状態でオフセットの調整が可能です)
適用結果
Before:

After:

スライダー制御もつける
さらにスライダーでランダム値を調整しても良いかもしれません。ヌルを作成して、エフェクト>エクスプレッション制御>スライダー制御を追加します。
あとはエクスプレッションを書き換えるだけです。
seedRandom(index,true);
temp = thisComp.layer("ヌル 1").effect("スライダー制御")("スライダー");
var x = thisComp.layer(index).transform.position[0];
var y = thisComp.layer(index).transform.position[1];
var z = thisComp.layer(index).transform.position[2]+random(temp);
[x,y,z];