Collaps

AfterEffectsにしかない考え方(多分)

マニュアル等では「連続ラスタライズ」などと紹介されていて、イラストレータの線を綺麗にするぐらいの説明しか無いが、

実際はこれを深く知ることで、今までやってきたことが馬鹿馬鹿しく感じるほど重要な機能。

現地点で自分なりの解釈は以下

解釈の例としてレイヤーA、レイヤーBを合成、プリコンポーズ。そのプリコンポーズしたレイヤーの不透明度を50%にする。

レイヤーA、Bを合成してプリコンポーズすると

プリコンポC = レイヤーA + レイヤーBである。

Cの不透明度を50%にするということは

C.opacity*0.5である。

単純に式にすると

C = A+B

C*0.5

コラップスすると、Cを展開したことになる。

ゆえにC*0.5が(A+B)*0.5となる。

(A+B)*0.5は展開できるので

(A*0.5) + (B*0.5)

となる

コラップスしない場合、プリコンポCの不透明度が変わるのだが、コラップスすると

プリコンポCの中のレイヤーA、Bのそれぞれの不透明度が下がるのがわかる。

プリコンポーズされたレイヤーをコラップスするということは、プリコンポーズされたレイヤーのプロパティを受け取り、

トランスフォームプロパティのみコラップスされたレイヤーのトランスフォームプロパティと合成するということである。

プリコンポCにエフェクトをかけるとそれぞれのレイヤーにも適用してくれそうだが、そうはならない。

この場合、コラップス自体が無効になるので、基本的にはコラップスするレイヤーには、エフェクト、マスク、レイヤーモードを割り当てないことが条件となる。

スケールの場合。

例として、スケールを半分にしたレイヤーをプリコンポーズ。

プリコンポーズしたレイヤーを倍に拡大。

画像は荒れてしまうが、コラップスするともとに戻る。

レイヤーAのスケールを50%にする

A.scale*0.5

Aをプリコンポーズ。

C = A.scale*0.5

Cのスケールを200%に。

C.scale*2

コラップスすると

(A,scale*0.5)*2

となり、結局

A.scale*1

すなわち元に戻るということになる。

3Dレイヤーの場合

レイヤーAとレイヤーBをプリコンポーズ。

プリコンポーズCを3Dレイヤーに。

レイヤーBをスクリーンする必要が出て来たのでレイヤーBをスクリーンにして、プリコンポーズCをコラップス。

プリコンポーズCの位置プロパティが[x,y,z]なのにレイヤーA、Bは3Dレイヤーにしていないので、位置プロパティは[x,y]のみ

このまま位置の値を合成しても

レイヤーA[x,y] + プリコンポC[x,y,z]

レイヤーB[x,y] + プリコンポC[x,y,z]

となり、zの計算が出来ない。

ゆえに、プリコンポCを3Dレイヤーにして、コラップスするならば、そのコンポの中のレイヤーも3Dレイヤーにしてあげないと

計算してくれないということになる。

多段コラップスする場合も同様。

A = X+Y

B = O+P

C = A+B

C*n

ABCそれぞれコラップスすると

((X+Y)+(O+P))*n

(X*n)+(Y*n)+(O*n)+(P*n)

となる。

AfterEffectsヘルプの「処理速度を改善する>プロジェクトの簡略化による処理速度の改善」に

ネスト化されたコンポジションのトランスフォームをコラップスします。

というのがあるが、すなわち一気に計算することにより計算の速度を上げるということだと思われる。