2

複数のアンチエイリアスラインの合成をうまく処理するグラフィックシステムを知っている人はいますか?

依存関係の図を示しており、ある点から多数の曲線が出ています。これらは、部分的に覆われたピクセルをブレンドする通常の方法でアンチエイリアス処理されて描画されます。したがって、2つの線がピクセルの同じ半分を占める場合、アンチエイリアスはそれを50%塗りつぶしではなく、75%塗りつぶしにブレンドします。十分な数の線が互いに重なり合うと、ピクセルブレンドがクランプされ、エイリアシングされた線になります。

アンチグレインジオメトリには、隣接するラインに対応するブレンドを計算するためのアルゴリズムがあり、オーバーサンプリングが機能する可能性があることを知っていますが、他のアプローチはありますか?

4

3 に答える 3

2

この形式のライン構成を適切に処理するには時間がかかります(遅延レンダリングアプローチを使用して、各ピクセルに衝突するすべてのラインを考慮する必要があります)。私はあなたのためにそれをする多くの(もしあれば)ライブラリがそこにあるとは思えません。

事実上すべての描画ライブラリで機能する最も速くて簡単な方法(そしておそらくあなたの場合の唯一の現実的で費用効果の高い解決策)はそれをスーパーサンプリングすることです-はるかに高い解像度(例えば4倍広くて高い)でオフスクリーンビットマップに描画します、4ピクセル幅の線で。これを描画するときはアンチエイリアスを無効にします。速度が低下するだけです)。次に、双一次フィルタリングを使用して結果を縮小します。主な欠点は、オフスクリーンビットマップに大量のメモリを使用することです。

于 2009-12-29T11:09:45.357 に答える
1

アンチエイリアス処理された線を「視覚的に正しく」取得する既存のシステムが必要な場合は、いくつかの既存のRenderMan準拠の3Dレンダラーのいずれかを使用してみてください。これらのレンダラーの多くが使用するREYESアルゴリズムは、プリミティブをマイクロポリゴンに分割し、各ピクセル内のいくつかのランダムなポイント位置でそれらをサンプリングすることによって機能します。したがって、ピクセルの50%をまとめて覆い隠す100万本の線がある場合でも、結果の画像値は約50%のカバレッジを示します。(これは、たとえば、多くのアニメーション映画のキャラクターに何百万ものアンチエイリアス処理された髪が描かれる方法です。)

もちろん、本格的な3Dレンダラーを使用して2D線を描画することは、ハンマーで釘を打ち込むようなものです。3Dレンダラーを従来の2Dレンダラーで単純にスーパーサンプリングするよりも効率的にするには、かなり病理学的なシナリオが必要です。

于 2009-12-29T16:36:39.037 に答える
0

私が知らない既製の描画ライブラリが必要なようです。

ただし、機能するアプローチを知っているという質問に答えるために、ピクセルを正方形と見なすことができます。次に、ピクセルボックスと交差するポリゴンとして描画する任意の形状を近似できます。これらのポリゴンをピクセルのボックスに対して、および相互に対してクリップすることにより、正確なアンチエイリアシングのために、ピクセルと交差する各色に関連付けられた領域の非常に適切な推定値を取得できます。もちろん、これは計算に非常に時間がかかり、インタラクティブな描画には適していません。

于 2009-12-29T10:32:21.100 に答える