Skip to content

コマンドセレクター

コマンドセレクターは、After Effects がエフェクトプラグインに「何を実行するか」を伝えるための指示です。

セレクターが送信されるたびに、エフェクトは次の情報を受け取ります。

  • PF_InData(ホスト状態と入力情報)
  • PF_ParamDef[](パラメータ配列)
  • 各種コールバック / スイート関数

エフェクトは PF_OutData に結果を返し、必要に応じて PF_EffectWorldPF_LayerDef)へレンダリング結果を書き込みます。
イベント系セレクターでは PF_EventExtra を使って追加情報を受け取ります。


呼び出し順は一部のみ固定で、それ以外はユーザー操作やホスト状態で変化します。

代表的な流れは次のとおりです。

  1. 初回適用時
    PF_Cmd_GLOBAL_SETUPPF_Cmd_PARAM_SETUPPF_Cmd_SEQUENCE_SETUP
  2. 各フレームの通常レンダリング
    PF_Cmd_FRAME_SETUPPF_Cmd_RENDERPF_Cmd_FRAME_SETDOWN
  3. SmartFX レンダリング
    PF_Cmd_SMART_PRE_RENDER(必要回数)→ PF_Cmd_SMART_RENDER
  4. 終了・破棄
    PF_Cmd_SEQUENCE_SETDOWN、必要に応じて PF_Cmd_GLOBAL_SETDOWN

PF_Cmd_ABOUT は ECW(エフェクトコントロールウィンドウ)から About… が選択されたときに送られます。


セレクター主な役割
PF_Cmd_ABOUTプラグイン説明ダイアログを表示します。out_data->return_msg を設定すると、After Effects がモーダルダイアログを表示します。
PF_Cmd_GLOBAL_SETUPプラグインの基本挙動を定義します。out_data->my_version を含む PF_OutData と各種フラグを設定します。
PF_Cmd_GLOBAL_SETDOWNグローバル領域で確保したメモリを解放します。
PF_Cmd_PARAM_SETUPパラメータ定義と UI 登録を行います。PF_ADD_PARAM を使用し、PF_OutData::num_params を設定します。
セレクター主な役割
PF_Cmd_SEQUENCE_SETUPシーケンス単位のデータを初期化します。エフェクト初回適用時に呼ばれます。
PF_Cmd_SEQUENCE_RESETUPディスク読み込み後や複製時にシーケンスデータを再構築します(通常はアンフラット化)。
PF_Cmd_SEQUENCE_FLATTEN保存・複製に備えてシーケンスデータをフラット化します。ポインタを含むデータをディスク保存可能な形へ変換してください。
PF_Cmd_SEQUENCE_SETDOWNシーケンスデータを解放します。

フレーム / オーディオ / SmartFX セレクター

Section titled “フレーム / オーディオ / SmartFX セレクター”
セレクター主な役割
PF_Cmd_FRAME_SETUPフレーム単位の作業領域を確保します。必要に応じて出力サイズや原点オフセットを指定します。
PF_Cmd_RENDER通常レンダリング(8/16bpc)を実行します。32bpc は PF_Cmd_SMART_RENDER で処理します。
PF_Cmd_FRAME_SETDOWNPF_Cmd_FRAME_SETUP で確保したフレームデータを解放します。
PF_Cmd_AUDIO_SETUPオーディオレンダリング前に入力サンプル範囲を要求・初期化します。必要なら startsampL / endsampL を更新します。
PF_Cmd_AUDIO_RENDERPF_OutData.dest_snd にオーディオ処理結果を書き込みます。
PF_Cmd_AUDIO_SETDOWNPF_Cmd_AUDIO_SETUP で確保したメモリを解放します。
PF_Cmd_SMART_PRE_RENDERSmartFX の事前解析です。必要入力領域と出力可能領域を決定します。GPU レンダリング可能なら PF_RenderOutputFlag_GPU_RENDER_POSSIBLE を設定します。
PF_Cmd_SMART_RENDERSmartFX の実レンダリングを行います。
セレクター主な役割
PF_Cmd_EVENTUI イベントを処理します。イベント種別は extra 内の e_type で判定します。
PF_Cmd_USER_CHANGED_PARAMユーザーによるパラメータ変更時に送信されます(PF_ParamFlag_SUPERVISE 設定時)。
PF_Cmd_UPDATE_PARAMS_UIECP の表示更新要求です。PF_UpdateParamUI() で UI 特性のみ更新します。値変更は行わないでください。
PF_Cmd_DO_DIALOGオプションダイアログ表示要求です。PF_OutFlag_I_DO_DIALOG を設定している場合に送信されます。
PF_Cmd_ARBITRARY_CALLBACK任意データ型(PF_Param_ARBITRARY_DATA)のハンドラ呼び出しです。
PF_Cmd_GET_EXTERNAL_DEPENDENCIES外部依存情報を返します(PF_OutFlag_I_HAVE_EXTERNAL_DEPENDENCIES 設定時)。
PF_Cmd_COMPLETELY_GENERALAEGP からの汎用メッセージに応答します。
PF_Cmd_QUERY_DYNAMIC_FLAGS実行時条件に応じて動的フラグ(WIDE_TIME_INPUT など)を返します。キャッシュ最適化のため高速応答が重要です。
PF_Cmd_GPU_DEVICE_SETUPGPU デバイスごとの初期化を行います。対応可否に応じて PF_OutFlag2_SUPPORTS_GPU_RENDER_Fxx を設定します。
PF_Cmd_GPU_DEVICE_SETDOWNgpu_data に紐づく GPU リソースを解放します。
PF_Cmd_GPU_SMART_RENDER_GPUPF_Cmd_SMART_RENDER の GPU 版です。GPU フレーム入出力で SmartFX を実行します。

PF_Cmd_USER_CHANGED_PARAMPF_Cmd_UPDATE_PARAMS_UI の違い

Section titled “PF_Cmd_USER_CHANGED_PARAM と PF_Cmd_UPDATE_PARAMS_UI の違い”
  • PF_Cmd_USER_CHANGED_PARAM
    ユーザーが実際に値を変更したときに送信されます。値の補正や他パラメータへの反映など、ロジック変更はこちらで行います。
  • PF_Cmd_UPDATE_PARAMS_UI
    表示状態の更新要求です。タイムライン移動や ECP 表示などでも送信されます。ここでは見た目の更新のみを行います。