AE Tips

この記事はCCSAdventCalender2017の25日目の記事です
↓前日
 
↓アドカレのリンク
 
 
みなさんこんにちは
25日目,トリ担当のとっちーです
 
今年のアドカレももう最後ですね
もうすぐ年越しだなぁ・・・(白目)
 
裏アドカレでは2個も記事を書きましたがあの2つは色々アレなので今回は真面目に書きます
 
今回はAfterEffects&関係のTipsでも話そうかと思います
作業してる時に便利だった機能やスクリプトなどそこら辺の話をふわっとしていきます
僕は割りと使ったこと無い人向けに話ししてること多くて使ってる人向けにあんま話ししてなかったので
また,書籍とか読んで書いてあったこととかも混じってます
 
「これ当たり前でしょ」とかいう感想が上がるかもしれませんが,マウントを取りたいならツイッターでクソツイートに取ってきてください
また「こっちのがよくね???」とかあったらおせーてください
 
 
 

AfterEffectsTips

 

①制作準備

この項はりゅーかさんという映像屋さんが以前コミケで出した「AE4U 2.ワークフロー」という本の内容を参照しまくっています
ほとんど同じ内容なのでもし本人に見つかって消せと言われたらこの項消えるかもしれないのでご了承くださいな
いきなりこんなんですみませぬ
 
早速AEというよりも創作全体に通じる話します
長期で創作をしていくと,出力したファイルとか素材とかいろんなものがごちゃごちゃになってきます
「自分がわかればええんや!」とかいうと思うんですけど,ぶっちゃけ1週間位時期空いたりすると普通に分かんなくなります
明日の自分は別人だから()
というわけでわかりやすいようにフォルダ管理をしたり名前には命名規則をしっかりつけたり色々準備します
グラフィック系のgithubが欲しい
 
 
というわけで僕のフォルダ構成を見せるぜ!

f:id:yoooomaruuuu:20171225143708p:plain

それぞれの説明
_comp
コンポジション入れ コンポジションはここに入れましょう _ついてるのは他のファイルがあってもプロジェクトウィンドウの一番上になるよう(だと思う)
Pre
プリコンポジション入れ 基本コンポジションとプリコンポジション分けとくと楽
material
素材入れ
_common
素材集などのファイル入れ この手の素材はいくらでも使う可能性高いので別にしとくといいぞ
image movie sound
左から画像・映像・音楽素材入れ
reference
参考物入れ 動画とかよく参考にするやつ入れとくとすぐ見れて便利
 
こんな感じ
 
 
ちなみに作業用フォルダ(windows)構成

f:id:yoooomaruuuu:20171225143729p:plain

それぞれの説明
aep
aepファイル入れ
material
素材ファイル入れ(中にimage movie sound)
output
出力ファイル入れ
 
こんな感じ
 
 
コンポジションも作っていくとごちゃごちゃになりがちです
特にプリコンポジションの便利さを覚えるとアホみたいなことになります
しっかりと命名規則をつけましょう
というわけで今回も僕のをドーン

f:id:yoooomaruuuu:20171225143746p:plain

・メインのコンポジション(最終的に書き出す用)を作る
 └動画の名前とかにしとけば書き出す時楽
・制作物の各パーツはそれぞれ[01][02]と名前を付ける
・[01][02]内のそれぞれのプリコンポは必ず[01]_〇〇という風に名前をつける
 
これらを守ることで見やすくなるぞ
 
ちなみに書き出す際は「メインのコンポジション名_日付」みたいな感じにするとパット見で分かりやすいぞ
 
 
 
これらを参考に自分なりのプロジェクトファイルをデザインしよう!
 
 
 

②CCParicleWorldのループについて

こっからまともにAEの話
 
このエフェクト機能は少ないけど3Dにも対応している無課金パーティクルです
こいつはエフェクトを作るにあたってアホみたいに使う機会あります
しかしこのエフェクトループ機能がありません
なので強引にループさせようと思います
 
今回はこいつをループさせます
手順としては
ループしたい時間の2倍以上の長さでコンポジション作成してパーティクルの元作成
今回は1秒でループさせるので2秒で作成
f:id:yoooomaruuuu:20171225144020p:plain
 
作成したパーティクルをプリコンポf:id:yoooomaruuuu:20171225144045p:plain
 
それを3つに複製

f:id:yoooomaruuuu:20171225144119p:plain

 

ループ部分を決めてマーカー作成

f:id:yoooomaruuuu:20171225144151p:plain

 
こんな感じの配置にして

f:id:yoooomaruuuu:20171225144204p:plain

 
こんな感じに不透明度にキーフレームつけたら終了です

f:id:yoooomaruuuu:20171225144218p:plain

f:id:yoooomaruuuu:20171225144228p:plain

f:id:yoooomaruuuu:20171225144236p:plain

 
 
まあ簡単ですね
こんな感じになります
わかりにくいかもしれませんがループはしてます
Hatenaブログ動画も上げさせてくれよん
 
不透明度を調整して擬似的にループしてるだけです
ただ2つだけだと大体ループの真ん中で不透明度が低くなってしまうので,中心でのみ不透明度が高いものを配置することでごまかしているって感じです
これでも動画自体の1/4の部分と3/4の場所で不透明度が低くなってしまいますが,まあ無いよりはごまかせているかなって感じです
この手を使うときはあまり画質の高いものでやると粗が目立ってしまうので,ゲームのちょっとした部分で使うくらいがちょうどいいかと
工夫として不透明度のキーフレームにイーズかけたりするとわかりにくくなるかな
ちなみにDescapeでもちょこちょこ使ってたりします
 
 

③エクスプレッション小話

エクスプレッション周りの話します
 
1.点滅しながら現れる演出
こんな感じの演出です
僕が一時期電子空間的な演出にハマってた時に作成しました
これ,キーフレームで行うのでもいいけど後に時間調整が起きた時にめんどくさいです
なのでエクスプレッションでどんと解決します
 
はいどーん
Trigger_end = marker.key("演出終了時間マーカーの名前").time; //endマーカーの時間取得
Trigger_start = marker.key("演出開始時間マーカーの名前").time; //startマーカーの時間取得
Update = 100 / (Trigger_end*fps - Trigger_start*fps); //不透明度のフレームごとのアップデート倍数
Frame = time*fps; //フレーム数取得
h=2; //点滅周期
unit=Math.floor(Frame/h) ;  //周期ごとに値を固定している
Coe=unit-Math.floor(unit/h)*h ; //0か1に変換
Opac = (Frame - Trigger_start*fps) * Update ; //不透明度取得
EndOpac = 80; //不透明度最大
Frame < Trigger_end*fps ?  Coe * Opac : EndOpac //時間比較
//矩形波*比例上昇

f:id:yoooomaruuuu:20171225144429p:plain

 
このエクスプレッションでは演出の開始と終了をマーカーを使って判別させています
非常にめんどくさいので細かい説明はしません
JavaScriptの関数いくらか調べればある程度はわかるので
JSでわからない点だけ説明します
 
まず最初の2行ですが,開始,終了時間をマーカーを使って取得してます
マーカーを使うことによって仕様変更に対応しやすくなってます
 
定期的に時間にfpsをかけている理由ですが,AE内に存在するtimeという変数が1フレームにつき1/fps上昇する(つまり1秒の時time=1)という仕様のためです
fpsをかけることでその時間のフレーム数を取得できます
 
最後のはJSの条件演算子です
詳しい説明はJSのリファレンスでも見てください
 
これを用いることで下のようなグラフになります

f:id:yoooomaruuuu:20171225144448p:plain

矩形波+線形増加のグラフですね
いい感じになるぞぉ
 
2.パーティクルのエミッタをnullに追従
CC Particle Worldの話です
パーティクルのエミッタは動かすと表現の幅が広がります
こんな演出とかを簡単にできます
さてエミッタをnullに追従させるにはとりあえずいつものようにnullの位置参照しとけばええやろ!とか思います.
ところがどっこいそんなうまい話はないんだな
 
Particleのエミッタの位置は,Producerで制御します

f:id:yoooomaruuuu:20171225144603p:plain

 
ここでProducerの仕様を見てみましょう
 
(1)原点はコンポジションの中心
(2)x,y,zはそれぞれ右,下,奥が+の値
(3)1.0 = コンポジションのwidth(x,y,zに関わらず)←一番の糞ゴミ仕様
 
はい
ちなみにAEのPositionは,原点が左上になっています
つまりParticleのポジションの値にコンポジションのwidth倍した上で原点の位置ずれ分の補正をかけた値が実際のPosition値になるという糞ゴミ仕様になっています
誰だこの仕様考えたやつ出てこい!!!!!
知らなかった時に2時間くらいこの仕様に費やした
 
というわけで以上のことを踏まえるとこんな感じ
Position X = (thisComp.layer("ヌルの名前").transform.position[0] - thisComp.width/2.0) / thisComp.width;
Position Y = (thisComp.layer("ヌルの名前").transform.position[0] - thisComp.height/2.0) / thisComp.width;
Position Z = (thisComp.layer("ヌルの名前").transform.position[0]) / thisComp.width;

f:id:yoooomaruuuu:20171225144553p:plain

thisComp.width及びheightはそれぞれコンポジションの横と縦のサイズ変数です
またこれを行う前に出来るだけヌルの3Dスイッチは入れた方がいいです
 
 
 
 
もう少し書きたかったけどタイムオーバー
まあ前の記事より圧倒的に真面目に書いたから許して
 
今後も時間出来たら残しときたい作例とかTipsとか記事あげたいな
 
 
というわけでCCSAdventCalender2017これにて完結
各位お疲れ様でした!