PF_InData — After Effects SDK Guide 22.0.0 documentation

After Effectsは、PF_InDataを使用して、システム、プロジェクト、レイヤー、およびオーディオ情報を通信します。

この構造体は、各コマンドセレクタがプラグインに送信される前に更新されます。

特定のPF_Cmdsの間のみ有効なフィールドを記載しています。

また、PF_InDataは非常に大きいですが、各メンバーの目的を覚える必要はなく、いくつかのフィールドは時々使うものです。

PF_InDataのメンバー

Name Description
inter ユーザーとの対話、パラメータの追加、ユーザーがエフェクトを中断したかどうかの確認、プログレスバーの表示、レンダリング中の現在時刻以外でのソースフレームやパラメータ値の取得に使用するコールバックです。この非常に便利な関数群については、「インタラクション・コールバック関数」で説明しています。
utils グラフィカルで数学的なコールバック。このポインターは常に定義されています。
effect_ref 様々なコールバックルーチンのほとんどに渡さなければならない不透明なデータです。After Effectsでは、プラグインを識別するために使用されます。
quality 現在の品質設定。PF_Quality_HI または PF_Quality_LO のどちらかです。エフェクトは、LOではより速く、HIではより正確に実行する必要があります。グラフィックスユーティリティのコールバックは、LOとHIの品質で性能が異なるので、エフェクトもそうあるべきでしょう。このフィールドは、すべてのフレームおよびシーケンスセレクタで定義されます。
version 効果仕様バージョン、PF_Cmd_GLOBAL_SETUPの際に正常に実行するために必要なバージョンを示すこと。
serial_num 起動したアプリケーションのシリアル番号です。
appl_id 起動するアプリケーションの識別子。プラグインがAfter Effectsで動作している場合、appl_idにはアプリケーションクリエイターコード「FXTC」が含まれます。Premiere Pro & Other Hostsで動作している場合は、「PrMr」となります。あるアプリケーションで使用するためにライセンスされたプラグインが、他のアプリケーションで使用されているかどうかをテストするために使用します。
num_params 入力パラメータ数。
what_cpu macOSでは、CPUタイプのGestalt値が含まれます(『Inside Macintosh』6巻を参照)。Windowsでは未定義です。
what_fpu macOSでは、FPUタイプのGestalt値が含まれています。Windowsでは未定義です。
current_time PF_Cmd_RENDER中に有効な、レンダリング中の現在のフレームの時間です。これはレイヤーの現在の時間であり、コンポジションではありません。 レイヤーが時間0以外から始まる場合やタイムストレッチされる場合、レイヤーの時間とコンポジションの時間は別々です。現在のフレーム番号は、current_time を time_step で割った値である。現在の時間(秒)は current_time を time_scale で割った値である。タイムストレッチ、コンポジションフレームレート変更、タイムリマップを処理するために、After Effectsはエフェクトに非整数時間(2フレーム間)でのレンダリングを求める場合があります。フレームの境界線上のフレームしか要求されないと思い込まないように、準備してください。注:CS3(8.0)より、エフェクトはマイナスの電流でレンダリングするよう求められることがあります。
time_step 現在のソースフレームがレンダリングされている期間。ネストされたコンポジションのいくつかの状況では、このソースフレームの持続時間は、レイヤーのフレーム間の時間スパン(local_time_step)と異なる場合があります。この値は、time_scaleで割ることで秒に変換することができる。PF_CHECKOUT_PARAMなど、他のソースフレーム時間を計算する場合は、local_time_stepではなく、この値を使用する。レイヤーがタイムリバースされた場合、マイナスになることがあります。ネストされたコンポジションにタイムリマッピングが適用された場合、フレームごとに異なることがあります。ネストされたコンポジションでソースマテリアルがストレッチまたはリマップされる場合、local_time_stepと異なる場合があります。例えば、フレームレートの異なる外側コンポジションに内側コンポジションがネストされている場合や、外側コンポジションにタイムリマッピングが適用されている場合などに発生する可能性があります。この値は、全フレームで一定でない場合、PF_Cmd_SEQUENCE_SETUP時に0となる。PF_Cmd_FRAME_SETUP、PF_Cmd_FRAME_SETDOWNセレクタの時に正しく設定されます。
警告:これはゼロになる可能性があるので、分割する前に確認してください。
total_time レイヤーの持続時間。レイヤーのタイムストレッチが100%より長い場合は、それに応じて値が調整されますが、レイヤーのタイムストレッチが短い場合は、値は影響を受けません。タイムリマップが有効な場合、この値は作曲の持続時間となります。この値は、time_scaleで割ることで秒に変換することができる。
local_time_step レイヤー内のフレーム間の時間差。レイヤーに適用されるタイムストレッチの影響を受けます。レイヤーが時間反転している場合、マイナスになることがあります。time_stepとは異なり、この値はフレームごとに一定である。この値は、time_scaleで割ることで秒に変換することができる。レイヤーのフレーム範囲全体で一定のステップ値であれば、コンポジションのフレームレートとレイヤーのストレッチに基づくlocal_time_stepを使用します。
time_scale current_time、time_step、local_time_step、total_timeが示す1秒あたりの単位です。time_scaleが30の場合、current_time、time_step、local_time_step、total_timeの単位は30分の1秒である。time_stepは3であり、これは1秒間に10フレームでレンダリングされていることを示す。
field PF_Cmd_GLOBAL_SETUPでPF_OutFlag_PIX_INDEPENDENTが設定されている場合のみ有効です。上段または下段のフィールドだけで処理できるかどうか、このフィールドにチェックを入れてください。
shutter_angle モーションブラーシャッター角度。値は0から1までで、360度を表します。対象レイヤーのモーションブラーが有効でチェックされていない限り、0になります。shutter_angle == 180は、current_timeとcurrent_timeの間の時間間隔+1/2time_stepを意味します。PF_Cmd_GLOBAL_SETUPでPF_OutFlag_I_USE_SHUTTER_ANGLEが設定されている場合のみ有効です。エフェクトにモーションブラーを実装する方法については、「モーションブラー」の項を参照してください。
width ソースレイヤーの寸法。入力画像パラメータの幅と高さのフィールドと同じである必要はない。バッファのリサイズ効果により、このような差が生じることがあります。ダウンサンプリングには影響されません。
height
extent_hint 入力層と出力層の可視部分の交点で、層座標に変換されたコンポジション矩形を囲む。このピクセルの矩形だけを繰り返し処理することで、効果を劇的に速めることができます。適切な使用方法については、この章で後述する「extent_hintの使用法」を参照してください。
output_origin_x 入力バッファにおける出力バッファの原点。エフェクトで原点が変わるときのみ非ゼロとなる。
output_origin_y
downsample_x ユーザーがAfter Effectsにn番目のピクセルだけをレンダリングするように指示した場合、ポイントコントロールパラメータとレイヤーパラメータの寸法が自動的に調整されます。エフェクトは、画像内のピクセル距離を表すスカラーパラメータ(スライダなど)を解釈するために、ダウンサンプリング係数を必要とします。例えば、ダウンサンプル係数が各方向に1/2であれば、4画素のぼかしは2画素のぼかしと解釈されるはずです(ダウンサンプル係数は比率で表されます)。期間中のみ有効 PF_Cmd_SEQUENCE_SETUP PF_Cmd_SEQUENCE_RESETUP PF_Cmd_FRAME_SETUP PF_Cmd_RENDER
downsample_y
pixel_aspect_ratio 画素の縦横比
in_flags 未使用です。
global_data 他のセレクタの間にプラグインによって保存されるデータ。プラグインを呼び出す前後にAfter Effectsによってロックされ、ロック解除されます。
sequence_data
frame_data
start_sampL オーディオレイヤーの開始位置を基準とした、開始サンプル番号。
dur_sampL オーディオの持続時間(サンプル数で表される)。オーディオに特化したもの。
total_sampL オーディオレイヤのサンプル数。total_timeをサンプル数で表したものと同じです。
src_snd 入力音を記述するPF_SoundWorld。オーディオに特化
pica_basicP PICA Basic スイートへのポインタを指定し、他のスイートを取得するために使用します。
pre_effect_source_origin_x 入力バッファ内のソース画像の原点。フレームセレクタで送信した場合のみ有効です。同じレイヤーでこのエフェクトに先行する1つ以上のエフェクトが出力バッファのサイズを変更し、原点を移動した場合のみ非ゼロとなります。出力領域を決定するために、リサイズと新しい原点の両方をチェックします。これは、画像の中心を中心にファイルを反転させるような、(ポイントコントロール以外の)暗黙の空間操作を持つエフェクトに有効です。注:チェックアウトされたポイントパラメーターは、チェックアウトされた時間ではなく、現在の時間における効果前の原点に対して調整されます。
pre_effect_source_origin_y
shutter_phase フレーム時間からシャッター開時間までのオフセットを、フレーム時間に対する割合で示したもの。

extent_hint 使用方法

備考

SmartFXでは、ヒントとなる長方形がより効果的で複雑です。

extent_hintを使用して、出力が必要なピクセルだけを処理します。これは、最も簡単な最適化の1つです。

PF_Cmd_GLOBAL_SETUP中にPF_OutDataにPF_OutFlag_USE_OUTPUT_EXTENTを設定し、in_data>extent_hintを使用することをAfter Effectsに伝えます(PiPLにも設定されています。)

extent_hintコードをテストする前に、環境設定メニューからキャッシュを無効にすると、コンポジション内の何かが変更されるたびにAfter Effectsがエフェクトをレンダリングします。

そうでなければ、キャッシュ機構によってプラグインの出力が不明瞭になる(不正確な可能性がある)。

コンポジション内でレイヤーを移動させ、トリミングされるようにします。output>extent_hintは、コンポジション内で見えるレイヤーの部分です。

レイヤーにマスクを追加し、移動させます。

これにより、画像の非ゼロアルファ領域をすべて囲むextent_hintが変更されます。

in_data>extent_hintは、これら2つの矩形(コンポジションとマスク)の交点であり、これらが変化するたびに変化します。

PF_OutFlag_PIX_INDEPENDENTを設定したエフェクトの入力と出力のエクステント間の矩形交差を単純化するため、エクステント矩形は、サイズ変更と原点移動の前に、元の入力レイヤーの座標空間で計算されます。