あるサーフェスが別のサーフェスとオーバーラップする原因を実際には理解できません。私が作成している3Dエンジンで、私のテクニックはエッジケースで失敗しています。
私の方法は、ペイントするサーフェスを最も遠いものから最も近いものに並べ替えます。近さを判断するために、平均z値を比較しています。ただし、場合によっては、オーバーラップしているサーフェスの平均z値が、オーバーラップしているものよりも高くなることがあります。したがって、より遠い表面が近い表面の上にペイントされます-このような奇妙なレンダリングになります:
見ようとしているのは、立方体の紫色の前面のみですが、赤い側面は紫色のものの上に描かれています。紫色の表面の平均Z値は高く、したがって「遠く」にあります。だから私はこのテクニックが正しいかどうかについていくつかの疑問を持っています。
また、カメラ(原点)から表面までの距離を取得することも試みましたが、ポイントが必要でした。各サーフェスの中央を選択しましたが、すべてのサーフェスが互いに同じ大きさではないため、これが常に機能するとは限りません。
したがって、原点に向かう表面の近さの順序を決定する信頼できる方法は何ですか?