§4 Rendering und Visibilität 4.1 Farbmodelle Farbe ist ein wesentlicher Bestandteil realistischer Computergrafik.
Download ReportTranscript §4 Rendering und Visibilität 4.1 Farbmodelle Farbe ist ein wesentlicher Bestandteil realistischer Computergrafik.
§4 Rendering und Visibilität 4.1 Farbmodelle Farbe ist ein wesentlicher Bestandteil realistischer Computergrafik. Dieses Unterkapitel beschreibt die quantitativen Aspekte von Farbe, auf denen jegliche Verarbeitung von Farbinformationen während des Renderings beruht. Fragestellungen: - Wie kann man eine bestimmte Farbe exakt spezifizieren? Farbräume, Farbmodelle - Wie viele verschiedene Farben können durch eine Grafikhardware spezifiziert werden? technische Realisierbarkeit - Wie exakt kann eine exakt spezifizierte Farbe auf einem Ausgabegerät angezeigt werden? geräteabhängige Farbräume Computergrafik - SS 2004 §4-1 §4 Rendering und Visibilität 4.1 Farbmodelle Hierarchien bekannter Farbmengen A: Menge aller vom Menschen wahrnehmbaren Farben Ebener Schnitt durch den dreidimensionalen Farbraum. Jeder Punkt entspricht einer Farbe. B: Menge aller von einem Ausgabegerät (z. B. Monitor) darstellbaren Farben – dies ist eine Untermenge von A C: Menge aller von einem Programm spezifizierbaren Farben – beschränkt durch die Grafikhardware (Bildspeicher) 24 Bit/Pixel 16777216 Farben – i. a. Untermenge von A, enthält aber auch Elemente von B\A Computergrafik - SS 2004 §4-2 §4 Rendering und Visibilität 4.1 Farbmodelle Dreidimensionaler Farbraum Der traditionellen Beschreibung von Farben durch Namen mangelt es naturgemäß an Exaktheit – Aschgrau, Steingrau, Mausgrau, ... Eine präzise Festlegung erhält man erst durch eine objektive quantitative Spezifikation. Physikalisch gesehen ist eine Farbe eine bestimmte Energieverteilung im elektromagnetischen Spektrum zwischen 400 und 700 Nanometern Wellenlänge. Anhand physikalischer Experimente und Untersuchungen der physiologischen Farbwahrnehmung durch das menschliche Auge gelangte man zur Erkenntnis, dass nahezu alle Farben, die das Auge unterscheiden kann, auf eine additive Mischung dreier Grundfarben zurückgeführt werden können. Computergrafik - SS 2004 §4-3 §4 Rendering und Visibilität 4.1 Farbmodelle Dreidimensionaler Farbraum (cont.) Definiert man die zu mischenden Anteile z. B. der Grundfarben Rot, Grün und Blau durch ein Tripel (r, g, b) von Gewichtsfaktoren, so lässt sich eine bestimmte Farbe C mittels C = r R + g G + b B exakt spezifizieren. Dies ist jedoch bei weitem nicht die einzige Möglichkeit, einen dreidimensionalen Farbraum zu definieren. Je nach Anforderung können verschiedene standardisierte Farbräume (Farbmodelle) verwendet werden, z. B. RGB: HSV: CIE: CMY: traditioneller Farbraum für Computergrafik, Monitore, ... erleichtert die intuitive Farbauswahl internationaler Standard zur Farbspezifikation subtraktives Farbmodell für die Drucktechnik Computergrafik - SS 2004 §4-4 §4 Rendering und Visibilität 4.1 Farbmodelle RGB-Farbmodell - verwendet die Grundfarben Rot, Grün und Blau zur additiven Farbmischung - Beschreibung einer Farbe durch ein Tripel (r, g, b) von Gewichtsfaktoren mit 0 r, g, b1. Es gilt: (0, 0, 0) = Schwarz (1, 0, 0) = Rot (0, 1, 1) = Cyan (1, 1, 1) = Weiß (0, 1, 0) = Grün (1, 0, 1) = Magenta (0, 0, 1) = Blau (1, 1, 0) = Gelb Im Rechner: z. B. 8 Bit pro Grundfarbe, d. h. 0 r, g, b 255. - die Menge aller spezifizierbaren Farben wird im 3D-Raum durch einen Würfel repräsentiert („Farbkörper“) – dieser deckt jedoch nicht den gesamten wahrnehmbaren Farbraum ab Computergrafik - SS 2004 §4-5 §4 Rendering und Visibilität 4.1 Farbmodelle RGB-Farbmodell (cont.) B R G RGB-Farbwürfel Computergrafik - SS 2004 §4-6 §4 Rendering und Visibilität 4.1 Farbmodelle RGB-Farbmodell (cont.) - Das Modell ist bezüglich der Farbwahrnehmung nicht linear: Betrachtet man eine typische Farbauflösung von 8 Bit pro Grundfarbe (sog. True Color), so existieren im Farbwürfel Regionen, in denen benachbarte Punkte für das Auge denselben Farbeindruck hervorrufen. In anderen Regionen hingegen sind die Farben benachbarter Punkte für das Auge sehr wohl voneinander unterscheidbar. - Für den Anwender ist es mitunter recht schwierig, zu einer gewünschten Farbe (z. B. Kastanienbraun) ein entsprechendes (r, g, b)-Tupel zu ermitteln oder eine Farbe beispielsweise ein wenig abzuschwächen (erfordert ungleiche Änderungen von r, g und b). HSV-Farbmodell Computergrafik - SS 2004 §4-7 §4 Rendering und Visibilität 4.1 Farbmodelle HSV-Farbmodell - entwickelt zur Unterstützung einer intuitiven Farbauswahl (wahrnehmungsorientiertes Farbmodell) - der Farbkörper im 3D-Farbraum ist eine Pyramide mit sechseckiger Grundfläche - verwendet „Zylinderkoordinaten“ Hue: Farbe („Farbfamilie“) als „Farbwinkel“ in Grad: Cyan 0 H 360 Saturation: Sättigung: 0S 1 Value: (Verkleinerung addiert Weiß) Helligkeit: 0 V 1 (Verkleinerung addiert Schwarz) Computergrafik - SS 2004 §4-8 §4 Rendering und Visibilität 4.1 Farbmodelle Zusammenhang zwischen HSV- und RGB-Modell: - Die Grundfläche der HSV-Pyramide entsteht aus dem RGBWürfel durch Projektion entlang der Raumdiagonale von Weiß nach Schwarz auf eine dazu senkrecht stehende Ebene. - Es ergeben sich folgende korrespondierende Punkte: - Bemerkung: Im HSV-Modell besitzen Komplementärfarben eine Winkeldifferenz von 180° im H-Wert RGB Farbe HSV (1, 0, 0) Rot (0, 1, 1) (1, 1, 0) Gelb (60, 1, 1) (0, 1, 0) Grün (120, 1, 1) (0, 1, 1) Cyan (180, 1, 1) (0, 0, 1) Blau (240, 1, 1) (1, 0, 1) Magenta (300, 1, 1) Computergrafik - SS 2004 §4-9 §4 Rendering und Visibilität 4.1 Farbmodelle Zusammenhang HSV- und RGB-Modell: (cont.) - Schreitet man im RGB-Würfel entlang der Hauptdiagonale von Schwarz nach Weiß, so kann man in jedem Punkt P dieser Diagonale einen Sub-Würfel wie folgt definieren: - die Hauptdiagonalen der Würfel fallen zusammen - eine Ecke des Sub-Würfels liegt bei Schwarz = (0, 0, 0) , die gegenüberliegende Ecke liegt bei P - der Sub-Würfel liegt im Innern des RGB-Würfels - Somit definiert jeder Sub-Würfel bei Anwendung der oben beschriebenen Projektion entlang der Hauptdiagonale ein Sechseck, das einem Schnitt durch die HSV-Pyramide für V = const. entspricht. (Die Hauptdiagonale des RGB-Würfels entspricht also der V-Achse der HSV-Pyramide.) Computergrafik - SS 2004 §4-10 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Motivation: - Die grundlegende Modellierung unserer Objekte besteht in letzter Konsequenz aus planaren Polygonen, meist aus Vier- oder Dreiecken. - Das Dreieck ist die favorisierte Form, denn ein Dreieck hat eine eindeutige Normale, die anzeigt, wo das Dreieck „hinzeigt“. Ein Viereck nicht? - Vorsicht: Ein Viereck muss nicht planar sein! Den Prozess, der aus der mathematischen Beschreibung, beispielsweise einer Kugel, eine Menge von Dreiecken produziert, nennt man tesselation, triangulation bzw. „Tesselation“, „Triangulierung“ Computergrafik - SS 2004 §4-11 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Motivation: (cont.) - Die einfachste Form, unsere Objekte darzustellen (zu rendern) ist die Wireframe-Darstellung – wir zeichnen lediglich die Kanten der Polygone. Bem.: - Wireframe-Darstellung mit Darstellung aller Kanten, d.h. auch der (teilweise) verdeckten Kanten von Objekten ist zwar trivial, die Darstellung einer 3D-Szene wirkt allerdings nicht wirklich räumlich -> visual cluttering - Wireframe-Darstellung mit Darstellung nur der wirklich sichtbaren Kanten führt zu sog. hidden-line-Algorithmen, die absolut nicht mehr trivial sind – man muss sich nun um die Sichtbarkeit / die Visibilität Gedanken machen! Computergrafik - SS 2004 §4-12 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ziel der Visibilitätsverfahren ist die möglichst exakte Bestimmung der von einem gegebenen Blickpunkt aus sichtbaren bzw. unsichtbaren Teile der darzustellenden Szene. Wünschenswert ist eine hohe Interaktionsrate, so dass Eingaben des Benutzers sich direkt auf die Darstellung auswirken. Im günstigsten Falle ist sogar eine Echtzeitausgabe der Szene möglich. Einteilung der Verfahren: - Objektraumverfahren geräteunabhängig, Genauigkeit ist Maschinengenauigkeit - Bildraumverfahren geräteabhängig, Genauigkeit ist Auflösung des Ausgabegerätes Computergrafik - SS 2004 §4-13 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Unsichtbarkeit bzw. Verdeckungen treten auf, wenn bei der Projektion der dreidimensionalen Szene auf die Bildebene unterschiedliche Objektteile auf dieselbe Stelle abgebildet werden. Sichtbar sind diejenigen Objektpunkte, die dem Auge des Betrachters am nächsten gelegen sind. Daher ist bei der Darstellung nicht nur die (x, y)-Koordinate in der Bildebene zu berücksichtigen, sondern auch die Tiefenrelation der Szene (z-Koordinate). Bem.: Computergrafik - SS 2004 §4-14 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Begriff: Kohärenz „Ausnutzung lokaler Ähnlichkeiten“ Beispiele: - Flächenkohärenz: Eigenschaften benachbarter Punkte auf einer Fläche ändern sich oft nur unwesentlich, z. B. Farbe - Tiefenkohärenz: Die Tiefe z(x,y) auf einer Fläche kann oft inkrementell berechnet werden Computergrafik - SS 2004 §4-15 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Back-Face-Culling Die Entfernung verdeckter Flächen und Linien kann sehr aufwendig sein. Es erweist sich daher als günstig, mit einem möglichst einfachen Test das Problem möglichst stark zu vereinfachen, bevor kompliziertere Verfahren eingesetzt werden. Einen ebenso einfachen wie wirkungsvollen Ansatz stellt das Back-Face-Culling dar: In Abhängigkeit von der Position des Betrachters werden die Rückseiten undurchsichtiger Körper entfernt, da diese naturgemäß nicht sichtbar sind. Wir entscheiden auf Grund der Normalen, welche Polygone von uns „wegsehen“, diese werden nicht mehr dargestellt! Computergrafik - SS 2004 §4-16 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Back-Face-Culling (cont.) Klassifikation der Rückseiten: - es werden die Normalenvektoren Ni aller Flächen betrachtet - bei einer Vorderseite enthält der Normalenvektor Ni eine Komponente in Blickrichtung, d. h. es gilt für das Skalarprodukt aus Vektor zum Augpunkt (viewing vector) v und Ni : v Ni 0 Sichtbarkeitsbedingung! hier: Parallelprojektion N3 N4 v N 0 v N 0 v N 0 v N 0 v N 0 v N 0 1 v N5 N2 N1 N6 2 3 4 5 6 Computergrafik - SS 2004 §4-17 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Back-Face-Culling (cont.) Eigenschaften: Objektraumverfahren! - Die Zahl der beim Rendering zu berücksichtigenden Polygone wird durch Entfernen der Rückseiten durchschnittlich etwa um die Hälfte reduziert. - Der Aufwand zur Berechnung des Skalarprodukts ist minimal. - Besteht die Szene nur aus einem einzelnen konvexen Polyeder, so löst Back-Face-Culling bereits das Visibilitätsproblem. Bei konkaven Polyedern oder Szenen, an denen mehrere Objekte beteiligt sind, kann es zu Selbst- und / oder Fremdverdeckung kommen. Hier werden aufwendigere Verfahren benötigt. Computergrafik - SS 2004 §4-18 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Bekannte Visibilitätsverfahren: - erste Lösung des hidden-line-Problems: Roberts, 1963 Objektraumverfahren für konvexe Objekte - area subdivision (divide-and-conquer): Warnock, 1969 Ausnutzung von Flächenkohärenz; Quadtrees! - sample spans: Watkins, 1970 Ausnutzung von Rasterzeilenkohärenz - depth list: Newell et al., 1972 Prioritätslistenalgorithmus im Objektraum Im Vergleich zum z-Buffer-Algorithmus haben diese Verfahren keine sonderlich große Popularität gewonnen. Teilweise blieben sie speziellen Verwendungszwecken vorbehalten. Computergrafik - SS 2004 §4-19 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (Catmull, 1975) - bestimmt Sichtbarkeit von Bildpunkten arbeitet im Bildraum / im Display-Koordinatensystem geeignet für die Bildausgabe auf Rastergeräten Arbeitsweise: Funktional gesehen führt der z-Buffer-Algorithmus innerhalb des Bildraums für jeden Bildpunkt eine Suche nach demjenigen Polygon durch, in dessen Innern der Punkt liegt und dessen zugehöriger z-Wert am größten ist (am weitesten vorne liegt). Zur Realisierung wird zusätzlicher Speicher verwendet (der sog. z-Buffer), in dem zu jedem Bildpunkt der größte z-Wert gespeichert wird, der bisher aufgetreten ist. Computergrafik - SS 2004 §4-20 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Algorithmus: - initialisiere Bildspeicher (frame buffer) mit Hintergrundfarbe - initialisiere z-Buffer mit minimalem z-Wert - scan-conversion aller Polygone (beliebige Reihenfolge) - berechne z-Wert z(x,y) für jedes Pixel (x, y) im Polygon - falls z(x, y) größer als der Eintrag im z-Buffer bei (x, y) ist, trage Polygonattribute (Farbe) in Bildspeicher bei (x, y) ein und setze z-Buffer bei (x, y) auf z(x, y) Nach Abarbeitung des Algorithmus enthält der Bildspeicher das gewünschte Bild, der z-Buffer dessen Tiefenverteilung. Computergrafik - SS 2004 §4-21 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Beispiel: - z-Werte codiert durch Zahlen: größere Zahl => näher zum Auge - initialisiere Z-Buffer mit min. z-Werten - addiere ein Polygon mit konstantem z-Wert m m m m m m m m 5 5 5 5 5 5 m m m m m m m m 5 5 5 5 5 5 m m m m m m m m 5 5 5 5 5 m m m m m m m m 5 5 5 5 5 + m m m m m m m m 5 5 m m m m m m m m 5 5 m m m m m m m m 5 m m m m m m m m 5 = 5 5 5 5 5 5 5 5 5 5 5 5 5 m m 5 5 5 5 5 m m m 5 5 5 5 m m m m 5 5 5 m m m m m 5 5 m m m m m m 5 m m m m m m m m m m m m m m m Computergrafik - SS 2004 §4-22 m §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Beispiel: (cont.) - addiere ein Polygon, welches das 1. Polygon schneidet 5 5 5 5 5 5 5 m 5 5 5 5 5 5 m m 2 5 5 5 5 5 m m m 3 2 5 5 5 5 m m m m 4 3 + 2 5 5 5 5 5 5 5 m 5 5 5 5 5 5 m m 5 5 5 5 5 m m m 5 5 5 5 m m m m 5 5 5 2 m m m m 6 5 4 3 2 m m m 7 6 5 4 3 2 m m m m m m m m m m = 5 5 5 m m m m m 5 4 3 2 5 5 m m m m m m 6 5 4 3 2 5 m m m m m m m 7 6 5 4 3 m m m m m m m m 2 Computergrafik - SS 2004 §4-23 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Berechnung von z bei Polygonen: Zur Berechnung von z(x,y) : Ax+By+Cz+D=0 Also: z = (-D – Ax – By) / C = z(x, y) damit z(x+dx,y) = (-D – A(x+dx) – By) / C = z(x,y) – dx* A/C Nur eine Subtraktion notwendig da A/C konstant ist und dx=1! Computergrafik - SS 2004 §4-24 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Vorteile: + sehr einfache Implementierung des Algorithmus (Soft- und Hardware!) + unabhängig von der Repräsentation der Objekte! es muss nur möglich sein, zu jedem Punkt der Oberfläche einen z-Wert bestimmen zu können + keine Komplexitätsbeschränkung der Bildszene + keine besondere Reihenfolge oder Sortierung der Objekte notwendig (z. B. Tiefensortierung) Computergrafik - SS 2004 §4-25 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren z-Buffer-Algorithmus (cont.) Nachteile: - Auflösung des z-Buffers bestimmt Diskretisierung der Bildtiefe, z. B. sind bei 20 Bit genau 220 Tiefenwerte unterscheidbar – problematisch sind weit entfernte Objekte mit kleinen Details Hier ist die sinnvolle Wahl der near- und far-clipping-plane (begrenzen view frustum!) entscheidend für die Qualität des Algorithmus! - Es wird ein großer Speicher benötigt – Abhilfe durch Zerlegung in Teilbilder oder Streifen möglich - Berücksichtigung von Transparenz und Antialiasing nur durch aufwendige Modifikationen möglich Computergrafik - SS 2004 §4-26 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Scan-Line z-Buffer-Algorithmus - Variation des z-Buffer-Algorithmus zur Einsparung von Speicher arbeitet auf einer Rasterzeile (z-Buffer der Pixelhöhe 1) Vergleich der Vorgehensweisen: z-Buffer: Initialisierung für alle Polygone für alle Rasterzeilen im Polygon ... Scan-Line z-Buffer: für alle Rasterzeilen Initialisierung für alle Polygone ... Computergrafik - SS 2004 §4-27 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Strahlverfolgungs-Algorithmus (Ray Tracing / Ray Casting) - Ray Casting: Löst die Sichtbarkeit - Ray Tracing: Ray Casting + Weiterverfolgung reflektierter bzw. gebrochener Strahlen (siehe auch „globale Beleuchtungsmodelle“) - Bildraumalgorithmus Computergrafik - SS 2004 §4-28 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting - Wirf (englisch: cast) Strahlen (englisch: ray) vom Augpunkt durch alle Pixel der Bildebene - Berechne Schnittpunkte mit allen Objekten der Szene - Das Objekt mit dem am nächesten gelegenen Schnittpunkt ist in diesem Pixel sichtbar Pixel Eye Computergrafik - SS 2004 §4-29 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Beispiel: Schnittpunktberechnung mit einem Polygon 1. Berechne den Schnittpunkt mit der Ebene, in der das Polygon liegt 2. Teste, ob der Schnittpunkt innerhalb des Polygons liegt (Punktklassifizierung). Im Falle eines Dreiecks: Summe der Flächeninhalte der Teildreiecke p3 p3 gleich Flächeninhalt Dreieck größer Flächeninhalt Dreieck Punkt innerhalb! p1 Punkt außerhalb! p1 p2 p2 Computergrafik - SS 2004 §4-30 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Nachteile: - Für jeden Strahl muss jedes Objekt der Szene daraufhin getestet werden, ob der Strahl das Objekt schneidet - Bei einer Auflösung 1024*1024 mit 100 Objekten in der Szene müssen 100 Millionen Schnittpunktberechnungen durchgeführt werden! - Bis zu 95% der Rechenzeit werden für Schnittpunktberechnungen bei typischen Szenen verbraucht! Computergrafik - SS 2004 §4-31 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Beschleunigungsansätze: 1. Transformation der Strahlen auf die z-Achse; werden die Objekte mit der gleichen Transformation verschoben, so tritt ein Schnittpunkt immer bei x=y=0 auf. 2. Bounding Volumes: komplexe Objekte mit einfacher zu testenden Objekten umschließen Haben diese Bounding Volumes keinen Schnittpunkt mit einem Strahl, so sind auch die darin enthaltenen Objekte nicht auf einen Schnittpunkt zu testen. Beispiele: Bounding Box, Bounding Sphere 3. Vermeidung von unnötigen Schnittpunktberechnungen: Hierarchien und Raumteilung Computergrafik - SS 2004 §4-32 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Hierarchien: - baumartige Strukturen von Bounding Volumes - Blätter: Objekte der Szene - Innere Knoten: Bounding Volume seiner Kinder - schneidet ein Strahl einen inneren Knoten nicht, so kann der Strahl auch nicht die Objekte seiner Kinder schneiden - Problem: Die Generierung guter Hierarchien ist schwierig. Computergrafik - SS 2004 §4-33 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Raumteilung: - Top-down Ansatz Zuerst wird die Bounding Box der Szene berechnet Anschließend wird diese in (gleich große) Teile unterteilt Jede Unterteilung enthält eine Liste mit allen Objekten, die in der Partition komplett oder auch nur teilweise enthalten sind Computergrafik - SS 2004 §4-34 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Raumteilung: (cont.) - Nur wenn ein Strahl eine Partition schneidet, müssen Schnittpunktberechnungen mit den assoziierten Objekten durchgeführt werden Computergrafik - SS 2004 §4-35 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Ray Casting (cont.) Raumteilung: (cont.) - Notwendig: Testen, ob der Schnittpunkt innerhalb der Partition liegt! Abhilfe: Alle Partitionen solange weiterverfolgen, bis ein Schnittpunkt gefunden wird, der innerhalb der Partition liegt. Computergrafik - SS 2004 §4-36 §4 Rendering und Visibilität 4.2 Visibilitätsverfahren Increasing Reality... Was können wir bisher? Was fehlt uns noch? Farben Beleuchtung Highlights Schatten Transparenz Reflexionen Refraktionen Computergrafik - SS 2004 §4-37