1

OK、私の XNA プロジェクトでは、単純なシェーダーとモデルの読み込みコードを追加しました。何でも機能します。3Ds Max で非常に単純な低詳細モデルを作成しました。FBX 形式で XNA にエクスポートおよびインポートされます。

問題は、単純なカメラをこのモデルから少し離すと、そのコンポーネントの 1 つがちらつき始めることです。別のモデルを試してみましたが、同じ状況で、モデルから少し離れた場合にのみ、一部のコンポーネントがちらつき始めます。

このちらつき (または点滅または ..) は、(おそらく) テクスチャ オブジェクトでのみ表示され、次のように見えます。 . :(

更新: 今、私は知っています - 問題は私のモデルにあります (私はいくつかの他のモデルをチェックしました)。理由はわかりませんが、平面オブジェクトがちらつきます。問題は Plane オブジェクトにないのかもしれません。

ここに画像の説明を入力

4

2 に答える 2

5

これは経験に基づいた推測にすぎませんが、ファー プレーンが遠すぎるか、ニア プレーンが近すぎるか、またはその両方です。

遠近法カメラは、次のような表示可能領域を提供します。

視錐台を見る

Z バッファー (深度バッファー) は、近い面と遠い面の間の範囲をカバーします。典型的な Z バッファーの精度は 24 ビットで、2 24の可能な値が得られます。ニア プレーンとファー プレーンが離れているほど、可能な各値がカバーしなければならないワールド空間の距離が大きくなります。つまり、Z バッファーの精度が低下します。

あなたが見ているものは、「Z-fightingとして知られています。これは、指定された 2 つのピクセルの深さを区別するのに Z バッファが十分に正確でない場所です。したがって、すでにレンダリングされたものの「背後」にあるとして拒否されるべきであったピクセルが、代わりに描画されてしまいます。

(または、モデルには同一平面上またはほぼ同一平面上にある三角形がいくつかあります。つまり、サーフェスが互いに近すぎる三角形です。同じ問題: Z バッファーの精度が 2 つのサーフェスを区別するのに十分ではありません。)

背面カリング ( RasterizerState.CullCounterClockwise) がまだ有効になっていない場合は、有効にすることもできます。これにより、カメラとは反対側を向いている三角形がカリングされ、Z ファイティングの原因の 1 つが取り除かれます。

于 2013-06-16T12:04:42.000 に答える
0

同じ平面内に 2 つ以上のサーフェスが重なっているモデルで、これが発生するのを見たことがあります。一方のサーフェスは他方のサーフェスの内側にありますが、同じ平面にあります。そのため、システムはどちらのサーフェスが他方のサーフェスの前にあるかを判断できず、通常は終了します。両面をマッシュアップ。

モデルの下のベース シェイプを構成する大きな長方形のサーフェスと交差する小さな長方形のサーフェスがあるように見えます。おそらくボックス内の別のオブジェクトからですか?それとも、その表面上で互いの内側に 2 つの長方形を残したオブジェクト減算エラーからでしょうか? どちらの方法でも、モデルを修正して、互いに 2 つのサーフェスが存在しないようにします。

于 2013-06-16T13:07:23.380 に答える