PF_ParamDef — After Effects SDK Guide 22.0.0 documentation

After Effectsは、各セレクタでPF_ParamDefsの配列をエフェクトに渡し、現在の時刻におけるプラグインのパラメータを記述します。params 配列の値は、一部のセレクタでのみ有効です(これはセレクタの説明に記載されています)。

Param Zero

最初のパラメータであるparams[0]は、効果を適用する入力画像(PF_EffectWorld / PF_LayerDef)です。

The Rest Of The Parameters

すべてのパラメータタイプは、PF_ParamDefで表現されます。ユニオンを使用することで、PF_ParamDefの適切な部分のみを入力する必要がある(または入力する必要がある)ようにします。

PF_ParamDef Members

Data Type Name Description
A_long id このパラメータのIDです。プラグインの将来のバージョンでパラメータを並び替えることができ、ユーザーがエフェクトを再適用する必要はありません。パラメータのIDをバージョンに関係なく保持する場合。
PF_ChangeFlags change_flags パラメータ値を変更した場合に設定します。ドラッグ(クリックではありません!)イベント時のみ有効です。
PF_Cmd_USER_CHANGED_PARAMまたはPF_Cmd_UPDATE_PARAMS_UI
PF_ParamUIFlags ui_flags パラメータを追加する前に、パラメータのUI動作を指定します。
PF_PUI_DISABLED は、イベント処理中に設定することができる。
A_short ui_width パラメータのユーザーインターフェイスの幅(非標準パラメータのみ)。
A_short ui_height パラメータのユーザーインターフェイスの高さ(非標準のパラメータのみ)。
PF_ParamType param_type パラメータの種類。
A_char[32]`` name パラメータの名称。イベント処理中に変更可能です。
はい、After Effects 1.0からパラメータ名を長くする要望がありました。
たった31文字で世界を変える効果を十分に表現することは、俳句のような言語チャレンジだと考えてください。
PF_ParamFlags flags 追加する前にパラメータのUI動作を指定します。イベント処理中にPF_ParamFlag_COLLAPSE_TWIRLYのみを設定することができます。
PF_ParamDefUnion u 可能なすべてのParameter Typeの組合わせ。
param_type で指定されたタイプのみが意味のあるデータを含む。

Parameter UI Flags

これらのフラグを使用して、パラメータのユーザーインターフェイスを制御します。

UIフラグとビヘイビアフラグを混同しないようにしましょう。これらのフラグは、パラメータ定義内の異なるフィールドに存在し、誤った適用をすると予測不可能な動作を引き起こします。

これらのフラグに加えて、AEGP_GetDynamicStreamFlagsを使用することで、効果パラメータを隠したり表示したりすることができます。

Flag Description
PF_PUI_TOPIC パラメータの "topic "に対してPF_Cmd_EVENTを扱う場合は、このフラグを設定します。
トピック」とは、ECW(Effect Controls Window)のparam UIのうち、そのparamに対してツイリーアローをツイリーアップしても表示されている部分のことです。
このフラグを設定する場合は、PF_Cmd_GLOBAL_SETUP時にPF_OutFlag_CUSTOM_UIも設定する必要があります。
PF_PUI_CONTROL ECPで制御領域(パラメータのスピナーを回転させると見えなくなる領域)のPF_Cmd_EVENTを扱う場合は、このフラグを設定します。
このフラグを設定する場合は、PF_Cmd_GLOBAL_SETUP時にPF_OutFlag_CUSTOM_UIも設定する必要があります。
詳しくは、「エフェクトUI&イベント」をご覧ください。
PF_PUI_STD_CONTROL_ONLY このフラグを設定すると、標準コントロールのみとなります。このパラメータにデータストリームは関連付けられませんので、タイムラインパネルでキーフレームを利用することはできません。シーケンスデータ内の何かを標準コントロールで制御するために、このような操作を行うことがあります。または、arbデータ、またはカンプウィンドウのカスタムUI、または他の複数のコントロールをグループ設定することです。このフラグは一緒に使うことはできません。

PF_Param_CUSTOM PF_Param_NO_DATA PF_Param_LAYER PF_Param_ARBITRARY_DATA PF_Param_PATH

このフラグを設定する場合、PF_ParamFlag_SUPERVISEも設定する必要があります(そうしないと、値の変更を知ることができず、この設定が何かに使われることはありません)。このフラグは、PF_OutFlag_CUSTOM_UIフラグが設定されている必要はない。PF_Param_ARBITRARY_DATA の標準コントロールが必要な場合は、PF_PUI_STD_CONTROL_ONLY を使って、対応する param タイプを追加するだけで、PF_Cmd_USER_CHANGED_PARAM 処理時に arb データの変更が可能です。 | | PF_PUI_NO_ECW_UI | エフェクトコントロールウィンドウにUIを表示させない場合は、このフラグを設定します。 おそらく、他の方法でパラメータの値を設定していると思われます(カンプウィンドウのカスタムUIや、PF_ParamFlag_SUPERVISEが設定されている別のパラメータに対してPF_Cmd_USER_CHANGED_PARAMを処理している場合など)。 AEでは、タイムライン上のキーフレームの表示には影響しません。PProでは、行全体が削除されるため、キーフレームは表示されません。 | | PF_PUI_ECW_SEPARATOR | After Effectsでは使用されませんが、Premiereでは使用されます。エフェクトコントロールウィンドウで、このパラメータの上に太い線を表示させたい場合は、このフラグを設定します。 これは、必要に応じて(グループを追加することなく)パラメータを視覚的にグループ化できるように提供されます。このフラグは、PF_UpdateParamUI()メソッドで実行時に変更することができます。 | | PF_PUI_DISABLED | 通常、PF_Cmd_USER_CHANGED_PARAMに対応して、パラメータを無効化(グレイアウト)します。 | | PF_PUI_DONT_ERASE_TOPIC | After Effectsでパラメーターのトピックが消えない。 | | PF_PUI_DONT_ERASE_CONTROL | After Effectsではパラメータの制御が消えない。 | | PF_PUI_RADIO_BUTTON | After Effectsでは使用しませんが、Premiereでは使用します。パラメータをラジオボタングループとして表示する。PF_Param_POPUPにのみ有効です。 | | PF_PUI_INVISIBLE | Premiereで初めてサポートされ、現在はAfter Effects CS6以降でサポートされています。エフェクトコントロールとタイムラインの両方で、パラメータUIを非表示にすることができます。 Premiereのみ。PF_UpdateParamUIコールバック時に、フラグがダイナミックになり、パラメータの可視性を切り替えることができるようになりました。 |

Parameter Flags

動作フラグとUIフラグは、パラメータの異なる性質を表すものです。PF_Cmd_PARAM_SETUPでパラメータを追加する前に設定します。イベント時に設定される可能性のあるフラグを記します。

Flag Meaning
PF_ParamFlag_CANNOT_TIME_VARY パラメータは時間によって変化しないので、タイムラインパネルでキーフレーム制御は行われない。
PF_ParamFlag_CANNOT_INTERP 数値は代数的に補間されない。
不連続(ホールド)補間はそのまま使えます。オンかオフのどちらかであるパラメータに有効です。レンダリングを高速化する。
PF_ParamFlag_COLLAPSE_TWIRLY PF_Cmd_USER_CHANGED_PARAMの時にこのフラグを設定します。
PF_Cmd_UPDATE_PARAMS_UIPF_Cmd_USER_CHANGED_PARAMメッセージの処理時に、このビットをセット&クリアできるようになり、パラメータやグループを自由に上下させることができるようにしました。
PF_ParamFlag_SUPERVISE このパラメータのPF_Cmd_USER_CHANGED_PARAMメッセージを受信するために設定します。
詳しくは、「パラメータ監視」を参照してください。
PF_ParamFlag_START_COLLAPSED トピックスピナーの回転状態を制御します。
PF_Cmd_PARAM_SETUP中だけでなく、パラメータ監視中にも変更可能です。
このフラグは、PF_OutFlag2_PARAM_GROUP_START_COLLAPSEDが設定されていない限り、尊重されない。
PF_ParamFlag_USE_VALUE_FOR_OLD_PROJECTS これは、後から追加されたパラメータを欠いた古いバージョンのエフェクトで保存されたプロジェクトの読み込みにのみ影響します。
設定すると、PF_ADD_PARAM()で設定した PF_ParamDef.value フィールドが不足するパラメータの初期化に使用されますが、dephault フィールドは、新たに効果を適用したりリセットする際のパラメータの初期値として引き続き使用されます。
これは、あるパラメータをデフォルトで1つの値に設定したいが、古いプロジェクトのレンダリング動作を維持するために別の値に設定する必要がある場合に便利です。
PF_ParamFlag_LAYER_PARAM_IS_TRACKMATTE Premiere Proのみ。レイヤーパラメータに対してのみ有効です。レイヤーパラメータが、フィルタを適用したトラックマットとして使用されていることを示す。After Effectsで無視される。
PF_ParamFlag_EXCLUDE_FROM_HAVE_INPUTS_CHANGED エフェクトがPF_OutFlag2_AUTOMATIC_WIDE_TIME_INPUTを設定し、PF_AreStatesIdenticalまたはPF_HaveInputsChangedOverTimeSpanを呼ぶ場合のみ関連します。
PF_ParamFlag_SKIP_REVEAL_WHEN_UNHIDDEN CS6 の新機能です。このパラメータが非表示になっている場合、このフラグはAfter Effectsに、どの親もツイストオープンせず、エフェクトコントロールパネルとタイムラインパネルでパラメータをスクロールして表示しないように指示します。
After Effectsでは、ペイントストロークを行う際に、パラメータを公開してユーザーの気を引かないようにするため、内部的にこの動作を使用しています。しかし、別のケースでは、Time Remappingをオンにすると、そのパラメータが明らかになります。
そこで、自作エフェクトのパラメータを同じようにコントロールできるようにしています。

PF_ValueDisplayFlags

PF_ParamDefUnionの中で、PF_FloatSliderDefPF_FixedSliderDefは、メンバー変数PF_ValueDisplayFlagsを持ち、ユーザーのピクセル値表示の好み(情報パレットで設定)に対応できるようにします。これが設定されている場合、パラメータの値は、好みに応じて、0-1、0-255、0-32768、または0.0〜1.0として表示されます。また、最初のビット(PF_ValueDisplayFlag_PERCENT)を設定すると、パラメータの表示値にパーセント記号を付加することができます。

このようなことは絶対にしないとは思いますが、パーセンテージで表示するパラメータを作成する場合、0~100以外の範囲を許可してユーザーを混乱させないようにしてください。お願いします。パーセンテージとは「百分の一」という意味です。