After Effectsにどっぷり浸かってしまった私は、前回時点で絵コンテまでAfterEffectsで制作する体になってしまっているのです。
例に漏れず撮影用の資料であるショットリストもAfter Effectsで作り始めてしまい、ショットリスト自体の制作から撮影順に入れ替えた当日用の資料にするまでの処理をもっと簡単に行える方法はないかと、エクスプレッションでの効率化を思いつきました。
After Effectsのみで完結するには脳が足りなかったため、一部スプレッドシートと行き来をすることで効率の良い環境に辿り着きました。
完成品のaepと、セットになるスクリプトも配布しますので、使い方から記事にまとめ、自分の学びとして残します。
より良い改善点を見つけた方はメッセージを頂ければ、とってもとってもうれしいです。
作るに至った思考をむき出しにしつつ、ツールの紹介へと軽妙なトークで綴ってみたいと思います。
ルールと欲しい機能の案出し
ショットリストに必要な情報はそこそこありますが、個人的に実用的な項目に絞ります。
- タイトル
- シーン、カット、ショット番号
- 画
- セリフ
- 説明テキスト
- 担当カメラ
- レンズのmm数
- ショットサイズ
- ショットアングル
- 登場人物(キャスト)
- カメラムーブ
- 機材
- 撮影場所
これがあればショットリストとして成立させられます。そして記入するルールが決まったテンプレートと考えられます。
ルールが明確な繰り返し処理ほど、プログラムが得意なことはありません。自動化したいルールを整理します。
- シーン、カット番号は連番数字
- シーン変わりでカット番号が繰り上がる
- シーンの初めのカットはわかりやすく太枠にしたい
- 複数の画で同カットを記入する可能性がある
- ショット番号はカットをまたいで同じ可能性がある
- 画は16:9と2.4:1に対応したい
- 画と紐づいた情報がセット
- 撮影順に入れ替えられるようにしたい
1ページのデザインを作れば、あとは繰り返しです。ショットリストを作ったらAfter Effectsから連番pngで保存できますので、そのpngをpdfにまとめることも簡単です。
また、別のコンポジションでショットリストを撮影順に並び替えたバージョンも必要です。
試行錯誤しましたが、スプレッドシートをかます方法が一旦は一番効率的という結論に達したため、エクスプレッションと入力補助用のスクリプトを使用してAfter Effectsとスプレッドシートでショットリストを作るツールを作ってみましょう。
雛形の準備
まずは1コマ分、とりあえずレイアウトを組むので、必要なパーツをリスト化します。
シーン、カット、ショット番号
シーン番号、カット番号はどちらも連番となるので、テキストレイヤーで準備しておきます。シーン切り替えによるカット番号のリセットですが、配置したテキストレイヤーにエクスプレッションで仕掛けを作れば、手打ちしなくて済みそうです。
画
こちらは画面用のコンポジションを配置することで、ダブルクリックで個別に画を編集できます。絵コンテを流用してもいいですし、3Dシミュレーション機能のあるショット作成ツールを使えば、より正確な撮影状況を検討できます。
私は無料のStoryboarderという絵コンテ作成用ソフトを使用しています。ペンで絵コンテを描けるほか、「ショットジェネレーター」という機能で3Dの人物、テーブルなどのオブジェクト、カメラのレンズをシミュレートでき、撮影現場の位置関係を検討するのに便利に活用しています。
https://wonderunit.com/storyboarder
これでひたすらショットの画を作り、pngでエクスポート→セリフやシーン説明などを今回のaepで仕上げていく流れです。
1フレーム1コマの「画面」コンポジションを配置し、タイムリマップで表示するコマを指定できれば、ページあたり5枚などを順に表示する配置にまとめれば絵コンテ同様の形式になるかと思います。
シーンの初めのカットはわかりやすく太枠にしたい
単純にシーン切り替わりのフレームでのみ表示するシェイプで表現できそうです。
1コマごとの画と紐づいた情報
- セリフ
例)ナス「鎮まれ…俺の左手…!」 - シーンの説明テキスト
例)風で逆立つ髪。左手を押さえ苦悶の表情。 - 担当カメラ
例)A、Bなど - レンズのmm数
例)50mm - ショットサイズ
例)クローズアップ、ワイドショットなど - ショットアングル
例)ローアングル、アイレベルなど - 登場人物(キャスト)
例)ナスカズアキ - カメラムーブ
例)手ブレ、フィックスなど - 機材
例)三脚、スライダー、その他特機など - 撮影場所
例)砂漠など
1ページ分のレイアウトを作る
これで仕掛けを施す大筋となる部品がわかりましたので、レイアウトを1ページ分作ってみます。これに合わせて画と文字のコンポジションを配置し、残りのページは複製で増やします。
絵コンテはA4にしますので、まずはA4サイズのコンポジションを用意します。A4は210x297mmですが、After Effectsのコンポジションはpxで指定しなくてはなりません。
PhotoshopでA4サイズのカンバスサイズを調べると、印刷用の300dpiでは2480x3508pxでした。
ここから、作ったものの解説になり長くなるので語尾が変わる。敬体から常体になる。
今回はこんなレイアウトにしたいと思います。では実際にコンポジションを作っていきます。
1フレームに1コマ、画を配置するコンポジションと、テキスト情報が合わさるレイアウト用のコンポジションを用意。画を並べる際にアスペクト比も指定する。
セリフなどの情報は全フレームキーフレームがあり、1つのレイヤー内で打ち替えられるように。
そしてアスペクト比によって枠もリサイズしたいので、2種類の枠を作って切り替える。
[_waku]コンポジションの0フレーム目に16:9用の枠、1フレーム目に2.4:1用の枠を作り、タイムリマップにアスペクト比を参照するエクスプレッションを記入。
Controllerレイヤーの「新しいシーン」エフェクトにキーフレームを打つとシーン番号が繰り上がる。キーフレームは打つだけでいい。[シーン数1_][シーン数2_]コンポジションがそれぞれ黒枠の白字シーン番号、通常の枠なし黒字シーン番号で、[新しいシーン]キーフレームを検知してシーンの初めの1コマのみ黒枠を表示しわかりやすくした。
また、1カットを複数のコマで表現したい場合に備え、「同カット」エフェクトにキーフレームを打つとカット番号が足されないようにした。
仕込んだエクスプレッション
もう正直aepファイル見てもらったほうが早いが。絵コンテ.aep【Aeで絵コンテ制作するアイディア】のエクスプレッションを追い込んだものになっているので、重複しての説明になるような下記で説明がないものは先のページで解説があるはず。気になったらそちらも参照されたし。
bgとして用意したシェイプは長方形を組み合わせていて、長方形1と2(パスを結合)で上下の黒帯を、長方形3で背景全体の白を置いている。
if(thisComp.layer("アスペクト比").effect("アスペクト比")("メニュー")==2){
100;
}else{
0;
}
選択したアスペクト比をトリガーに2.4:1にした際に黒帯部分がはみ出て見えないようトラックマットで隠れるようエクスプレッションを仕込む。
framesToTime(comp("01画面").layer("アスペクト比").effect("アスペクト比")("メニュー")-1);
if(comp("01画面").layer("アスペクト比").effect("アスペクト比")("メニュー")==2){
100;
}else{
0;
}
if(comp("01画面").layer("アスペクト比").effect("アスペクト比")("メニュー")==1){
100;
}else{
0;
}
シーン繰り上がり処理の案
シーン、カット用の数字も自動化しないと、結構な手間が残る。今回はシーン切り替え箇所の指定にControllerのキーフレームを使用する案を考えた。「新しいシーン」エフェクトにキーフレームを打てば、シーン番号が繰り上がるようにエクスプレッションを仕込んでいる。
if(numKeys>0){
nKey=nearestKey(time);
if(time >= nKey.time){
tugi=nKey.index;
}else{
tugi=nKey.index-1;
}
if(tugi>numKeys){
tugi=numKeys;
}
}else{
value;
}
framesToTime(thisComp.layer("Controller").effect("新しいシーン")("スライダー"));
カット番号の処理の案
カット番号は基本的に連番で1ずつ増えればいいが、シーン切り替えタイミングで1に戻って、同カットであれば1フレーム前と同じ数字を表示すれば良い。
var nowframe=timeToFrames(time);
var sceneNum=thisComp.layer("Controller").effect("新しいシーン")(1);
var sameCut=thisComp.layer("Controller").effect("同カット")(1);
var val=1,mae=1;
for(i=0;i<nowframe;i++){
(sceneNum.valueAtTime(framesToTime(i))==sceneNum.valueAtTime(framesToTime(i+1)))?val++:val=1;
if(sameCut.valueAtTime(framesToTime(i))!=sameCut.valueAtTime(framesToTime(i+1))){
val--;
}
if(sceneNum.numKeys>0){
var nearKey=sceneNum.nearestKey(time);
if(nearKey.time==time){
val=1;
}
}
}
val;
これで、キーフレームを任意のフレームに打つだけで、連番の打ち直し作業から解放された。
2ページ目以降はコピペで増やす
仕込んだエクスプレッションは連続で動き続けるので、親コンポジションで組んだ1ページ目のレイアウトそのままで以降の配置もコピペで増やして問題ない。
タイトルと日付、ページ番号は全ページ共通のため、1フレームだけでなく延ばしておく。
また、[-アスペクト比ガイド-]レイヤーは選択したアスペクト比と違ったショットリストを印刷しないよう、アラート表示するように仕込んでいる。16:9のコンポジションでは16:9を選択していれば上記のアラートは不透明度0になる。
スクリプトの紹介と使い方
セリフなどの情報は手打ちでもいいが…ダブルクリックが増えるためエディターをスクリプトで作った。
作って配布するからには説明する。
1.aepショットデータ編集機能、2.aep内の編集したデータをスプレッドシートで加工できるようtsvでエクスポートする機能、3.スプレッドシートで撮影順に並べ替えた通し番号順にaepを並べ直す機能の3つを準備。
step1:エディット
こうなっていて、オレンジと黄色のラベルのレイヤーが編集用。
ソーステキストに毎フレーム、キーフレームが打たれており直接打ち替えてもいい。
テキスト編集ごとにダブルクリックが発生し煩わしいためスクリプトでの編集を推奨。
スクリプトのレイヤー名と同名ボタンは「コンポジションの該当レイヤーから現在時間の値を吸い上げる」インポートボタン。下部の[インポート]ボタンは上記の全ての値を一気に吸い上げる。
既に入力が完了した値を吸い上げて調整する場合や、他のコマから吸い上げて編集すると楽な場合に使う。
[↑]ボタンは入力した値を「コンポジションの該当レイヤーの現在時間の値にねじ込む」書き込みボタン。下部の[書き込み]ボタンは上記の全ての値を一気に書き込む。
データの一部のみ書き込みたい場合は[↑]ボタン、まとめて書き込む場合は[書き込み]ボタン。
step2:エクスポート
ショットデータをスプレッドシートに持っていくためにtsvとしてエクスポートできる。aepが保存されているフォルダに保存する。
タイトルも拾うため、処理を走らせるコンポジションのアスペクト比も忘れずに選択し、[tsvエクスポート]ボタンを果敢にクリック。あとは待つ。
aepには500フレーム用意しているため、エクスポートしきるまで少し固まる時間があるがAfter Effectsを落とさず待つ。また、[02情報]コンポジションのワークエリア内を処理するため、必要なフレームだけワークエリアを絞れば待ち時間が短縮される。
その後tsvファイルをスプレッドシート(エクセルでも)で開くが、なんならtsvファイルをテキストエディタで開いて全コピー→スプレッドシートにペーストでもいい。その後照明の配置換えなどを最小限にし撮影が一番効率よく行える順序に行の並び替えを検討する。
並び替えが完了したら、通し番号をもとにショットリストにも反映できる。これを次のstep3で行う。
step3:ソート
スプレッドシートで並び替え後、通し番号の列をコピーして欲しい。そしてこのテキストエリアにペーストして欲しい。またtsvとかにエクスポートしてスクリプトでaepにインポートするなんて野暮なことしないで欲しい。もう最後はコピペでいって欲しい。
撮影順に並び替えるために使用するコンポジションが[Shot List2.4:1_撮影順]と[Shot List16:9_撮影順]の2つあるため、アスペクト比の選択も忘れないで欲しい。
そしたら[撮影順に並び替え]ボタンをクリックして欲しい!絶対して欲しい!
これで当日の撮影用の資料まで完成である。
完成
これでAfter Effects上でショットリスト+当日の撮影資料を作成できるようになりました。使いやすいんかい。
後から途中に画を追加したいとなった場合は、画が1フレーム余分になり以降のデータとズレますが、テキストレイヤーのキーフレームをドラッグ選択して1フレーム後ろにずらせばよく、手直しにも強いです。
根本的にはもちろん撮影資料を作るのは最後の最後のはずなので手直しがないような計画を立てるに越したことはないでしょう。
ダウンロード
shotListEditor.aep
shotListEditor.jsx
最後に
After Effectsを使い慣れていればいるほど、決まったフローを自動化するための手順が揃っていることに気付かされますね。
撮影時にはスタッフ、演者、クライアントと大勢の時間を拘束します。10人を6分待たせるだけで1時間の損失となるため、撮影当日はいかにスムーズに進めるか、この計画に存分に時間を使えば良いのですが、そうはいってもカメラアングルや演出などクリエイティブな時間をいかに生み出すかが重要であり、資料作りなど「作業」に時間を取られるべきではありません。
このツールや考え方が誰かの動画制作に役立てたのなら幸いです。
この記事へのコメントはありません。