Hidden Surface Elimination

Hallo,

ich programmiere gerade eine 3D-Ansicht, die im wesentlichen Dreiecke darstellt.

Dazu mache ich zunächste eine Koordinatentransformation der Eckpunkte meiner Dreiecke, so dass der neue Ursprung beim Betrachter liegt und so weiter, dies klappt auch wunderbar.

Nur nun ist mein problem folgendes: Ich muss irgendwie die Dreiecke loswerden, die nicht sichtbar sein können. Ich habe etwas gefunden im Internet, da schreiben sie einfach der z-Wert des Normalenvektors des Dreiecks muss

Das Problem, daß Du schilderst, ist anspruchsvoll. Das von Dir benutzte Verfahren („Backface Culling“) funktioniert nur bei einzelnen, geschlossenen und vollständig konvexen Körpern. Hierbei muß außerdem sichergestellt werden, daß alle Normalenvektoren vom Körper wegzeigen. Die Fläche ist immer dann nicht sichtbar, wenn der Vektor vom einem beliebigen Eckpunkt des Dreiecks zum Augen-Punkt (Projektionspunkt) mit dem Normalenvektor des Dreiecks einen Winkel größer 90 Grad einschließt, bzw. das Vektorprodukt negativ ist. Das funktioniert deshalb, weil wenn ein Punkt des Dreiecks unsichbar ist, dann sind es alle Punkte des Dreiecks.
Hat man mehrere Körper, bzw. Körper mit Aushöhlungen, dann gehts nicht mehr so einfach. Dann müssen kompliziertere Verfahren wie Z-Buffer angewendet werden.

Gruß Moriarty

Oh mann wie kann man nur so doof sein wie ich :wink:
ich rätsel mir da einen ab und es ist so einfach…

alle diese Rahmenbedingungen sind bei unserer Programmieraufgabe erfüllt… eine Zeile Code nur und es geht !! *ärger* :wink:

Danke
Bru