1

Direct3D でワイヤフレーム フィル モードを使用すると、面が 2 つの三角形に分割されるため、すべての長方形の面に対角線が表示されます。この行を削除するにはどうすればよいですか? 隠れた面も取り除きたいです。ワイヤーフレーム モードでは、これは行われません。

Direct3D モデルをアイソメ ワイヤフレーム ビューで表示する必要があります。レンダリングされたシーンは、モデルの面の境界を表示する必要がありますが、対角線を除外する必要があります。

4

3 に答える 3

2

ハードウェアは三角形のみを描画する可能性が高く、どのエッジが対角線であるかを判断するのが難しいため、対角線を取り除くのは難しいです。または、ワイヤーフレームテクスチャ(または適切なテクスチャを生成するシェーダー)を適用することもできます。これで隠線の問題は解決しますが、線の太さはz距離に依存するため、奇妙に見えます。

ラインプリミティブの使用は簡単ではありませんが、カメラの反対側を向いているサーフェスは簡単に削除できますが、部分的に隠されたサーフェスは手動でクリッピングする必要があります。最後の考えとして、2パスアプローチを実行します。最初のパスは塗りつぶされたポリゴンを描画しますが、zバッファーにのみ描画し、次に適切なzバイアスを使用して上部に線を描画します。それは部分的に不明瞭な表面の問題を処理します。

于 2008-11-06T12:13:11.350 に答える
1

組み込みのワイヤフレーム モードは、プリミティブのエッジをレンダリングします。D3D のように、プリミティブは三角形 (または線、または点 - ただし、任意の多角形ではない) です。つまり、組み込みの方法ではそれがカットされません。

ある種の「エッジ検出」アルゴリズムを調べる必要があると思います。これらは画像空間で動作し、モデルをテクスチャにレンダリングし、各論理ポリゴンに一意の色を割り当て、ピクセル シェーダーを使用して後処理パスを実行し、色の変化を検出します (色の変化 = 黒を出力し、それ以外の場合は何か他のものを出力します)。 )。

または、必要なエッジのみを含むライン リストを作成してレンダリングすることもできます。

さらに別の方法として、Direct3D 10 のジオメトリ シェーダーを使用することもできます。

于 2008-11-06T14:02:13.783 に答える
0

ワイヤーフレーム モードは組み込みモードであるため、これらの線を手動で描画する必要があると思います。そのため、それを変更することはできないと思います。メッシュ内の頂点のリストを取得し、それらを処理して、描画する必要がある線のリストにすることができます。

于 2008-11-06T20:30:40.363 に答える