Wer 3D-Computerspiele spielt, kennt sich die Situation, dass man wegen irgendeines Fehlers im Spiel plötzlich mit seiner Figur hinter einer Mauer oder einer Wand steht, hinter die man eigentlich gar nicht gelangen sollte. Seltsamerweise sieht man die Wand dann aber nicht mehr. Öfter passiert dies natürlich, wenn man einfach nur mit der Kamera hinter die Wand fährt (bei einer Third-Person-Ansicht).

Warum?

Dies liegt am sogenannten Culling in der 3D-Grafik. Culling bedeutet, dass nur solche Felder angezeigt werden, die in einer bestimmten Richtung angegeben sind. Je nach Standard gibt man einzelnen Punkte des Feldes entweder im oder gegen den Uhrzeigersinn an. Diese Reihenfolge muss man beibehalten, damit die Grafiken gezeichnet werden.

Bewegt man sich nun mit seiner Figur hinter eine Wand, für die nie eine Rückseite vorgesehen war (weil der Charakter nicht dorthin gelangen sollte), dann ist die Reihenfolge der Punkte aus der neuen Sicht falsch. Wenn du Zahlen im Uhrzeigersinn auf ein Blatt malst und das Blatt dann von der anderen Seite betrachtest, dann sind die Zahlen (soweit du sie noch siehst ;) ) aus dieser Richtung gegen den Uhrzeigersinn. Die Grafikkarte würde sie also sofort verwerfen.

Das wird natürlich nicht gemacht, damit man bei fehlerhaften Wänden noch hinaussieht :D Es hat mit Geschwindigkeitssteigerungen zu tun. Durch Culling will man so viele unnötige Objekte wie möglich so früh wie möglich verwerfen. Normalerweise müsste die Grafikkarte bei einer Spielfigur z.B. prüfen, welche Seite der Figur nun vorne liegt (sichtbar ist) und welche hinten. Wenn die Rückseite aber sowieso wegen Culling verworfen wird, entfällt der Schritt gleich.

Beispiel

Ich will mal ein Beispiel anhand einer Kamera hinter einem Berg geben. Stell dir vor, der Berg ist so gedacht, dass man als Spieler nie hinein kann, also gibt es keine speziell programmierte Innenwand.

Rot erscheint transparent, grün ist sichtbar. Das Männchen steht auf der Seite, die der Spieler eigentlich sehen sollte. Die Kamera konnte aber hinter den Berg geschoben werden.

Wenn nun die Kamera an der obigen Position ist, sieht man einen kleinen Teilbereich von oben (wegen der schiefen Kameraposition), also der richtigen Seite; den überwiegenden Teil aber von hinten, also der falschen Seite. Ich habe die Seite, die man sieht, grün gezeichnet. Und die Seite, die man nicht mehr sieht, rot. Man hat auf dem Bildschirm also einen ganz komischen Effekt. Man sieht oben am Monitor ein bisschen Berg und plötzlich ist der Berg weg und man sieht durch den Berg hindurch (und die Spielfigur).

Das ist möglich, weil die Kamera in den Berg hineinfahren konnte. Gäbe es eine Kollisionserkennung für die Kamera, könnte so eine Situation nicht auftreten.

I do not maintain a comments section. If you have any questions or comments regarding my posts, please do not hesitate to send me an e-mail to stefan@eliteinformatiker.de.