自作ツール&スクリプト

【AfterEffects】Z方向だけをランダムの値を入れるエクスプレッション

afterEffects-z-random-expression

すいみん(@cg_method)です!

たくさん画像を適当にいい感じにバラけて配置できないかなーと思ってZ方向だけをランダムの値を入れるエクスプレッションを書いてみました。

使用する3種類のコード

①特定の時間に固定するエクスプレッション/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];

②コンポジションの1つ目のコメントに記述されているエクスプレッションを参照するエクスプレッション

まとめてエクスプレッションを制御する時に便利です。ヌルに入れても良いのですが、フレーム単位で更新がかかり重くなるのでコメントに入れています。

eval(thisComp.marker.key(1).comment)

Z方向だけをランダムの値を入れるエクスプレッション

STEP.1
画像の3DレイヤーをON
STEP.2
すべての画像の「位置」パラメーターに②のエクスプレッションを追加
マーカーのエクスプレッションを参照できるように仕込みます。

eval(thisComp.marker.key(1).comment)

STEP.3
コンポジションのコメントに①のエクスプレッションを記述
コメントに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];

STEP.4
さらに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];

まとめ

以上、お手軽で便利な画像配置方法でした!