AEエンジョイ勢

主にAfterEffectsの話をします

エクスプレッションを一括管理

エクスプレッション、便利ですよね。

規則的な図形を描いたりランダムに動かしたり、まさに用途は無限のようです。

f:id:mitsuji3244:20160728081333j:plain

ですが、便利だからと言って複雑な式を多用し過ぎると、作業引き継ぎで細かく説明が必要になったり管理が面倒だったり、不慮の記憶喪失で途方に暮れてしまう可能性も否定できません…。

そこで、多用するエクスプレッションはなるべく統合しちゃいましょう。

今回は2パターンの方法をご紹介しますが、ここでは後者の方法②を推奨しています(理由は後述)。


方法①

テキストレイヤーのソーステキストに統合したい式を記入し、
eval関数を使用してそれを参照します。

f:id:mitsuji3244:20160725015221j:plain

テキストレイヤー「Exp」に記入した式を下層レイヤーからそれぞれ

eval(thisComp.layer("Exp").text.sourceText.value)で参照させている形です。

割と有名な方法ですね。


詳しい解説は「eval エクスプレッション」とかで検索されると宜しいかと(丸投げ)。

統合する式をシングルクォーテーション(')で囲む方法もありますが、画像のようにトリプルクオーテーション(""")で最初と最後だけを囲ったほうが手数が少なく楽です。


しかしこの方法、実践された方はご存知だと思うのですが、参照する式が複雑&レイヤーが多くなると比例的にプレビューが激重くなります。


この重さ加減が尋常では無く、正直これが原因で統合を諦めたくなる程です…。

でもこんな事で諦めたくない!屈したくない!ので別案を考えてみました。


方法②

レイヤーのマーカーコメント内に統合したい式を記入し、
eval関数を使用してそれを参照します。

f:id:mitsuji3244:20160725015247j:plain

(↓記入しているコメント)
f:id:mitsuji3244:20160725015241j:plain
テキストの代わりにマーカーコメントを使用する事で、
処理速度に雲泥の差が出ます。

例ではeval(thisComp.layer("Exp").marker.key(1).comment)marker.key(1)1個目のマーカーなので、別エクスプレッションのマーカーを追加して、ここの数値を変更すれば実質1レイヤーにいくつでも統合するエクスプレッションを定義する事が出来ます。

(個別に関数にしたりして無理くり一箇所にまとめる事も出来ますが長文になりがち&分かりづらいので非推奨)

おまけにこちらならわざわざクオーテーションで囲う手間も必要ありません。


ある機会に試した所、処理時間が約1/6にもなった程なので効果は抜群です!

強いて欠点を挙げるなら、タイムライン上マーカーにはコメントの一行目しか表示されないので、なるべく見出しを加えて分かりやすく書いておくと良いでしょう。

evalでお悩みの方は是非お試しあれ~。




*********




さて、何故こうまで差がでるのか実はわかっておりません!w

ソーステキストとマーカーコメントの違い・・・クオーテーションの有無?うーん。

まぁ個人的には「楽しめれば何でもいい…!こまけぇこたぁいいんだよ!!」な理念でブログしてますのであんまり突っ込んでも詮ないんですが、詳しい人が居られたら是非教えて欲しいです。