複数の種類で同じ大きさのオブジェクトを何度も使用する場合、プリコンポーズで1フレームずつ並べ、タイムリマップで使用する画を選択すると、管理が少し楽になります。
目的の整理
アイコンチックな素材を多数並べる場合、素材をそのままタイムラインに配置してもいいですが、サイズが統一されていない場合、スケールがバラバラにならないよう複数のサイズを統一したプリコンポジションを用意し並べることで「一括でスケールを小さくしたい」といったケースで調整・管理を楽にしたい。
例として、23個のアイコンを横に等間隔で並べる場合を考えてみます。整列は当サイトで配布している「posGridAlign.jsx」を使用し、エクスプレッションで整列します。
まずはちょうどいいサイズのコンポジションを用意し、タイムラインに1フレーム1アイコンで並べていきます。もし素材のサイズが違う場合はこのタイミングでサイズ感を合わせておきます。
このコンポジションを複数並べ、タイムリマップの固定キーフレームで1ずつズラしていけばいいというところは想像しやすいかと思います。
エクスプレッションに変換していく
目的が整理できましたので、言葉の式をエクスプレッションに変換していきましょう。
タイムリマップ用のエクスプレッション
使用するフレームを選択しやすいようにエフェクトを仕込んでおきます。
数値が欲しいので「スライダー制御」エフェクトを適用し、サンプルではエフェクト名は「#リマップ番号」としました。
このスライダー制御から吸い上げた数値でタイムリマップを制御します。タイムリマップに直接数値を入力しようとすると、現在時間にキーフレームが追加されてしまい入力が面倒ですので、再生バーがどこにあってもバチッと入力するためにスライダーエフェクトを噛ませます。
「fps」を割り出す
thisComp.frameDuration;
タイムリマップに適した数値にするために、1フレームの時間を指定したいです。これは「thisComp.frameDuration」でコンポジションの1フレームの長さを取り出せます。
(1フレームの時間→30fpsの場合「0.33333…」です。)
フレーム数に相当する整数を掛けるだけ
これに整数を掛ければタイムリマップのフレーム数にちょうど合い、整数の指定だけでアイコンの順番を入れ替えることも簡単になります。
完成
これらを繋ぐとエクスプレッション完成です。「タイムリマップ」に入れるエクスプレッションは、下記の通りです。
ind=effect("#リマップ番号")(1)-1;
ind*thisComp.frameDuration;
タイムリマップ内の1つめのオブジェクトは0フレーム目なのでエフェクトでの指定から「-1」します。1から始まったほうが扱いやすいかという筆者の優しさです。(※後述する補助スクリプトとの兼ね合いで、必ず-1してください)
後は整列させたい数だけコンポジションレイヤーを複製し、それぞれの#リマップ番号に連番をしていしていけばOKです。
…。
この#リマップ番号の指定が残るハードルですが、「#で始まるエフェクト名の数値を、レイヤー名の末尾の数値にセットするスクリプト」を作りましたので、まぁ、セッティングまでは補助スクリプトをセットでお使いください。
ダウンロード(補助スクリプト)
numSliderSetter(#).jsx
実際の使用感
なので実際は1つめのコンポジションを配置した段階で今回のエクスプレッションを仕込み、レイヤー名の末尾に半角数値を入れリネームしてください。
↓これを複製すれば自動で連番がついていき、
↓該当コンポジションを全選択後に「numSliderSetter(#).jsx」を実行すればOKです。
アイコンの変更
「#リマップ番号」に直接数値を入力してもいいですし、矢印キー上下でポンポン変えてもOKです。
個別にスケールの微調整をする場合は1つのコンポジションに配置していますので、コンポジションを開いて変更と、調整は楽かと思います。
この記事へのコメントはありません。