重複する分析曲線のカバレッジを正確に計算するにはどうすればよいですか?


10

2D形状のアンチエイリアスは、形状によって覆われているピクセルの割合を計算することになります。単純な重なり合わない形状の場合、これはそれほど難しくありません。形状をピクセルの長方形に対してクリップし、結果の形状の面積を計算します。ただし、複数の形状が同じピクセルに重なると、さらに難しくなります。単純に面積を合計すると、ある形状が別の形状を覆う量を無視すると、計算されたカバレッジが高すぎる可能性があります。たとえば、フォントレンダリングに関するこの記事の「制限」セクションを参照してください。また、2つの曲線が異なる色の異なるオブジェクトからのものである場合もあります(そのため、2つの形状の和集合の総カバレッジではなく、それぞれのカバレッジのカバレッジは異なります)。

完全な精度を気にかけている場合、これはどのように計算されますか?さらにトリッキーですが、曲線などの非多角形の重なり合う部分のカバレッジをどのように正確に計算しますか マルチサンプリングまたは確率論的手法に頼らざるを得ない場合がありますか?

回答:


10

すべてのコーナーケースでこれを効率的に分析するための良い方法は本当にありません。分析カバレッジ計算を行おうとするほとんどまたはすべての商用2Dレンダラーは、マルチサンプリングメソッドが行わない予測可能なエラーを発生させます。

典型的な問題は、同じエッジを共有する2つの重なり合う形状です。一般的な状況は、アルファチャネルが合計されて、わずかにエイリアシングする厚すぎるアルファエッジになることです。または、シェイプの色が異なる場合、システムは背景の色を混乱させます。これは非常に迷惑です。

画像

画像1:レンダリングエンジンがカバレッジを混乱させ、アウトラインのないところに薄い白いアウトラインを作成します。

2番目の完全なカバレッジは、ボックスフィルタリングに相当します。私達は確かにより良くすることができます。形状を正しく処理するためにブール演算を必要とする特別なコーナーケースが非常に多いことを考えると、スーパーサンプリングの方が優れています。実際、カバレッジの見積もりは、サンプリングが最も必要とされる可能性が高い場所に集中するために使用できます。

状況は、サブピクセルレベルのポリゴンに簡略化でき、それから離散分析ソリューションを解決できます。しかし、これは柔軟性を犠牲にしています。たとえば、将来のベクトルシステムでは、他の可変色のオブジェクトと同様に、分析ソリューションに問題を引き起こす可変幅のぼやけたラインを許可する可能性があることは問題外ではありません。

分析する方法

分析シーン

画像2:このシーンがあるとします。右側の分解図

これを分析的に行うだけではなく、各部分を個別に分離してから、データをマージすることができます。それは間違ったデータをもたらすからです。アルファブレンディングを使用すると、隙間から青い輝きが得られます。

あなたがそうしなければならないのは、各形状が他の下にあるものを排除するようにシーンを分割することです:

ここに画像の説明を入力してください

画像3:下にあるサーフェスをカットする必要があります。

すべてが不透明な場合、これは簡単です。各ピースの面積を計算し、それを色で乗算して、それらを合計します。今、あなたはこのようなものを使うことができます。

個々の形状がコース外で不透明でない場合、これはすべて壊れますが、それでもある程度は可能です。

覚えておいてください:

  • AA計算は線形色空間で行われ、使用空間に変換して戻す必要があります。

効率はあまり気にしないとしましょう。形状に対するブール演算のカバレッジ計算をどのように実行しますか?それは一般的に可能ですか、それとも特定の形状のみですか?
John Calsbeek、2015

@JohnCalsbeekわかりました。分析の答えを作成し始めました。しばらく時間がかかります
joojaa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.