1

各面の 4 つの頂点を使用して 3D オブジェクトの面を z オーダーするにはどうすればよいですか? 各面の平均 z 値を格納する z バッファを使用してみました。これはほとんどの場合うまく機能しますが、オブジェクトに大きな面と小さな面がある場合は失敗します。

学習の楽しみのためだけに、小さな 3d エンジンをフラッシュで構築しているので、私が持っている唯一のデータは、これらの 4 つの頂点と顔の法線です。

ありがとう!

4

3 に答える 3

1

あなたは可視性の問題 に直面していますが、簡単な答えはありません。このページでは、この問題についてもう少し詳しく説明しています。「実際の」3D エンジンがこれを解決する方法は、シーンをピクセル単位で描画し、これまで任意のピクセルに描画された最上部のオブジェクトの Z 座標を追跡し続けることです。このアプローチは Flash では利用できないため、一般的にできる最善の方法は概算または一般化です。

1 つの一般的なアプローチ (前のリンクで説明) は、面を凸面ポリゴンにグループ化することです。これは、凸面ポリゴンの面を深度ソートするのが簡単で、ポリゴン自体を深度ソートするのが比較的簡単だからです。これが実現可能なら、それが私が行く方法です。

于 2009-09-21T19:05:15.717 に答える
0

Z バッファリングは、すべての面がほぼ同じサイズの場合に最適に機能します。他のものよりも非常に大きいものがある場合、それらは小さいものを「上書き」してアーティファクトを与えます。

唯一の解決策は、大きな面を平均サイズに近い小さな面に分割することです。

于 2009-09-21T11:34:21.567 に答える