Ich kann nicht wirklich herausfinden, warum eine Oberfläche eine andere überlappt. In einer 3D-Engine, die ich erstelle, schlägt meine Technik in Randfällen fehl.
Meine Methode besteht darin, die zu lackierenden Flächen vom weitesten zum nächsten zu sortieren. Um die Nähe zu bestimmen, vergleiche ich die durchschnittlichen z-Werte. Manchmal hat eine überlappende Oberfläche jedoch einen höheren durchschnittlichen z-Wert als die überlappende. So wird die weiter entfernte Oberfläche über die nähere gestrichen - was zu einer bizarren Darstellung wie folgt führt:
Was man sehen soll, ist nur die lila Vorderseite des Würfels, während die rote Seitenfläche über die lila gemalt ist. Der durchschnittliche z-Wert der violetten Oberfläche ist höher und daher "weiter entfernt". Ich habe also Zweifel, ob diese Technik korrekt ist.
Was ich auch versucht habe, ist die Entfernung von der Kamera (dh dem Ursprung) zur Oberfläche, aber dann brauchte ich einen Punkt. Ich habe die Mitte jeder Oberfläche gewählt, aber auch dies scheint nicht immer zu funktionieren, da nicht alle Oberflächen so groß wie die anderen sind.
Was ist daher ein zuverlässiger Weg, um die Reihenfolge der Nähe von Oberflächen zum Ursprung zu bestimmen?