DOC

Werbung
10. Visible Surface Determination
auch: Visibilitätsrechnung
"Hidden Surface Removal" (HSR)
"Visible Surface Determination" (VSD)
Problem der Verdeckung (Unsichtbarkeit von Teilen
einer Szene) entsteht dadurch, dass Projektionen nicht
injektiv sind
 mehrere Objektpunkte haben denselben Bildpunkt
("Projektionsäquivalenz"), aber nur einer davon ist
"sichtbar" (= bestimmt Farbe u. Intensität des betr.
Pixels).
Im Folgenden:
 Problemdefinition
 Konservative Sichtbarkeitstests für die Vorverarbeitung
 Algorithmen (hier nur drei, es gibt sehr viel mehr!)
Problemdefinition:
Gegeben sei eine Menge von 3D-Objekten und die
Spezifikation einer Ansicht dieser Szene (Kameramodell).
Problem: Bestimme, welche Linien oder Flächen der
gegebenen Objekte unter der gegebenen Ansicht
sichtbar sind.
Drei Klassen von Algorithmen:
1. Bildraumalgorithmen ( image precision)
 Sichtbarkeit wird für diskrete Bildpunkte bestimmt
 Beispiel: z-Buffer
2. Objektraumalgorithmen ( object precision)
 exakte Sichtbarkeitsbestimmung im Modellraum
 Beispiele: Clipping von Polygonen an Polygonen, 3DTiefensortierung, BSP-Bäume
3. Hybride Algorithmen
 arbeiten sowohl im Objekt- als auch im Bildraum
Zusätzlich: "konservative Sichtbarkeitstests"
(Vorverarbeitung): Aussondern von mehr oder weniger
"trivialen" Fällen. Beispiel: Back-face culling.
Back-face culling
Entfernen von nicht sichtbaren Rückseiten, d.h. von
allen Polygonen, die vom Betrachter weg zeigen
(diese Rückseiten machen etwa die Hälfte aller Flächen
aus!)
setzt voraus:
 Objekte sind als Polygonnetze modelliert, der
Betrachterstandpunkt liegt außerhalb
 Polygone sind orientiert: Festlegung von "innen" und
"außen" hinsichtlich des modellierten Körpers.
Testgrundlage: nach außen zeigende Normalen der
Polygone.
Zwei Möglichkeiten der Betrachtung:
 Line-of-Sight-Interpretation
 Halbraum-Interpretation
Line of Sight (LOS):
Strahl vom Betrachterstandpunkt (COP) zu einem
beliebigen Punkt des Polygons
(bei Parallelprojektion ist die LOS identisch mit der DOP)
Zeigt die Normale zur selben Seite wie die LOS (Winkel
< 90°), dann handelt es sich bei dem Polygon um eine
zu entfernende Rückseite.
Rechnerisch: Skalarprodukt prüfen
LOS  Normale > 0  unsichtbar
LOS  Normale  0  möglicherweise sichtbar
Halbraum-Interpretation:
Normalenform der Ebenengleichung für die PolygonEbene:
(Normale  x) + D = 0
Die Ebene teilt den übrigen Raum in zwei Halbräume:
(Normale  x) + D > 0: x liegt im positiven Halbraum
(Normale  x) + D < 0: x liegt im negativen Halbraum
Polygon zeigt vom Betrachter weg, wenn sich der
Betrachterstandpunkt (COP) im negativen Halbraum
befindet:
unsichtbar, wenn (Normale  COP) + D < 0
beide Interpretationen sind letztlich äquivalent (LOS
lässt sich aus COP und Polygonpunkt berechnen).
Algorithmen zur Visible Surface Determination
1. Z-Buffer-Algorithmus
häufig in der Hardware implementiert
z-Buffer (z-Puffer, Tiefenpuffer): pixelbezogener
Speicher für die z-Werte
 schon 1974 vorgeschlagen, aber damals nicht
realisiert
 heute dominierender Algorithmus für Rastergeräte
Vorgehensweise:
die Polygone können in jeder beliebigen Reihenfolge
gezeichnet werden
Beispiel:
(hier z-Werte nicht zwischen 0 und 1, sondern zwischen 0 und 255;
implementationsabhängig)
Algorithmus:
Effiziente Implementierung: z-Werte im Inneren der
Polygone durch Interpolation bestimmen
 ähnliche Vorgehensweise wie beim ScanlinienAlgorithmus zum Polygonfüllen
 Interpolation zunächst entlang der Polygon-Kanten,
dann entlang der Scanlinien im Inneren
 erweiterbar zu inkrementellem Verfahren zur
Bestimmung der z-Werte
– Transparenz ist nicht realisierbar
Verbesserung:
Hierarchischer z-Buffer-Algorithmus
Ersetze z-Buffer durch "z-Pyramide"
tiefste Ebene: z-Buffer in maximaler Auflösung
höhere Ebenen: Jedes Pixel repräsentiert die maximale
Tiefe der vier Pixel "unter" ihm
Grundidee: hierarchische Rasterung des Polygons;
früher Abbruch, wenn Polygon verdeckt ist.
 Polygon zuerst gegen die höchste Ebene testen
 Wenn das Polygon weiter entfernt ist als die Tiefe, die
im entspr. (Makro-) Pixel gespeichert ist: verdeckt
 wenn näher: Test gegen die nächstniedrige Ebene,
usw.
 Wenn Polygon auf der tiefsten Ebene sichtbar ist,
dann zeichnen und z-Pyramide aktualisieren.
Nutzung von Kohärenz in zweierlei Hinsicht möglich:
 Ein in einem Pixel verdecktes Polygon ist
wahrscheinlich auch in benachbarten Pixeln verdeckt
(Bildraum-Kohärenz, wird inhärent von der Pyramide
genutzt)
 Polygone nahe einem verdeckten Polygon sind
möglicherweise auch verdeckt (ObjektraumKohärenz).
Verbesserung des Algorithmus durch Ausnutzung der
Objektraum-Kohärenz:
 Unterteile die Szene durch einen Octree
 Geometrische Objekte in einem Knoten des Octrees
sind in einem Würfel enthalten (bounding volume).
 Bevor der Inhalt des Würfels gerendert wird: Teste die
Seiten des Würfels gegen die z-Pyramide!
 Wenn die Seitenflächen des Würfels verdeckt sind,
dann ist auch die Geometrie im Inneren des Würfels
verdeckt – gesamten Inhalt ignorieren.
(Dieser Ansatz ist ein Beispiel für eine "bounding volume
hierarchy - Technik", wovon es noch andere Varianten gibt.)
2. BSP-Bäume (Binary Space Partition)
Objektraum-Verfahren für die Sichtbarkeitsrechnung,
entwickelt von Fuchs, Kedem & Naylor um 1980
 sehr effizient für statische Szenen und möglicherweise
wechselnden Betrachterstandpunkt
 zeit- und speicherintensives Preprocessing, aber
lineare Zeit für Display
 Preprocessing nur einmal nötig, kann für alle Betrachterstandpunkte genutzt werden (wichtig für walkthrough)
Konstruktion des BSP-Baumes (Prinzip):
 wähle ein Polygon, Unterteilung erfolgt entlang der
Ebene dieses Polygons
 alle Polygone danach unterteilen, ob sie im positiven
oder negativen Halbraum dieser Ebene liegen
 wird ein Polygon von der Ebene geschnitten: Zerlegen
in Teilpolygone
 Rekursion in den negativen Halbraum
 Rekursion in den positiven Halbraum
Konstruktion des BSP-Baumes (Algorithmus):
Beispiel:
Polygone der Szene
zweite Unterteilung:
dritte Unterteilung:
erste Unterteilung
vierte (letzte) Unterteilung:
Der BSP-Baum ist unabhängig vom Betrachterstandpunkt.
Display des BSP-Baumes:
 ebenfalls rekursiv
 es muss jeweils die räumliche Beziehung des
Betrachterstandpunktes zur Wurzel des Baumes
bekannt sein (Prüfung, ob vor oder hinter – vgl. back
face culling)
 Erzeugen der sichtbaren Flächen: Traversierung des
Baumes (rekursiv) in "in-order"
 zeichne die sichtbaren Polygone von hinten nach
vorne
Algorithmus "DisplayBSPTree":
3. Das Ray-Casting-Verfahren
 Hybrid Objektraum-Bildraum (aber mehr im Objektraum)
 Prinzip der Strahlverfolgung (vgl. Raytracing in der
Beleuchtungsrechnung, siehe später)
 vom Betrachterstandpunkt wird je ein Strahl durch
jedes Pixel in die 3D-Szene verfolgt.
 Berechnung der Schnittpunkte der Strahlen mit den
Objektoberflächen
Fallunterscheidung dabei:
1. es gibt keinen Schnittpunkt: verwende die Hintergrundfarbe.
2. es existieren Schnittpunkte: bestimme den zum
Betrachter nächstgelegenen, dieser ist sichtbar, die
anderen verdeckt.
Nachteil:
hoher Rechenaufwand durch häufige Schnittpunktberechnungen (ca. 95 % der Gesamtrechenzeit bei
typischen Szenen)
Vorteile:
 leicht parallelisierbar (bei p Prozessoren teile Bildschirm in p disjunkte Rechtecke – allerdings muss bei
diesem Ansatz die 3D-Szene auf jedem Prozessor
vollständig zur Verfügung stehen)
 Effizienzverbesserung durch boundary volumeTechniken möglich (hierarchische Konzepte,
Clustering)
 Kombination mit klassischem Raytracing (globale
Beleuchtungsrechnung; siehe später) möglich
Herunterladen