Skip to content

ピクセルアスペクト比

エフェクトは、非正方形ピクセルおよび不均一なダウンサンプリング係数を含むフッテージに正しく応答する必要があります。異なるレイヤーパラメータでも異なるピクセルアスペクト比を持つことができます。関係する概念を理解すれば、これを行うことは難しくありません。

単純なエフェクトでは、point parameters を出力内の実際のピクセルに一致させるための作業を行う必要はありません。ポイント パラメータは、ダウンサンプル係数とピクセル アスペクト比に応じてスケーリングされたエフェクトに与えられます。これらは入力バッファの座標系内にあります。これにより、暗黙的な「ピクセル座標系」が提供されます。この座標系は便利で理解しやすいです。ただし、絶対ピクセル測定値またはジオメトリを使用するエフェクトでは、入力バッファと最終的にレンダリングされたイメージの間の関係を詳しく調べる必要があります。


ピクセルが正方形、または 1 対 1 であると想定しないでください

Section titled “ピクセルが正方形、または 1 対 1 であると想定しないでください”

まず、ピクセル アスペクト比と不均一なダウンサンプル係数の両方により、必ずしも正方形の座標系ではありません。最終的にレンダリングされたイメージは、エフェクト処理するピクセルに応じて水平方向に引き伸ばしたり、押しつぶしたりすることができます。円は楕円として表示され、正方形は長方形として表示されます。 2 点間の距離は、この座標系での角度に応じて変化します。このシステムで回転されたものはすべて、最終出力では歪められます。

次に、たとえそれが正方座標系であっても、最終出力と同じサイズである必要はありません。これは、画像がダウンサンプリングされてレンダリングされるときに、ピクセル単位でサイズを定義するスライダーが問題になることを意味します。アンチエイリアシング フィルターの幅は、ダウンサンプル係数に基づいて変化します。

これらの問題が問題にならない場合もあります。 x 座標と y 座標の一次関数のみに基づいてピクセルに色を付けるエフェクトでは、ピクセルのアスペクト比やダウンサンプル係数を気にする必要はまったくありません。入力座標空間にとどまることもオプションですが、ピクセルのアスペクト比とダウンサンプル係数を他の場所で考慮する必要があります。

エフェクト コントロール ポイントで定義されたソース位置からテクスチャ スプライトをスプレーするパーティクル システム エフェクトを作成しているとします。ピクセル座標を使用してパーティクルの位置を表すのは問題ないようですが (パーティクルが点の周りを回転する必要がない限り)、実際にパーティクル テクスチャを レンダリング する場合は、ピクセル アスペクト比とダウンサンプル係数によってテクスチャをスケールする必要があります。

エフェクトのパイプラインに座標変換機構がすでに含まれている場合、多くの場合、より単純な代替手段があります。。多くのアルゴリズムでは、何らかの座標変換が必要です。たとえば、行列を使用して変換を設定します。ただし、簡単に適応できるアルゴリズムは他にもあります。たとえば、位置のみに基づいて各ピクセルの値を計算するテクスチャ生成エフェクトなどです。この場合、コードは生のピクセル位置を取得し、ピクセルのアスペクト比とダウンサンプル係数を考慮する必要があります。


これらすべてを正しく行う最も簡単な方法は、完全な解像度の正方座標で完全に作業し、最終的な出力変換としてダウンサンプル係数とピクセル アスペクト比によってスケーリングすることです。ポイント パラメーターは常に入力バッファー座標で報告されるため、使用する前にフル解像度の正方形座標に変換してください。このアプローチでは、サイズをピクセル単位で定義するスライダーについて心配する必要はありません。フル解像度の垂直ピクセルでサイズを定義するものとして解釈してください。

  1. ポイント パラメータを取得するときは、次のように、すぐに浮動小数点とフル解像度の正方形ピクセル システムに移動します。
x *= in_data>pixel_aspect_ratio.num / (float)in_data>pixel_aspect_ratio.den;
x *= in_data>downsample_x.den / (float)in_data>downsample_x.num;
y *= in_data>downsample_y.den / (float)in_data>downsample_y.num;
  1. この座標空間ですべてのセットアップ (変換行列の定義、後のスキャン変換のための座標の生成、点間の距離に基づく値の計算、物の回転など) を実行します。この段階では実際にピクセルを扱っているわけではないことに注意してください。座標または座標変換を操作しているだけです。
  2. 出力バッファのピクセルに直接対応する座標系に戻るには、ステップ 1 からの変換を元に戻します。この非正方形スペースを処理するコードをできるだけ少なくするために、これをできるだけ遅くしてください。行列を使用している場合、これは最終的な出力変換になります。各ピクセルの座標に基づいて何かをレンダリングするエフェクトの場合、出力ピクセルを反復処理し、そのピクセルに対して処理を実行する前にピクセル座標を正方形の座標に変換します。

これは余分な作業のように思えるかもしれませんが、このようなかなり複雑なエフェクトのほとんどには座標変換ステップが必要です。そうでない場合でも、ピクセル アスペクト比とダウンサンプル係数を正しく処理するために必要です。


ユーザー入力をピクセル単位で適用する

Section titled “ユーザー入力をピクセル単位で適用する”

After Effects は、不必要なフィールド補間を導入しないように、すべてのストレッチを水平方向に実行します。ピクセルを単位として使用する場合、それらを垂直方向のピクセルとみなします。


1/2、1/4、およびカスタム解像度でテストし、出力を比較します。アナモルフィック (2:1) ピクセル アスペクト比構成を使用して、ピクセル アスペクト比処理のバグを追跡し (実際にバグを明らかにします)、必ず異なる水平および垂直ダウンサンプル係数でテストしてください。

一部の開発者は、一部の「After Effects 互換」プラグイン ホストによって提供されるダウンサンプル係数がゼロになるという問題を報告しています。除算する前にゼロを確認してください。