【AfterEffects】パス上にオブジェクトを配置する +α
dekimasita#WeeklyMotionGraphics pic.twitter.com/vv49frmhTz
— がぉすP (@ghaos_P) 2021年4月6日
今回作りたいのはコレです。
星型パス上にオブジェクトを配置する
事前に
gg ってみます。
惜しいのですが、やりたいことが出ません。
……ので、少し工夫して、
「パスに沿ってオブジェクトを動かす」+エクスプレッションを使って
パスに沿ったオブジェクトの配置をやってみました。
パスに沿ってヌルオブジェクトを動かす
ヌルオブジェクトを作成して、下記の要領でパスに沿って移動するようにトランスフォームを設定します。
パスに沿って素材を動かすモーショングラフィックス汎用テクニック/Adobe After Effects CCでできること | カズノコブログ
ぴったり1秒(今回は30f)で終わるように調整しておきます。
ヌルオブジェクトの名前は parent にしました。
オブジェクトを並べるエクスプレッション
事前に、parent にスライダー制御を追加します。
名前は オフセット とし、値は 0.05 としました。
20分割 = 1/20 の値となります。
並べたいものを作ります。今回は小さめの赤丸にてきとうな陰影を付けてプリコンポーズしました。
プリコンポーズしたコンポジションの位置プロパティに、以下のエクスプレッションを追加します。
var parent = thisComp.layer("parent"); var offset = parent.effect("オフセット")("スライダー") * (index - 2); parent.transform.position.valueAtTime(offset);
Ctrl+D で20個複製
すると星型(=パス上)に20個配置となります。
おまけ 振動させたい
基本波形を作る
parent に BPM と Vector Length を追加します。
var BPM = effect("BPM")("スライダー"); var curve = 1 - Math.abs(Math.cos(time * Math.PI * BPM / 60)); curve * curve * 80;
キーフレーム変換するとこんな波形に(今回はキーフレーム変換やる必要はありません)。
BPM周期でピークが来る波形になっているはず……。
角度のランダマイザーを作る
parent に 角度を追加します。
並べたオブジェクトのエクスプレッションの更新
var parent = thisComp.layer("parent"); var offset = parent.effect("オフセット")("スライダー") * (index - 2); var pos = parent.transform.position.valueAtTime(offset); var theta = parent.effect("角度制御")("角度").valueAtTime(time); var cos = Math.cos(theta); var sin = Math.sin(theta); var len = parent.effect("Vector Length")("スライダー"); var x = len * cos; var y = len * sin; pos + [x, y];
以上でこんな感じに。
最後に角度に適当なランダム要素を追加します
var random = (index - 2) * parent.effect("BPM")("スライダー"); var theta = parent.effect("角度制御")("角度").valueAtTime(random + time);
index - 2 の部分がレイヤー毎に異なる値になります。
できました。やったー