AEエンジョイ勢

主にAfterEffectsの話をします

Expression強制解除の怪<マスクパス編>

先日書いたエクスプレッション解除現象に類する内容で、今回はマスクパスについて書いてみます。

仕事中ちょくちょく出くわしていたものの、業務時間内にわざわざ調べる程でも無いので意識的にスルーしてきた問題なのですが、改めて向き合ってみました。

 

こういうエラーって皆さん見た事ありますでしょうか?

f:id:mitsuji3244:20151230221159j:plain

f:id:mitsuji3244:20151231103706p:plain

一見普通のエラー表示に見えますがレイヤーの所が意味不明な数字(-2147483647)になっています。

明らかにバグっています!

上画像を簡単に説明すると下レイヤー(コンポ 1)から上レイヤー(コンポ 1_MaskMain)にマスクパスを参照しているだけという非常に単純でありきたりな状態なんですが、この状態でaepを保存すると以降閉じた瞬間毎回エラー表示されます。

レイヤーが見つからない?

いや、普通にあるけどどういう事??

と出くわされた方は首を傾げる事でしょう。

 

そして実はこれ、エラーの後で再度開き直したら特に参照が無効になったりしておらず普通に機能します。

最早何の為の警告なのか不明です。

 

 

具体的にどう対処したらいいか分からないエラー。

何度も同じ警告をされる苦痛。

作業中自分のストレス値がぐんぐん上がっていくのを感じます。

きっとこういうストレスが積み重なり発散できない不満を貯め、心を病んでしまった哀しき人達が悪魔の囁きで現代社会の闇へと誘われるのでしょう。

こんなんじゃエンジョイ出来ないやい!

どげんかせんといかん。

 

 

**********

 

 

ただ、これだけだと情報が少なく要因が今一つ分からないので、年末の大掃除をすっぽかしてひたすら何度もaepを開いたり閉じたりして検証してみました。

(ちなみにいつも通りCS6です。CC以降は分かりませんので悪しからず)

結果、下記の3項目が合わさるとエラーが発生する様です。

 

①プリコンポが参照している

…プリコンポ以外のレイヤー(平面等フッテージ)では発生しない模様。

f:id:mitsuji3244:20151231011310p:plain

②参照レイヤーを3Dレイヤーに設定している

…参照先(「コンポ 1_MaskMain」レイヤー)は関係ない模様。

f:id:mitsuji3244:20151231011555p:plain

 

③(1)「参照を行っているレイヤーのコンポ名」がそれらを(2)「内包しているコンポ名」よりも若い名前に設定している

…噛み砕くとプロジェクトパネルで「名前」を昇順ソートした際、

f:id:mitsuji3244:20151231103336p:plain

この様に(1)が上、(2)が下になっているとアウトです。

はぁ、一体何故なんでしょう?自分にも分かりません。

 

 

あと調べてる最中に気付いたのですが、この状態で(2)を「Ctrl+C」や「Ctrl+D」等の複製操作をするだけでもエラー表示されます。

f:id:mitsuji3244:20151230234642j:plain

(こっちだとレイヤー番号は普通ですね)

しかもこの場合エラー通り本当に無効化されています。

f:id:mitsuji3244:20151231103503p:plain

aepを閉じた場合よりむしろこっちの方が厄介ですね…。

非常に有り難くない検証の副産物です。

(エラー再現用aep1:https://goo.gl/s8UVby

 

 

 

もう一個。

f:id:mitsuji3244:20151231002907j:plain

f:id:mitsuji3244:20151231003808p:plain

参照先を平面に置き換えたら偶然発見した亜種です。

こちらはaepを開いた際に連続で2度表示されます。

大事な事なんですね、わかります。

あと複製操作をすると先程と同じエラーが出て無効化されます。

英語なのがまた一段と香ばしいです。

(エラー再現用aep2:https://goo.gl/q8pxbq

 

 

といった感じで思いの外AEマスクパス界隈の闇が濃くてびっくりです。

探ったらもっと出てくるんじゃ無かろうか。

これ以上は恐ろしくて手を出したくないですが(((´Д`;)))

 

さてお待たせしました。次が解決策です。

 

 

解決策

リネームするかフォルダ内に移動して、(1)「参照を行っているレイヤーのコンポ名」もしくは(2)「内包しているコンポ名」の位置を変えてみましょう。

f:id:mitsuji3244:20151231011212j:plain

昇順ソートで(2)が上、(1)が下になっていればOKです。

亜種に関しては一度平面をプリコンポして、上記対応をすれば問題ないかと。

 

これで少なくともaepを閉じたり開いたりした際のエラーは表示されなくなります。

①②に関しては作業上必要な場合がほとんどだと思うので避けにくいでしょうし、比較的対処しやすいに焦点を当てた形です。

 

ただし、複製した際に起こるエラーはこれだけだと解消しません!

こちらに関してはどーにも良い方法が見つからなかったので、落とし所として再度マスクパスのエクスプレッションだけ有効化するスクリプトを作りました。

322_MaskpathExpTrue.jsxbin

 https://goo.gl/r4ofVJ

プロジェクトパネルでコンポを選択して実行すれば中の全レイヤーのマスクパスを繋ぎ直します。

これで多少ストレスは軽減されるかと!

というかexpressionEnabledをtrueにするだけで有効になるのにexpressionErrorにはしっかりエラー文出るとか訳分からん…。

 

 

**********

 

 

いかがでしたでしょうか。

この現象で頭を悩ませられている方がどれ程居られるかは分かりませんが、当記事でAEのダークサイドに屈しずエンジョイ出来ましたら幸いです。

 

最後に、良いお年を。

 

///170127_一部改稿///