2

私が一連のブロックをレンダリングするシェーディング付きの粗いモデル ビューアを openGL に実装したとしましょう。

http://i.imgur.com/TsF7K.jpg

モデルを横に回転すると、視野角が急なサーフェスに沿って不要なギザギザ効果が発生します。

http://i.imgur.com/Bgl9o.jpg

これは、モデルとワイヤフレーム間の z ファイティングを防ぐために使用したポリゴン オフセットによるものだと確信していますが、openGL でこの望ましくない効果を防ぐ係数/単位パラメータを見つけることができません。

  1. これを防ぐためのglPolygonOffsetの係数と単位の最適な値は何ですか?

  2. アンチエイリアシングを実装すると問題が軽減されますか? パフォーマンスのトレードオフは取るに足らない/重要ですか?

  3. これはおそらくシェーディングの問題ですか?この考え方に沿って解決策を試す必要がありますか?

4

2 に答える 2

3

それは私にはZファイティングのようには見えません..

フラット シェーディング オブジェクトを描画し、その上に GL_LINES を描画すると、これらの線はアンチエイリアスされていないため、その効果が生じます。

オブジェクトにグリッド テクスチャを適用してみませんか? そうすれば、OpenGL のテクスチャ フィルタリングを利用できます。次のことを試すことができます。

  • このテクスチャで MIN_ および MAG_ フィルタリングを有効にします。
  • gluBuild2DMipmaps を使用してミップマップでテクスチャを作成します。(ミップマップの生成を参照)
  • 異方性フィルタリングを有効にしますか? (このページを参照)
于 2010-04-11T17:42:04.487 に答える
1


1)Zバッファの解像度が低すぎる、つまり16ビットのZバッファを設定しているため、急な角度でZファイティングが発生している可能性があります(つまり、すべてのポイントのz値が非常に似ている場合) 。解像度を32ビットに変更する
2)モデルが非常に小さい、つまりすべてのポイントが近すぎます。モデルをスケールアップしてみてください。

固定オフセットを使用すると、一貫性のない結果が得られます。これは、ほとんどのzバッファスキームがバイアスされて、ニアクリッププランに近いほど解像度が高くなるためです。つまり、ニアクリッププレーンに近いほどオフセットを小さくする必要があります。

これは、問題をより詳細に説明 するgamedevの記事です。

アンチエイリアシングとシェーダーの変更がここであまり役に立たないことに注意してください(z値を変調するためにファンキーなカスタムピクセルシェーダーを実行した場合を除きますが、ピクセル/フラグメントシェーダーの専門家ではないので、それは私にはやり過ぎのようです。実行可能)

于 2010-04-10T11:55:27.313 に答える