PF_EffectWorld / PF_LayerDef — After Effects SDK Guide 22.0.0 documentation

After Effectsでは、PF_EffectWorldsPF_LayerDefsとも呼ばれる)を使って画像を表現します。

PF_EffectWorld Structure

Item Description
world_flags 現在、フラッグのみです。PF_WorldFlag_DEEP - 世界が16bpcである場合に設定します。PF_WorldFlag_WRITEABLE - ワールドの画像データを変更することが許可されていることを示します。通常、エフェクトは入力画像データを変更することはできず、出力のみ可能です。
data PF_PixelPtr として格納されている画像データへのポインタです。直接アクセスせず、PF_PixelPtr アクセッサマクロを使用してください。After Effectsの画像データは、常にアルファ、赤、緑、青を含むワードで構成され、低バイトから高バイトまで順次表示されます。
rowbytes 画像の画素ブロックの各行の長さをバイト単位で指定します。画素のブロックは、高さのある行と幅のある画素からなり、その後に何バイトかのパディングがあります。幅ピクセル(各ピクセルは4バイト長なので4倍)とオプションの余分なパディングを足すと、rowbytesバイトになります。この値を用いて、画像データを走査する。行の末尾にプラットフォーム固有のパディングがあるため、バッファ全体を走査するのは賢明ではありません。代わりに、heightとrowbytesを使用して各行の先頭を見つけます。
注:この値は、フィールドレンダリングが有効かどうかによって変わるものではありません。
注:同じ寸法の入力ワールドと出力ワールドは、異なるロウバイト値を使用することができます。
width 画素バッファの幅と高さ。
height
extent_hint レイヤー内のすべての不透明(アルファ値が0でない)ピクセルを包含する最小の矩形です。これは、出力が必要な領域を定義します。
プラグインが範囲によって変化する場合(拡散ディザなど)、これを無視して毎回フルフレームをレンダリングします。
pix_aspect_ratio 画素の縦横比をPF_Rationalで表現したものです。
注:エフェクトはチェックアウトしたレイヤーにこの値を使用できますが、適用するレイヤーにはPF_InData.pixel_aspect_ratioを使用する必要があります。申し訳ありません。
platform_ref CS5では使用されなくなりました。
プラットフォーム固有の参照情報です。Windowsでは、これは不透明な値を含んでいます。macOSでは、PF_GET_PLATFORM_REFSは、PF_EffectWorldからCGrafPtrGDeviceHandleを提供します。
注:PF_Cmd_GLOBAL_SETUP中は、まだ出力コンテキストがないため、platform_refを取得できません。我慢してください、私のペット。
dephault レイヤーパラメーターのみ対象。
PF_LayerDefault_MYSELF または PF_LayerDefault_NONE のどちらかです。

16.0での新機能

PF_Cmd_SMART_RENDER_GPUでは、PF_LayerDefは通常のCPUレンダリングと同様に記入されますが、PF_LayerDef.dataはNULLとなり、他のフィールドはすべて有効です。

PF_EffectWorldsのロウバイト数

PF_EffectWorld の次の走査線に (width * sizeof(current_pixel_type)) を使って行けると思わないでください。PF_EffectWorldのrowbytesの代わりに、+4、または何でも使用します。

PF_EffectWorldの指示された領域の外には決して書き込まないでください。これは、あなたのものではないキャッシュされた画像バッファを破損する可能性があります。

エフェクトがPF_EffectWorld>rowbytesを尊重しているかどうかをテストするには、エフェクトの後にGrow Boundsエフェクトを適用してください。

出力バッファは、入力よりも大きなロウバイトを持つことになります(ただし、論理サイズは同じです)。

バイトアライメント

PF_EffectWorldのピクセルは、16バイト配列であることは保証されません。エフェクトは、より大きなPF_EffectWorldのサブリージョンを取得する場合があります。ピクセル処理最適化のためのAppleのサンプルコードのユーザー、警告されています。

AfterEffectsでは、チャンネルごとの8ビットカラーに加え、チャンネルごとの16ビットおよび32ビットフロートカラーをサポートしています。

エフェクトは、ビット深度が異なる入力と出力の世界を受け取ることはありませんし、自分たちが扱えると主張しているよりも高いビット深度の世界を受け取ることはありません。

不透明(データ型)ピクセルのアクセサー・マクロ

以下のマクロを使用して、(不透明な)PF_PixelPtrs内のデータにアクセスします。

ある型のポインタを別の型に単純にキャストすることは、はっきり言って安全ではありません。このポインタを動作させるためにはキャストが必要であり、間違ったキャストをすることを防ぐものは何もないのです。後日、この実装を変更する可能性があります(その時は、この抽象度を強要したことに感謝することになるでしょう)。

PF_PixelPtr アクセッサマクロ