PF_EffectWorld / PF_LayerDef — After Effects SDK Guide 22.0.0 documentation
After Effectsでは、PF_EffectWorlds
(PF_LayerDefs
とも呼ばれる)を使って画像を表現します。
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 からCGrafPtr とGDeviceHandle を提供します。 |
|
注:PF_Cmd_GLOBAL_SETUP 中は、まだ出力コンテキストがないため、platform_ref を取得できません。我慢してください、私のペット。 |
|
dephault | レイヤーパラメーターのみ対象。 |
PF_LayerDefault_MYSELF または PF_LayerDefault_NONE のどちらかです。 |
PF_Cmd_SMART_RENDER_GPU
では、PF_LayerDef
は通常のCPUレンダリングと同様に記入されますが、PF_LayerDef.data
はNULLとなり、他のフィールドはすべて有効です。
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
内のデータにアクセスします。
ある型のポインタを別の型に単純にキャストすることは、はっきり言って安全ではありません。このポインタを動作させるためにはキャストが必要であり、間違ったキャストをすることを防ぐものは何もないのです。後日、この実装を変更する可能性があります(その時は、この抽象度を強要したことに感謝することになるでしょう)。