特定の複数レイヤーにのみ作用する「動的な調整レイヤー」の実現方法について(マット生成の課題)
現在、After Effectsで特定の複数レイヤーにのみエフェクトを適用し、それらを一元的にコントロールするスクリプトシステムを開発しようとしており、特に「動的なマット生成」の部分で課題に直面しています。皆様のお知恵を拝借できれば幸いです。
最終的な実現したい動作(展望)
メインコンポジション内のレイヤー構成(順番)は変更せずに、ユーザーが指定した複数のターゲットレイヤー(例:レイヤーA、レイヤーC)に対してのみ、あたかもそれらのレイヤー「全体」を一枚の絵として捉えた上で、調整レイヤーのような形でエフェクトを適用したい。
ターゲットではないレイヤー(例:レイヤーAとレイヤーCの間にあるレイヤーB)には一切影響を与えない。
エフェクトのパラメータは、専用のコントローラーレイヤーで一元管理し、変更がリアルタイムにターゲットレイヤー群に反映される。
現在検討中の2つのアプローチと課題
アプローチ1:エクスプレッションベースの個別リンク(添付スクリプト: 1.jsx ベースの考え方)
概要: コントローラーレイヤーを作成し、そこにマスターとなるエフェクトを配置。ターゲットレイヤーそれぞれに同じエフェクトを複製し、各プロパティをコントローラーにエクスプレッションでリンクする。
利点: 各ターゲットレイヤーを個別に処理するため、レイヤー間の干渉を避けやすい。
課題:
エフェクトの有効/無効状態(Fxアイコンのオン/オフ)のリアルタイム同期がエクスプレッションだけでは難しい。
多数のレイヤー/エフェクト/プロパティを扱う場合のパフォーマンスと管理の複雑性。
「ターゲットレイヤー群全体を一枚の絵として」というよりは、個別にエフェクトがかかる形になる。
アプローチ2:Set Matteエフェクトと統合マットの活用(添付スクリプト: Salis_SelectiveAdjustments.jsx ベースの考え方)
概要:
エフェクトを適用するための調整レイヤーをメインコンポジションに用意。
全てのターゲットレイヤーのアルファチャンネルを合成した「統合マット」を専用のプリコンポジション(以下、マットコンプ)で動的に生成する。
メインコンポジションの調整レイヤーに「Set Matte」エフェクトを適用し、マットソースとして上記マットコンプを指定。これにより、調整レイヤーの効果範囲をターゲットレイヤー群に限定する。
調整レイヤー上のエフェクトは、別途コントローラーレイヤーから制御する(または調整レイヤー自体を直接編集)。
利点:
「ターゲットレイヤー群全体を一枚の絵として」というコンセプトに非常に近い。
エフェクトの同期問題が大幅に簡略化される(実質的に調整レイヤー1つを制御するだけになるため)。
最大の課題
ターゲットレイヤーの正確なアルファマットを、動的に、かつ自動でマットコンポジション内に生成する方法。
ターゲットレイヤーが持つ可能性のある全ての要素(フッテージ、シェイプレイヤー、テキストレイヤー、平面、それぞれのトランスフォーム、マスク、既存エフェクト、親子関係、トラックマットなど)を考慮して、それらが最終的に描画するアルファ形状をマットコンプ内で正確に再現し、かつメインコンポジションでのアニメーションに追従させる必要があります。。。;;
例えば、シェイプレイヤーのパスアニメーションや、テキストレイヤーのソーステキスト変更、レイヤーマスクの変形などを、どのようにしてマットコンプ内の対応するマット要素にリアルタイムで反映させるか、という点が非常に難しいです。
質問したいこと
上記のアプローチ2における「動的な統合マット生成」の課題について、皆様はどのような解決策やテクニックをご存知でしょうか?
ターゲットレイヤーの複雑なアルファ情報を、別のコンポジション(マットコンプ)内で正確に、かつ効率的に再現するための具体的なExtendScriptテクニックやエフェクトの組み合わせはありますか?
(例:レイヤーの複製とプロパティの完全コピー、sampleImage()エクスプレッションの活用、チャンネル系エフェクトの高度な利用法など。。。)
これら2つのアプローチ以外に、私たちの最終目標を実現するための、より優れた第三のアプローチは考えられますでしょうか?
私の現在のスクリプト(上記2つのアプローチの試行版)は以下からダウンロードいただけます。
https://28.gigafile.nu/0913-bf00726a84e40503de090741a25904419
どのような小さなアイデアやヒントでも構いませんので、アドバイスをいただけると大変助かります!!!
長文お読みいただきありがとうございました。
