11 3D-Graphik: Sichtbarkeit
Die Komplexität des Problems der Entfernung
verdeckter Kanten (engl. Hidden-Line Removal) bzw. verdeckter Flächen (engl.
Hidden-Surface
Removal) hat zu einer Vielzahl von unterschiedlichen Lösungen geführt.
Die entwickelten Verfahren lassen sich grob in drei Gruppen einteilen:
- Objektraum-Verfahren
- Bildraum-Verfahren
- Hybride Verfahren
Objektraum-Verfahren
arbeiten im Weltkoordinatensystem der jeweiligen
Problemstellung und vergleichen Objekte bzw. Objektteile untereinander, um die
Sichtbarkeit zu
bestimmen Üblicherweise liefern diese Verfahren Ergebnisse, die in ihrer
Genauigkeit der Rechengenauigkeit entsprechen. Daraus ergibt sich der Vorteil,
dass sich die berechneten sichtbaren Teile beliebig vergrößert darstellen
lassen.
Bildraum-Verfahren
arbeiten im Gerätekoordinatensystem und entscheiden
für jeden einzelnen Bildpunkt, welches Objekt sichtbar ist. Die Genauigkeit der
Berechnung entspricht dabei der Geräteauflösung. Bei Vergrößerung der
berechneten Darstellung lassen sich in der Regel keine akzeptablen Ergebnisse
erzielen (Rastereffekte, Aliasing).
Objektraum-Verfahren :
Backface-Culling
Es werden die Polygone entfernt, die vom Augenpunkt
(virtuelle Kamera) wegzeigen.
Bemerkungen:
Die zu entfernenden Polygone sind über ihren Normalenvektor (Vektor, der
senkrecht auf der Polygonebene steht) identifizierbar, wenn angenommen wird,
dass er bezüglich des Polyeders nach außen zeigt. Dann sind alle Polygone zu
entfernen, deren Normalenvektor mit der Blickrichtung einen Winkel zwischen -90°
u. 90° bilden.

Objektraum-Verfahren :
Brute-Force-Algorithmus
Für ein Polygon SP werden die sichtbaren Teile
berechnet, indem es sukzessive gegen die anderen Polygone geclippt wird. Dazu
wird für jedes Polygon VP eine Pyramide bestimmt, die durch den Augenpunkt und
das Polygon selbst definiert ist. Teile des Polygons SP sind unsichtbar, wenn
sie sich im Inneren der Pyramide befinden und bzgl. des Augenpunktes hinter VP
liegen. Ein Polygon wird an der Pyramide geclippt, indem es an der jeder
Seitenfläche (bzw. der zugehörigen Ebene) der Pyramide geclippt wird.
Bildraum-Verfahren :
Tiefenpuffer-Algorithmus
u Annahme:
u Für jeden Bildpunkt kann ein Tiefenwert (z-Wert) berechnet werden.
u Vorgehensweise:
u Die Polygone der Szene werden nacheinander auf die Bildebene
projiziert und verrastert.
u Für jeden Bildpunkt eine Polygons wird seine Entfernung zum
Augenpunkt (Tiefeninformation) bestimmt und mit dem für den
Bildpunkt bereits gespeicherten Tiefenwert verglichen.
u Ist seine Tiefe geringer, wird diese dem Bildpunkt zugewiesen und
dieses Polygon als an diesem Bildpunkt sichtbar vermerkt.
u Die Sichtbarkeitsinformation und die Tiefeninformation werden jeweils
in einem zweidimensionalen Feld mit der Auflösung des Viewports
abgelegt.

Hybride Verfahren :
Prioritätslistenverfahren
Mischung aus Objektraum- und Bildraum-Verfahren Die Polygone der Szene werden im
Objektraum nach abnehmender Entfernung zur virtuellen Kamera sortiert (Aufbau
der Prioritätsliste) Das Sichtbarkeitsproblem wird im Bildraum durch Darstellung
der Polygone in der Reihenfolge der
Prioritätsliste gelöst. Die Bildpunkte entfernt liegender Polygone werden durch
davor liegende Polygone überschrieben.
Hybride Verfahren : Painter‘s
Algorithmus
Sortieren der Polygone nach dem Abstand zur Kamera Ausgabe der Polygone von
hinten nach vorne
Problem:
Bei zyklischer Verdeckung ist die Darstellung nicht korrekt
Hybride Verfahren : Binary Space
Partition (BSP)
Aufbau einer Raumzerlegung in Form eines binären
Suchbaumes (BSP-Baum) in einem Vorverarbeitungsschritt Der BSP-Baum erlaubt es
dann, für jede Projektion (Position der Kamera) schnell eine Reihenfolge für die
Darstellung der Polygone zu finden, so dass die Verdeckung korrekt ist. Das
Verfahren eignet sich besonders für statische (sich nicht verändernde) Szenen,
die aus verschiedenen Blickrichtungen betrachtet werden.
Normalenvektor Berechnen
Der Normalenvektor n eines Polygons lässt sich aus
drei nicht kollinearen (auf einer gemeinsamen Gerade liegenden) Punkten p, q,
und r mit dem Kreuzprodukt berechnen:
n=(q-p)x(r-p)

OPENGL
OpenGL bietet zwei Verfahren zur Entfernung
verdeckter Flächen
Backface-Culling
Tiefenpuffer-Algorithmus