Die sichtbare Oberflächenerkennung (VSD), auch als versteckte Oberflächenentfernung bezeichnet, ist ein entscheidender Prozess in Computergrafiken, der bestimmt, welche Teile einer 3D -Szene für den Betrachter sichtbar sind und welche hinter anderen Objekten verborgen sind. Es ist unerlässlich, da das Rendern jedes Polygons in einer Szene ohne Überlegung rechnerisch teuer wäre und ein falsches Bild erzeugt.
Es gibt mehrere Algorithmen, um dieses Problem mit jeweils unterschiedlichen Komplexitäten und Leistungsmerkmalen zu lösen. Sie können weitgehend kategorisiert werden in:
1. Objekt-Raum-Methoden: Diese Algorithmen funktionieren direkt mit den geometrischen Beschreibungen der Objekte in der Szene. Sie vergleichen Objekte miteinander, um die Sichtbarkeit zu bestimmen. Im Allgemeinen sind sie für komplexe Szenen weniger effizient. Beispiele sind:
* Back-Face-Entfernung: Dies ist die einfachste Methode. Es schneidet Polygone aus (verurteilt), deren Normalen vom Betrachter wegweisen. Obwohl es schnell ist, löst es nur einen Teil des Problems und hinterlässt viele versteckte Oberflächen.
* Tiefe-Sort (Maleralgorithmus): Dieser Algorithmus sortiert die Polygone nach ihrem Abstand vom Betrachter (Tiefe). Die am weitesten entfernten Polygone werden zuerst gerendert, und dann werden näher auf die Teile versteckt. Es ist einfach, kann aber unter Problemen mit sich überschneidenden Polygonen leiden (für die Polygonspaltung erforderlich ist).
2. Bild-Raum-Methoden: Diese Algorithmen funktionieren direkt auf der Bildebene (dem Bildschirm). Sie bestimmen die Sichtbarkeit auf Pixel-by-Pixel-Basis. Sie sind im Allgemeinen effizienter für komplexe Szenen. Beispiele sind:
* Z-Buffer (Tiefenpuffer) Algorithmus: Dies ist die am weitesten verbreitete Methode. Es führt einen Tiefenpuffer (ein 2D -Array) mit derselben Größe wie der Bildschirm und speichert den Tiefenwert (Abstand vom Betrachter) für jedes Pixel. Wenn Polygone gerendert werden, werden ihre Tiefenwerte mit den Werten im Z-Puffer verglichen. Wenn ein Polygon näher ist, ersetzt sein Tiefenwert das vorhandene und das Pixel wird durch die Farbe des Polygons aktualisiert. Andernfalls bleibt das Pixel unverändert.
* Scan-Line-Algorithmus: Dieser Algorithmus verarbeitet die Szene -One -Scanline (horizontale Linie) gleichzeitig. Für jede Scanline bestimmt es, welche Polygone die Linie schneiden und diese Polygone dann nach Tiefe sortiert, um die Sichtbarkeit zu bestimmen.
* A-Puffer-Algorithmus: Eine Erweiterung des Z-Puffer, der weitere Informationen pro Pixel speichert und es ermöglicht, Transparenz und andere Effekte effektiver zu verarbeiten. Es speichert einen Tiefenwert, einen Abdeckungswert (Teil des von einem Polygon bedeckten Pixel) und Farbinformationen.
* Strahlenverfolgung: Diese Methode zeichnet Strahlen aus dem Auge des Betrachters durch jedes Pixel auf dem Bildschirm in die Szene aus. Das erste von jedem Strahl geschnittene Objekt bestimmt die Farbe dieses Pixels. Es kann reflektiert und refraktionen elegant umgehen. Obwohl es rechnerisch teuer ist, erzeugt es hochrealistische Bilder.
eine Methode auswählen:
Die Auswahl der sichtbaren Methode zur Erkennung von Oberflächen hängt von Faktoren ab, wie z. B.:
* Szenenkomplexität: Für einfache Szenen können Objektraummethoden ausreichen. Komplexe Szenen erfordern im Allgemeinen Bild-Raum-Methoden.
* gewünschtes Realismus -Niveau: Ray Tracing erzeugt den höchsten Realismus, ist aber rechenintensiv. Z-Bufferen ist ein guter Kompromiss zwischen Geschwindigkeit und Qualität.
* Hardwarefunktionen: Die Verfügbarkeit von spezialisierter Hardware (z. B. Z-Buffer-Hardware) kann die Auswahl beeinflussen.
In der modernen Grafikhardware ist der Z-Buffer-Algorithmus stark optimiert und wird fast universell für eine schnelle, einigermaßen genaue, versteckte Oberflächenentfernung verwendet. Strahlenverfolgung und andere ausgefeiltere Techniken werden häufig für höhere Rendering-Anwendungen verwendet, bei denen die Geschwindigkeit weniger kritisch als Bildqualität ist.