1

透明なテクスチャでモデルを描画すると、次のようになりました。

悪い木

作画の順番が悪いのが原因だと思います。残念ながら、私はモデラーではありません。turbosquid のモデルを持っていますが、次のようになります

FBX モデルは、複数のボーンを持つ 1 つのマッシュで構成されます。XNA4でボーンを逆順に描画することは可能ですか? (独自のシェーダーではなく、基本的な効果を使用しています)

または、プログラムでボーンの順序を逆にすることはできますか? このようなもの :

    m.Bones = m.Bones.Reverse();
4

1 に答える 1

0

いいえ、ボーンは「描画」されません。ボーンはメッシュ内の頂点に変換を提供し、(たとえば) 木を曲げることができます。各頂点は、1 つまたは複数のボーンから変換値を取得します。次に、メッシュ (これらの頂点で構成される三角形で構成される) が描画されます。

描画順序の変更は、特定のカメラの向きでのみ機能します。基本的に、モデルの各三角形は常に後ろから前に描画する必要があります。多くの場合、パフォーマンス上の理由からこれを行うことはできません。特に、単一のモデル内の個々の三角形の場合です。

これを回避する方法があります。深度バッファーを使用すると、描画される個々のピクセルを並べ替えることができます。ピクセルが以前に描画されたものの「前」にある場合、画面上のピクセルが置き換えられ、新しい「前」になります。後ろにある場合は、単に描画されません。

ここで発生する問題は、モデルに透過性が含まれていることです。深度バッファの使用中に透明ピクセルが描画されると、その「下」に描画されるべきピクセルが「非表示」になります (視覚的に言えば、透明であるため、何も非表示にすべきではありません)。

その問題の解決策は、アルファ テストを使用することです。有効にすると、透明なピクセルが描画されることはありません。したがって、深度バッファが台無しになることはありません。

これを行うには、で使用する必要がありAlphaTestEffectますDepthStencilState.Default

于 2012-06-28T13:16:17.847 に答える