Graphische Datenverarbeitung

Ähnliche Dokumente
Inhaltsverzeichnis - Themen

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

Programmierpraktikum 3D Computer Grafik

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen

Überblick Echtzeit-Rendering. Uwe Domaratius

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

entspricht der Länge des Vektorpfeils. Im R 2 : x =

Rendering: Lighting & Shading

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Texture Based Direct Volume Rendering

Real-Time High-Dynamic Range Texture Mapping

3.3 Beleuchtung und Schattierung

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Die Grundlagen des Texture Mapping

2.4A. Reguläre Polyeder (Platonische Körper)

WS 2010/ Januar Mathematisches Institut der Universität München Prof. Dr. Rudolf Fritsch

4. Kapitel 3D Engine Geometry

(Man sagt dafür auch, dass die Teilmenge U bezüglich der Gruppenoperationen abgeschlossen sein muss.)

Kapitel D : Flächen- und Volumenberechnungen

Krümmungsapproximation auf 3D-Modellen

Bildrekonstruktion & Multiresolution

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Darstellung von Kurven und Flächen

Tropische Kurven zählen. Enumerative Geometrie. Alg. Geometrie. Beispiel Strategie. Geometrie. Kurven Multiplizität Correspondence Theorem Ergebnisse

VHDL - Grundlagen des Pointrenderings

Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung. Universität Ulm Sommersemester 2008

1 Vorlesungen: und Vektor Rechnung: 1.Teil

Graphische Datenverarbeitung und Bildverarbeitung

Sollten sich (Flüchtigkeits )Fehler eingeschlichen haben, bitte ich um eine kurze Nachricht an hans

Grundlagen der Computer-Tomographie

Bildtransformationen. Geometrische Transformationen Grauwert-Interpolation

Photonik Technische Nutzung von Licht

Mathematik für das Ingenieurstudium

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr

Kapitel 5 Untermannigfaltigkeiten. 5.1 Glatte Flächen in R 3

Ministerium für Schule und Weiterbildung NRW M LK HT 4 Seite 1 von 11. Unterlagen für die Lehrkraft. Abiturprüfung Mathematik, Leistungskurs

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Erweiterung: Flächeninhalt mit Vorzeichen. a b, P, Q, R gegen Uhrzeigersinn a b, P, Q, R im Uhrzeigersinn

Inhaltsverzeichnis. 1 Hardwaregrundlagen

Computergraphik Grundlagen

Übersicht der Vorlesung

9.2 Invertierbare Matrizen

computer graphics & visualization

Jürgen Roth Didaktik der Linearen Algebra und Analytischen Geometrie

3. Schnittebenenverfahren

3 Vektoren. 3.1 Kartesische Koordinaten in Ebene und Raum. Höhere Mathematik 60

Non-Photorealistic Rendering

y x x y ( 2x 3y + z x + z

Lineare Gleichungssysteme

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, Kore Nordmann

Terrain-Rendering mit Geometry Clipmaps

Nichtlineare Gleichungssysteme

Teil 1: Modellierung. Einleitung. 3D Szene Inhalt. Objekte und ihre Beschreibung

geschlossene Schachtel mit einem kleinen Loch

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17

Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian. Dauer: 30 min jeweils. Note: 1.

Und so weiter... Annäherung an das Unendliche Lösungshinweise

Minimalziele Mathematik

2. VEKTORANALYSIS 2.1 Kurven Definition: Ein Weg ist eine stetige Abbildung aus einem Intervall I = [a; b] R in den R n : f : I R n

Darstellung dreidimensionaler Figuren in der Ebene. Schrägbild

Licht und Schatten Visualieren mit dem PC. Andreas Asperl

(x 1. Vektoren. g: x = p + r u. p r (u1. x 2. u 2. p 2

Im Original veränderbare Word-Dateien

Iterative Methods for Improving Mesh Parameterizations

Oktaeder. Bernhard Möller. 22. Dezember 2010

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

2D-Transformationen. Kapitel Translation. 6.2 Skalierung

Morphologische Bildverarbeitung II

1 Zahlentheorie. 1.1 Kongruenzen

mayasketche.book Seite 58 Dienstag, 18. September :27 16 KNUBBELMÄNNCHEN

Formelsammlung Analytische Geometrie

Computer Graphik. Mitschrift von

Fachcurriculum Mathematik (G8) MPG Klassen 5 und 6. Bildungsplan Bildungsstandards für Mathematik. Kern- und Schulcurriculum Klassen 5 und 6

Lehrskript Mathematik Q12 Analytische Geometrie

Proseminar Computergraphik. Raytracing

Nichtrealistische Darstellung von Gebirgen mit OpenGL

(geometrische) Anschauung

Kapitel VI. Euklidische Geometrie

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG

Computer Graphik I Beleuchtung

Geometrische Objekte im 3-dimensionalen affinen Raum oder,... wie nützlich ist ein zugehöriger Vektorraum der Verschiebungen

Zylinder, Kegel, Kugel, weitere Körper

Eigentlich löst man n Gleichungen mit n Unbekannten (die. normalerweise eindeutig lösbar sind) am besten mit Hilfe der

DEUTSCHE SCHULE MONTEVIDEO BIKULTURELLES DEUTSCH-URUGUAYISCHES ABITUR ( AUF SPANISCH )

Korrelationsmatrix. Statistische Bindungen zwischen den N Zufallsgrößen werden durch die Korrelationsmatrix vollständig beschrieben:

Nachhilfe-Kurs Mathematik Klasse 13 Freie Waldorfschule Mitte April 2008

ax 2 + bx + c = 0, (4.1)

KGS Curriculum Mathematik Hauptschule Klasse 5

Vektorgeometrie. Inhaltsverzeichnis. Fragen und Antworten. (bitte nur für den Eigengebrauch verwenden)

1.4 Gradient, Divergenz und Rotation

Farbtiefe. Gängige Farbtiefen

Volumen Visualisierung

Raum- und Flächenmessung bei Körpern

Transkript:

Texturen Prof. Dr.-Ing. Detlef Krömker Goethe-Universität, Frankfurt 1. Einführung 2. Diskrete und prozedurale Texturen 3. Generalisierte Textur-Pipeline 4. Texturmapping Ebene Polygone Zweischrittverfahren 5. Corresponder-Verfahren 6. Texturabtastung Aliasing Mipmap, SAT, FPA Übersicht 2

Übersicht (Fortsetzung) 7. Beeinflussung der Beleuchtungsrechnung 8. Environment-Mapping 9. Bump Mapping 10.Zusammenfassung 11.Glossar 12.Weitere Informationen 13.Ausblick Nächste Schritte 3 Texturierung 4

In der Realität finden wir ein großes Spektrum geometrischer Feinstrukturen Maserungen und Muster von Holz, Marmorplatten, Tapeten Wolken, Rauch, Strukturen unebenen Oberflächen z.b. Rauhputzwänden, rauhes Leder, Apfelsinen oder Baumstämmen Texturen im Hintergrund sichtbare Häuser, Maschinen, Pflanzen und Personen Die geometrische Form dieser Objekte durch Flächen exakt nachzubilden, ist um Größenordnungen zu aufwendig All it takes is for the rendered image to look right. [Jim Blinn] 5 Texturen bieten Möglichkeiten, das visuelle Erscheinungsbild von Objekten detailreicher zu gestalten. Texturen Die Oberfläche einer Wand kann durch eine einzige planare Fläche(ein Polygon) modelliert werden. Ein Tapezieren kann als Aufbringen eines Bildes auf die Wandoberfläche interpretiert werden. Diesen Vorgang bezeichnet man als Texturierung. 6

Texturabbildungen Erste einfache Definition: Zweidimensionale Texturen oder kurz 2D-Texturen sind Funktionen, die Punkte der (u,v)-ebene auf (r,g,b)-farben abbilden: ( r, g, b) = c ( u, v ) tex Das Mapping (engl.: Abbildung) beschreibt, wie eine 2D- Textur bzw. ein Ausschnitt aus einer 2D-Textur auf eine Fläche aufgebracht wird. Beim Rendering muß jedoch das inverse Mapping-Problem gelöst werden, d.h. den bekannten (x,y,z)-koordinaten des Flächenpunktes P müssen (u,v)-koordinaten zugeordnet werden: ( u, v) = F ( P) F ( x, y, z) inv map = inv map 7 Texturabbildungen 8

Texturabbildungen Die Texturierung einer Fläche mit einer 2D-Textur läßt sich dann mathematisch durch die Hintereinanderausführung dieser beiden Abbildungen beschreiben: ( r, g, b) = C ( F ( x, y, z)) tex invmap Dreidimensionale Texturen oder kurz 3D-Texturen sind Funktionen, die Punkte eines (u,v,w)-raumes auf (r,g,b)-farben abbilden: ( r, g, b) = C ( u, v, w ) tex 9 Texturabbildungen Sie werden auch als Festkörpertexturen bezeichnet. Häufig genannte Beispiele hierfür sind Holz- und Marmortexturen. Beim inversen Mapping ( r, g, b) = C ( u, v, w ) tex müssen den (x,y,z)-flächenpunkten (u,v,w)-koordinaten zugeordnet werden. Man kann dietexturierung mit 3D-Texturen auch so interpretieren, daß die Körper quasi aus dem (u,v,w)-texturkörper herausgeschnitzt werden. 10

Diskrete und prozedurale Texturen Wir unterscheiden zwischen diskreten und prozeduralen Texturen N-dimensionale diskrete Texturen werden als (N+1) dimensionale Zahlenfelder gespeichert. Ein (N+1)-dimensionales Zahlenfeld entspricht dabei einem N- dimensionalen Vektorfeld. Diskrete farbige 2D-Texturen der Breite n und Höhe m lassen sich so z.b. durch C( i, j ) 0 i n 0 j m beschreiben, wobei C[i,j] ein Vektor mit drei Farbkomponenten ist und als Texel (TEXtur ELement) bezeichnet wird. 11 Vorteile diskreter Texturen + das Generieren komplexer 2D-Texturen für die photorealistische Visualisierung geht vergleichsweise schnell und einfach, z.b. durch Fotografieren oder Malen. 12

Probleme diskreter Texturen (Diskussion anhand von 2D-Texturen) Texturen mit hoher Auflösung (n,m) haben einen hohen Speicherbedarf. Beim Vergrößern von Bildern treten Artefakte auf (Pixeleffekt) Fortsetzung (Aneinandersetzen, Vergrößern) von Texturen ist oft problematisch Der in den Bildern dargestellte Kontext (Sonnenstand, Schattenwurf,...) stimmt häufig nicht mit der geplanten Szene überein. Die Suche nach geeigneten Vorlagen kann dann sehr aufwendig sein. Beim Mapping auf beliebige Flächen treten Verzerrungen und infolgedessen Abtast-Probleme auf. 13 Probleme diskreter Texturen Resampling-Methoden: 1. nächstgelegener Nachbar (nearest neighbour) C tex C un, vm : u<1,v<1 C n 1, vm : u=1,v<1 ( u, v) = C un, m 1 : u<1,v=1 C n 1, m 1 : u=1,v=1 vm un i i + 1 14

Probleme diskreter Texturen 2. Bilineare Interpolation uˆ = un un vˆ = vm vm C ˆ ˆ 0( u, v) = u* C un+ 1, vm + (1 u)* Cun, vm C ˆ ˆ 1( u, v) = u* C un+ 1, vm+ 1 + (1 u)* C un, vm+ 1 C u v vˆ C u v vˆ C u v tex(, ) = * 1(, ) + (1 )* 0(, ) vm +1 vm vm 3. Aufwendigere Filtern (später) un un un +1 15 Abtastung diskreter 2D-Texturen Entspricht einem Resampling eines Digitalen Bildes Einfache Funktionen wie nearest neightbour bilinbeare Interpolation erzeugen gravierende Aliasing- Effekte 16

Beispiel (Minification) Abbildung einer Reihe Pixel auf eine Schachbrett-Textur 17 Probleme Pixellation oder Unschärfe (Magnification) Ausgangstextur: 32 x 64 Texels Nearest Neighbour bilineare Interpolation 18

Prozedurale Texturen Prozedurale Texturen werten bei jedem Aufruf von C tex ( u, v) bzw. Ctex( u, v, w) eine mathematische Formel bzw. einen (fraktalen) Algorithmus aus. Dies hat folgende Vorteile: + Der Speicheraufwand ist minimal. + Die Texturwerte können an jeder Stelle ( u, v) bzw. (u, v, w) mit optimaler Genauigkeit berechnet werden. + Die Texturen sind im gesamten Raum definiert. - Der entscheidende Nachteil prozeduraler Texturen ist, daß selbst Experten Probleme haben, komplexe Texturen, die sie bildlich vor Augen haben, durch mathematische Formeln zu beschreiben. (hilfreich sind auf jeden Fall gute Grundkenntnisse der Fourier-Synthese und der fraktalen Geometrie). 19 Generalisierte Textur-Pipeline (Beispiel 2D) (x,y) Berechne Objektraumkoordinaten Projektorfunktion Mapping Corresponder-Funktion Texturwert Transformation (x,y,z) (u,v) (s,t) (r,g,b)... Modifiziere Beleuchtungsgleichung 1. Aus 2D-Bildschirmkoordinaten in den 3D-Objektraum zurückprojezieren 2. Anwenden der Projektorfunktion: Mapping Planar, Kugel, Zylinder, Quader (box), bei parametrischen Flächen ggf. nicht nötig Bei Realtime-Renderer i.d.r. schon beim Modelling ausgeführt und (u,v)-werte, in den Vertices gespeichert und dann interpoliert. (Aber z.b. OpenGL stellt einige Projektionsmethoden zur Verfügung). 20

Generalisierte Textur-Pipeline (Beispiel 2D) Berechne Objektraumkoordinaten Projektorfunktion Corresponder-Funktion Texturwert- Abtastung & Anpassung Modifiziere Beleuchtungsgleichung (x,y) (x,y,z) (u,v) (s,t) (r,g,b)... 3. Corresponder- Funktion: Transformation vom Parameterraum zum Texturraum (-ebene) (Texturkoordinaten): Weitere Matrix-Transformation (OpenGL): translieren, rotieren, skalieren,... Fortsetzungsmodi: wrap (repeat, tile), mirror, clamp, border 4. Abtasten des Texturwertes und Wertanpassung 5. Modifiziere Beleuchtungsrechnung: Replace, Modulate (Multiplikation) den (r,g.b)-wert oder irgend einen anderen Parameter der Beleuchtungsgleichung (siehe unten) 21 Mapping (x,y) Berechne Objektraumkoordinaten Projektorfunktion Mapping Corresponder-Funktion Texturwert Transformation (x,y,z) (u,v) (s,t) (r,g,b)... Modifiziere Beleuchtungsgleichung K In der Regel sind jedem Eckpunkt eines polygonalen Modells Texturkoordinaten (u,v) beim Modelling zugeordnet also zum Zeitpunkt des Rendering bekannt K Rückprojektion und Mapping werden in der Regel zusammengefaßt K Gesucht ist eine Operation, die bilinear interpolierte (x,y)- Koordinaten auf (u,v) abbildet 22

Fehler bei einfacher Interpolation Wird die Texturierung in den Prozess der Rasterung integriert, so ist zu beachten, daß die Textur perspektivisch korrekt verzerrt wird. Einfache Interpolation der Texturwerte aus den Texturwerten an den Eckpunkten führt zu Artefakten. 23 Prinzip Inverses Mapping In homogenen Koordinaten kann das Inverse Mapping ausgedrückt werden durch: x' a b = y ' d e w g h bzw. dessen c u' f v ' mit (x, y) i q Inverse = x' y' (, w w )und(u, v) = u' v' (, ) (normalisi q q eren! ) u' v ' q = A D G B E H C x' F y ' I w Wenn die Transformationen der Eckpunkte eines Dreiecks bekannt sind, kann diese Matrix bestimmt werden. 24

In der Praxis: Inverses Mapping durch bilineare Interpolation Texturkoordinaten und z-wert oder Beleuchtungsparameter im Scanline-Modus interpolieren Aufgrund der perspektivischen Verzerrung kann dieses für (u,v) nicht linear erfolgen, sondern für ( u', v', q) mit u = u', q v = v', q q = 1 z 25 Texturierung komplexer Objektoberflächen Bisher wurde Textur-Mapping für ein einzelnes Polygon beschrieben. Besteht ein Objekt aus sehr wenigen Polygonen, dann kann ein Anwender diese Zuordnung der (u i,v i )-Parameter unter Umständen noch interaktiv am Bildschirm vornehmen. Bei komplexeren Objekten ist dies jedoch unmöglich. 26

Zweischrittverfahren (Two-Part Mapping) K Bier und Sloan (86 ) haben ein Zweischrittverfahren vorgestellt, das die (u,v)-berechnung automatisiert. K Grundidee: ein komplexes Objekt, das aus beliebig vielen primitiven Teilobjekten bestehen darf, wird mit einer einfach parametrisierbaren, virtuellen Fläche umhüllt. K Die 2D-Textur wird dann zunächst einmal auf diese umhüllende Fläche abgebildet, und erst von dort aus auf die Objektoberfläche. Geeignete umhüllende Flächen sind Zylinder-, Kugel- und Quaderoberflächen. 27 Zylinder-Mapping Beim Zylinder-Mapping wird das Objekt von einem endlichen Zylinder umhüllt. Die Berechnungen sind besonders einfach, wenn die Zylinderhauptachse parallel zur z-achse des Objektraumkoordinatensystems verläuft. Die Endpunkte der Achse sind dann durch die Koordinaten ( xcyl, xcyl, zcyl min ), ( x, x, z ) gegeben. cyl cyl cyl max Note: in Gleichungen y cyl... Die Zylinderoberfläche läßt sich leicht durch einen Rotationswinkel φ und die Höhe h parametrisieren. Punkte (x,y,z) im Innern des Zylinders werden dann senkrecht von der Zylinderachse aus auf die Zylinderoberfläche projiziert, und deren (φ,h)-parameter werden, nach entsprechender Normierung, als (u,v)-parameter interpretiert. 28

Kugel-Mapping Kugeloberflächen können leicht durch Kugelkoordinaten φ und θ parametrisiert werden. Hat eine umhüllende Kugel den Mittelpunkt (x s,y s,z s ), dann werden Punkte (x,y,z) im Kugelinnern vom Mittelpunkt aus auf die Kugeloberfläche projiziert. Dadurch werden ihnen die Parameter u und v zugeordnet: z π + arctan 2( y ys, x xs ) u = 2π θ 2 2 ( x xs + y ys z zs) arctan 2 ( ) ( ), v = π x φ y 29 Box-Mapping Beim Box-Mapping beschreibt die umhüllende Fläche einen Quader. In der Regel wählt man hierfür die achsenparallele Bounding Box des Objekts. Eine mögliche Parametrisierung von Punkten (x,y,z) im Innern der Bounding Box definiert einfach die längste Kante der Bounding Box als u-achse und die zweitlängste Kante als v-achse. Gilt also z.b. ( x x ) ( y y ) ( z z ) box,max box,min box,max box,min box,max box,min dann kann man die Texturparameter einfach durch x xbox,min y ybox u = und v = x x y y berechnen. box,max box,min z box,max,min box,min x u v y 30

Corresponder Funktion (x,y) Corresponder- Funktion: Transformation vom Parameterraum zum Texturraum (-ebene) (Texturkoordinaten): Berechne Objektraumkoordinaten Projektorfunktion Mapping Corresponder-Funktion Texturwert Transformation (x,y,z) (u,v) (s,t) (r,g,b)... Modifiziere Beleuchtungsgleichung Weitere Matrix-Transformation (OpenGL): translieren, rotieren, skalieren,... Nicht immer realisiert Fortsetzungsmodi: wrap (repeat, tile), mirror, clamp, border 31 Fortsetzungsmodi wrap mirror clamp border 32

Texturwert-Abtastung (x,y) Berechne Objektraumkoordinaten Projektorfunktion Mapping Corresponder-Funktion K Resampling des Texturwertes und ggf. Wertanpassung Texturwert Transformation (x,y,z) (u,v) (s,t) (r,g,b)... Modifiziere Beleuchtungsgleichung 33 Probleme Pixellation oder Unschärfe (Magnification) Ausgangstextur: 32 x 64 Texels Nearest Neighbour bilineare Interpolation 34

Abtastung diskreter 2D-Texturen Entspricht einem Resampling eines Digitalen Bildes Einfache Funktionen wie nearest neightbour bilinbeare Interpolation erzeugen gravierende Aliasing- Effekte 35 Filterung diskreter 2D-Texturen Die Projektion eines quadratischen Bildschirmpixels (Kantenlänge 1) auf die Texturebene, wird Footprint genannt (= beliebiges Viereck) und wird näherungsweise als ein Parallelogramm angenommen, das von den Vektoren u v t u v t r1 = (, ), r2 = (, ) x x y y aufgespannt wird. Bei den Echtzeitverfahren wird dieser Footprint nun durch einfachere Flächen ersetzt, für die die Summe oder der Mittelwert der dazugehörenden Texturwerte im voraus berechnet werden kann. 36

Beispiel (Minification) Abbildung einer Reihe Pixel auf eine Schachbrett-Textur 37 Mip-Mapping Das wichtigste und bekannteste Verfahren für Echtzeitanwendungen ist das Mip-Mapping-Verfahren. Eine Mip-Map C mip [i,j] speichert eine quadratische Textur C[i,j] der Größe n n, wobei n = 2 k eine Zweierpotenz sein muß, in fortlaufend halbierten Auflösungsstufen. 38

Auf der Stufe d=0 werden die Texturwerte direkt übernommen. 0 k Cmip[ i, j] = C[, i j], 0 i,j<2. Mip-Mapping Die übrigen Stufen d entstehen durch Filterung der jeweils vorhergehenden Stufe. d 1 d d d d Cmip[ i, j] = Cmip [2 i,2 j] + Cmip [2i+ 1,2 j] + Cmip [2 i,2 j+ 1] + Cmip [2i+ 1,2 j+ 1] 4 kd - 1 d < k-1 und 0 i, j< 2. 1 1 1 1 ( ) Auf der Stufe d der Texturhierarchie werden also 2 2d Texel der Originaltextur als ein einziges Texel dargestellt. 39 Mip-Mapping Nach dieser nur ein einziges Mal zu berechnenden Vorfilterung können beliebige Flächenelemente folgendermaßen texturiert werden: die Texturkoordinaten (u,v) des Pixelmittelpunkts und die Ableitungen nach den Bildschirmkoordinaten u v u v,,, x x y y gegeben. Dann hat die Projektion des quadratischen Pixels auf die Texturebene, also der Footprint, die Kantenlängen u u a = x + y 2 2 v v b = x + y 2 2. u x u y 40

Mip-Mapping Als Seitenlänge des quadratischen Footprints wählt man oft l=max(a,b). Das Maximum und nicht etwa der Mittelwert wird deshalb gewählt, weil die entstehende zusätzliche Verschmierung des Ergebnisbildes durch zu große Footprints eher in Kauf genommen werden kann als Aliasing durch zu kleine Footprints. Unter diesen Voraussetzungen kann der Gesamttexturwert auf der Stufe d= log 2 (l) gemäß d C ( u, v, d) = BiLinInt( C, u, v) tex berechnet werden. Dies geht natürlich nur, wenn d ein ganzzahliger Wert ist. Ist dies nicht der Fall, dann muß d entweder zum nächstgelegenen ganzzahligen Wert gerundet werden, oder aber man führt eine lineare Interpolation zwischen den beiden benachbarten Stufen d und d+1 durch. Als Ergebnis der sog. trilinearen Interpolation erhalten wir dann: C u v d d d BiLinInt C u v d d BiLinInt C u v 1 (,, ) ( )* ( d + d tex = mip,, ) + ( + 1 )* ( mip,, ). mip 41 Summed Area Tables (SAT) Die Richtungsabhängigkeit der Projektion (Anisotropie) des Footprints kann durch das Mip-Mapping gar nicht berücksichtigt werden. SAT erlauben anstatt der Approximation durch Quadrate (u,v)-achsenparallele Rechtecke zu verwenden und somit diesem Defizit etwas Rechnung zu tragen. u x u y Quadratische Approximation des Footprints beim MipMap-Verfahren 42

Summed Area Tables (SAT) Der Berechnungsaufwand der einfachsten Methode, das arithmetische Mittel über alle Texturwerte eines (u,v)-achsenparallele Rechtecks ((i 0,j 0 ),(i 1,j 1 )) zu berechnen, ist proportional zur Größe des Rechtecks: 1 1 Ci [, j] i= i0 j= j0 Cavg ( i0, j0, i1, j1) = ( i i + 1)( j j + 1) i 1 0 1 0 Berechnet man dagegen in einem Vorverarbeitungsschritt eine sogenannte Summed-Area-Tabelle i j sat s s i= i j= j s s C ( i, j ) C[ i, j] = 0 0 j und setzt C [, i 1] = C [ 1, j] = 0, sat sat 43 Summed Area Tables (SAT) Dann kann C avg alternativ mit konstantem Berechnungsaufwand, unabhängig von der Rechteckgröße berechnet werden: C ( i, j, i, j ) = avg 0 0 1 1 i 1 1 i= i j= j 0 0 Ci [, j] ( i i + 1)( j j + 1) 1 0 1 0 j C i j i j C [ i, j ] C [ i 1, j ] C [ i, j 1] + C [ i 1, j 1] sat 1 1 sat 0 1 sat 1 0 sat 0 0 avg ( 0, 0, 1, 1) =. ( i1 i0 + 1)( j1 j0 + 1) 44

Footprint-Assembly (FPA) Die wesentliche Idee des FPA-Verfahrens besteht darin, die leicht und schnell zu erzeugenden Mip-Maps so einzusetzen, daß der näherungsweise als Parallelogramm angenommene Footprint möglichst genau abgedeckt wird. Auf diese Weise wird ein hoher Rechenaufwand vermieden und trotzdem eine anisotrope Texturfilterung erreicht. Das Problem besteht nun darin, den Footprint durch N quadratische Texturfelder (Mip-Map-Zugriffe) möglichst genau und mit geringem Rechenaufwand zu approximieren. C i j i j C [ i, j ] C [ i 1, j ] C [ i, j 1] + C [ i 1, j 1] sat 1 1 sat 0 1 sat 1 0 sat 0 0 avg ( 0, 0, 1, 1) =. ( i1 i0 + 1)( j1 j0 + 1) 45 Footprint-Assembly (FPA). Aus praktischen Gründen wird dabei N = 2 m gewählt, da auf diese Weise die endgültige Texturfarbe durch Aufsummieren und einfache Division durch eine Zweierpotenz (Shift) ermittelt werden kann. Für N kann eine Obergrenze angegeben werden, um die Rechenzeit ohne merkliche Qualitätseinbußen wesentlich zu verkürzen. 46

Footprint-Assembly (FPA) Für die Berechnung der Mip-Map-Stufe werden die Vektoren u v t u v t r1 = (, ), r2 = (, ) x x y y verwendet, die auch beim normalen Mip-Mapping zur Bestimmung der Stufe herangezogen werden. Dabei sind u,v die Texturkoordinaten und x,y die Bildschirmkoordinaten des Pixels. Ausgehend vom in die Texturebene projizierten Pixelmittelpunkt (u,v) erfolgen die Mip-Map-Zugriffe in Schritten entlang einer Geraden. Dabei wird der betragsmäßig größere der beiden Vektoren r 1 bzw. r 2 als Schrittrichtung r=(r u,r v ) t verwendet. Die Mip-Map-Stufe d ist dann durch die Kantenlänge l = min( r1, r2 ) als d = log 2( l) und die Anzahl der Mip-Map-Zugriffe durch N = max( r1, r2 ), l gerundet auf die nächstliegende Zweierpotenz, gegeben. 47 Footprint-Assembly (FPA) Mit Hilfe des Schrittvektors r=( u, v) der sich aus der Schrittrichtung durch ru rv u = und v = N N berechnet, können nun die Koordinaten (u n,v n ) für die einzelnen Zugriffe bestimmt werden: n ( un, vn) = ( u, v) + ( u, v), wobei n=± 1, ± 3, ± 5,...,( N 1). 2 Die Farbe des Pixels ergibt sich dann als arithmetischer Mittelwert aller Zugriffe. 48

Modifiziere Beleuchtungsrechnung (x,y) Berechne Objektraumkoordinaten Projektorfunktion Mapping Corresponder-Funktion Texturwert Transformation (x,y,z) (u,v) (s,t) (r,g,b)... K Potentiell ist jeder Parameter der Beleuchtungsrechnung beeinflußbar Modifiziere Beleuchtungsgleichung 49 Beeinflussung der Beleuchtungsrechnung Basis für die folgenden Betrachtungen : Erweiterte Blinn-Phong-Modell durchgeführt wird: i tot = aglob mamb + memi + k c k spot ( i k amb + d k ( i k diff + i k spec ) i i i amb diff spec = m amb = max( = max( s amb ( n l),0) mdiff sdiff mshi ( h n),0) mspec sspec l n h v 50

Beeinflussung der Beleuchtungsrechnung 1. Ersetzen der Objektfarbe durch Textur (replace) Bei dieser einfachsten Art der Texturierung wird die Objektfarbe durch die Farbe der Textur ersetzt. Jegliche Beleuchtung des Objekts wird entfernt, außer die Textur selbst enthält Beleuchtungseffekte. c out = c tex 2. A posteriori Skalierung des Farbwertes (modulate) Eine der am häufigsten angewandten Techniken führt die Beleuchtungsrechnung und das Shading mit konstanten Beleuchtungsparametern durch und skaliert den Beleuchtungswert i tot erst im nachhinein komponentenweise mit dem Texturwert c tex c out = i tot c wenn als Objektfarbe weiß gewählt wird, enthält diese die Schattierungsinformation und die Textur die Farbinformation des Objektes tex 51 Beeinflussung der Beleuchtungsrechnung 3. Modulation der Flächenfarbe Die Flächenfarbe wird im wesentlichen durch den Materialparameter m diff, im geringeren Maße aber auch durch den Parameter m amb bestimmt. Also zu setzen. m m diff amb = m = m diff ' c amb tex ' c tex Der wesentliche Unterschied zu 2. besteht darin, dass die spekularen Reflektionen und Emissionen von der Textur unbeeinflußt bleiben. 52

Beeinflussung der Beleuchtungsrechnung 4. Modulation der spekularen Reflektion m spec = m spec c tex Die Highlights können dadurch unregelmäßig gestaltet werden. Interessant ist diese Methode vor allem im Zusammenhang mit dem Reflection-Mapping und Environment-Mapping (später) 53 Beeinflussung der Beleuchtungsrechnung 5. Modulation der Transparenz Durch die Modulation des Transparenzparameters α = α * α obj tex können sehr realistisch aussehende Effekte erzielt werden: α=1 Objekte hinter diesem Flächenpixel sind vollständig sichtbar α=0 so wird kein Licht durchgelassen ansonsten wird mit dem Wert von α gefiltert. Bei Beschränkung auf die Werte 0 und 1 kann durch die Textur zwischen Sichtbarkeit und Unsichtbarkeit des Objekts ''umgeschaltet'' werden. Dadurch können auch kompliziert geformte Flächen aus einfachen Flächen ''ausgeschnitten'' werden. Mit stochastischen Werten für α können z.b. verschmutzte und milchige Glasscheiben modelliert werden. 54

Beeinflussung der Beleuchtungsrechnung 6. Perturbation des Normalenvektors Beim Bump Mapping wird mit Hilfe einer skalarwertigen Textur eine Offsetfläche P'(s,t) definiert. Die Normalenvektoren der Offsetfläche werden dann als Variationen der Normalenvektoren der Basisfläche interpretiert (siehe später) 7. Modulation von Lichtquellenparametern Eine weitere Möglichkeit besteht darin, Lichtquellenparameter durch Texturen zu beeinflussen. Besonders anschaulich ist dies bei Projektorlichtquellen. Dabei wird eine zweidimensionale Textur in den Raum projiziert, d.h. die Lichtemission wird in Abhängigkeit von der Lichtrichtung moduliert: Li ~ Ctex ( Finvmap ( L H i )). 55 Beeinflussung der Beleuchtungsrechnung 8. Höhenfelder und Offsetflächen Hierbei wird mit Hilfe von Texturen die tatsächliche Geometrie von Oberflächen verändert. Darauf beruht das sogenannte Displacement-Mapping. 9. U.v.a.m.... 56

Texturierung und Gouraud-Interpolation Bei Gouraud-interpolierten Dreiecken kann nur die Beleuchtungsrechnung 2. A posteriori Skalierung des Farbwertes (modulate) angewendet werden. Die Möglichkeit der alternativen oder auch kombinierten Anwendung der Texturierungen 3. bis 8. besteht nur bei Visualisierungsverfahren, die entweder eine explizite Beleuchtungsrechnung in jedem Flächenpunkt durchführen oder die verschiedenen Anteile der Phong Beleuchtungsgleichung getrennt durch Gouraud-Interpolation berechnen. 57 Environment Mapping (Reflection Mapping) eine einfache Möglichkeit, Reflektionen (zumindest approximativ) mit Hilfe von Textur-Hardware zu berechnen. Grundidee: Ist ein Objekt verglichen mit dem Abstand zu umgebenden Objekten klein, so hängt die einfallende Beleuchtsstärke nur von der Richtung, nicht von der Position eines Punktes auf dem Objekt ab. Daher kann die einfallende Beleuchtung für ein Objekt vorberechnet und in einer 2D-Textur, der Environment Map gespeichert werden. 58

Environment Mapping Anschaulich wird das reflektierende Objekt von einer virtuellen Kugel (oder auch virtueller Würfel) umgeben, auf deren Innenseite die Szenenumgebung als zweidimensionale Textur, die Environment Map) aufgetragen ist. Einem Punkt P auf der Objektoberfläche werden dann Texturkoordinaten (u,v) zugeordnet. Die Richtung R und damit die Texturkoordinaten (u,v) können einfach aus der Richtung V zur Kamera und der Normale N in Punkt P berechnet werden: R = V 2(VN)N V N R ( uv, ) R P W 59 Environment Mapping Für die Beleuchtungsrechnung wird ein erweitertes Phong-Beleuchtungsmodell, das auch Reflektionen berücksichtigt angewendet: k k k k k i tot = aglob mamb + memi + cspot ( iamb + d ( idiff + ispec ) + kireflmap( φθ ) k Vorteile des Environment Mapping + schnell und einfach zu berechnen + liefert gute Visualisierungsergebnisse, wenn die Textur z.b. den Himmel oder einen weit entfernten Horizont repräsentiert. + kann verwendet werden, um große ausgedehnte Lichtquellen als Textur darzustellen. 60

Environment Mapping Nachteile - Wie wird die Environment Map generiert und parametrisiert? - Die Reflektionsberechnung ist nur dann korrekt, wenn der Objektpunkt P sich im Weltmittelpunkt W befindet. Mit zunehmendem Abstand zwischen P und W treten verstärkt Verzerrungen auf. 61 Environment Mapping Ist die Environment Map schlecht parametrisiert, können erhebliche Aliasing- Probleme auftreten. - Es wird keine Verdeckungsrechnung durchgeführt. Das Problem, daß der reflektierte Strahl R auf ein blockierendes Szenenobjekt treffen kann, wird ignoriert. - Szenenobjekte können sich nicht gegenseitig widerspiegeln. Bei der Reflektionsberechnung wird nur die a priori berechnete Environment Map berücksichtigt. 62

Parametrisierung von Environment Maps Blinn, Newell 1976 verwenden Kugelkoordinaten zur Parametrisierung der Environment Map. Diese werden dann als Texturkoordinaten auf dem Objekt verwendet. Ist der Reflektierte Strahl R=(R x,r y,r z ) gegeben, so berechnen sich (φ,θ) analog wie beim Kugel-Mapping gemäß z θ = arccos( Rz ) θ arccos( Rx / sin θ ), falls Ry 0 φ = φ 2π arccos( Rx / sin θ), sonst x y 63 Parametrisierung von Blinn und Newell + Einfach verständlich, älteste Parametrisierung. Die Erzeugung der Environment Map ist kompliziert. In der Praxis wird meist eine Environment Map, die auf den Innenseiten eines Würfels aufgebracht ist, entsprechend umgerechnet. - Die Parametrisierung mittels Kugelkoordinaten ist schlecht. Um die Pole liegen wesentlich mehr Texel/Fläche als am Äquator. Das führt zu einer schlechten Abtastung. - Wird gegenwärtig nicht von Hardware unterstützt. - Ein Dreieck, das den Pol enthält, enthält den Pol nicht mehr, wenn linear in Polarkoordinaten interpoliert wird. - Schneidet ein Dreieck die Linie mit φ=0, so schneidet ein linear interpoliertes Dreieck diese nicht mehr. 64

Parametrisierung von Greene Greene 1986 verwendet anstatt der Projektion der Umgebung auf eine Kugel eine Projektion auf einen Würfel. Die Environment Map besteht aus 6 ebenen Texturen entsprechend den 6 Würfelseiten. Zur Erzeugung wird eine Kamera in der Mitte des Würfels platziert und 6 Aufnahmen in jede Richtung gemacht. In der Praxis wird die Szene ausgehend vom Mittelpunkt des Objekts 6 mal mit unterschiedlichen Blickrichtungen gerendert. Je nach Richtung des reflektierten Strahls wird eine der 6 Texturen ausgewählt. + Die Parametrisierung ist regelmäßiger eine Kugelkoordinatenparametrisierung. + Die Environment Map kann einfach mit Hilfe von Hardware erzeugt werden. 65 Parametrisierung von Environment Maps Die Projektion auf einen Würfel hat auch Nachteile: -Liegen die Texturkoordinaten von Eckpunkten von Dreiecken des Objekts in unterschiedlichen Würfelseiten, so ist es schwierig dazwischen zu interpolieren. Eine Methode ist, diese Dreiecke entsprechen zu unterteilen. - Filterung und bilineare Interpolation entlang Würfelkanten ist schwierig. -Noch nicht in Hardware implementiert. 66

Parametrisierung von Environment Maps Die Environment Map ist abhängig vom Objektmittelpunkt! 67 Environment Mapping Anschaulich wird das reflektierende Objekt von einer virtuellen Kugel umgeben, auf deren Innenseite die Szenenumgebung als zweidimensionale Textur, die Environment Map) aufgetragen ist. Einem Punkt P auf der Objektoberfläche werden dann Texturkoordinaten (u,v) zugeordnet. Die Richtung R und damit die Texturkoordinaten (u,v) können einfach aus der Richtung V zur Kamera und der Normale N in Punkt P berechnet werden: beim Reflektion Mapping (Blinn, Newell 1976) z.b. die Kugelkoordinaten (φ,θ), R = V 2( VCN) N 68

Sphere Mapping OpenGL unterstützt Environment Mapping mit der sogenannten Sphere Map. Dabei wird die gesamte umhüllende Kugel des Objekts, auf deren Innenseite wie beim Standard Environment Mapping die Textur der Umgebung aufgebracht ist, auf einen Kreis abgebildet: R V N V Bild, Textur R 69 Sphere Mapping Rückseite Vorderseite Linke Seite Rechte Seite Oben Unten Abbildung von 6 Würfelseiten auf eine Sphere Map 70

Berechnung einer Sphere Map 71 Sphere Mapping Berechnung von Texturkoordinaten in einem Punkt P des Objekts: Sei R = (R x,r y,r z ) t die Richtung des reflektierten Strahls (sie ist abhängig von der aktuellen Beobachtungsrichtung!). Dann berechnen sich die Texturkoordinaten (u,v) t wie folgt. Für den reflektierten Strahl gilt: R = 2( VCN) N V mit N=(N x,n y,n z ) t =(u,v,n z ) t und V=(0,0,1). Daraus folgt R v Rx 0 u u 0 2Nzu Ry = 2 0 v v 0 = 2Nzv 2 R z 1 N z N z 1 2Nz 1 ( u, v) V N P Auflösen nach u und v liefert u R R x y u =, v= 2( R + 1) 2( R + 1) z z 72

Vor/Nachteile -Interpolation der Texturkoordinaten führt zu Artefakten. - Unregelmäßige Abtastung: Maximale Abtastraten in Richtungen entgegender Beobachtungsrichtung, Abtastrate in Richtung der Beobachtungsrichtung geht gegen 0. In Beobachtungsrichtung hat die Parametrisierung eine Singulartität. - Aliasing Probleme vor allem am Rand. Relativ gute Abtastung. Beabsichtigte Interpolation Tatsächliche Interpolation mit Hardware, Wrapping Effekt 73 Dual-Parabolisches Mapping Heidrich und Seidel (1999) verwenden als reflektierendes Objekt anstatt einer Kugel zwei Paraboloide. 1 1 2 2 2 2 f( x, y) = ( x + y ), x + y 1 2 2 Im Gegensatz zum Sphere-Mapping, wo die gesamte Umgebung in einer Textur abgelegt wird, werden zwei Texturen verwendet. Eine für die Halbkugel entgegen der Blickrichtung (hinten) und eine in Blickrichtung (vorne). Für die Normale im Punkt (x,y) ergibt sich: N N = x x 1 y + y + 1 1 2 2 74

Dual-Parabolisches Mapping Berechnung von Texturkoordinaten in einem Punkt P des Objekts: Sei R = (R x,r y,r z ) t die Richtung des reflektierten Strahls (sie ist abhängig von der aktuellen Beobachtungsrichtung!). Dann berechnen sich die Texturkoordinaten (u,v) t wie folgt. Für den reflektierten Strahl gilt: R = 2( VCN) N V Frontside mit N=(N x,n y,n z ) t 1 t = 2 2 und V=(0,0,-1). Daraus folgt u ( uv,,1) + v + 1 v 2 u 2 2 R 0 0 1 x u u u + v + ( u, v) 1 2 Ry 2 0 v v 0 v = 2 2 2 2 u v 1 = u v 1 R + + + + z 1 1 1 1 u 2 + 1 2 2 u + v + 1 R R x y Auflösen nach u und v liefert u =, v= 1 R 1 R z z V R N P 75 Vor-und Nachteile + Dual-parabolic Maps lassen sich mit einfachen Matrizenoperationen für unterschiedliche Blickrichtungen umrechnen. D.h. sie sind blickpunktsabhängig. + Wesentliche gleichmäßigere Abtastung als beim Sphere-Mapping. + Weniger Aliasing Probleme. - Interpolation der Texturkoordinaten führt zu Artefakten. - Noch nicht in Hardware verfügbar. Würfel auf Dual-Parabolische Maps abgebildet. 76

Bump Mapping Mit den bisher beschriebenen Texturierungstechniken können nur Materialparameter variiert und Beleuchtungsergebnisse skaliert werden. Beleuchtete Flächen sehen dadurch bereits sehr viel variantenreicher und damit auch realistischer aus, trotzdem wirken sie häufig immer noch zu glatt. 77 Bump Mapping Gesucht ist daher eine einfache Technik, mit deren Hilfe Flächen rauh, runzlig, zerknittert oder gekräuselt erscheinen. Wollte man diese kleinen Unebenheiten geometrisch exakt modellieren, so könnte man z.b. zu einer gegebenen parametrischen Grundfläche P(u,v) ein zweidimensionales Höhenfeld h(u,v) addieren und würde so die Offsetfläche erhalten. Nuv (, ) P ( u, v) = P( u, v) + h( u, v) Nuv (, ) 78

Bump Mapping Für kleine Höhenwerte ist dieser Ansatz jedoch zu rechenaufwendig. Außerdem zeigt das Phong-Beleuchtungsmodell, daß die exakten geometrischen Positionen der Flächenpunkte P(u,v) bzw. P'(u,v) gar nicht direkt in die Beleuchtungsrechnung eingehen. Viel wichtiger sind die Normalenvektoren N(u,v). Die wesentliche Idee der Bump-Mapping-Technik besteht konsequenterweise darin, daß es für kleine Unebenheiten h(u,v) ausreicht, die Visualisierung mit der Originalgeometrie P(u,v) durchzuführen, bei der Beleuchtungsrechnung aber die Normalen N'(u,v) der Offsetfläche zu verwenden. Diese Normalenvektoren können durch N ( u, v) = P ( u, v) P( u, v) berechnet werden. u v 79 Bump Mapping Die Richtungsableitungen erhält man mit den bekannten Summen- und Kettenregeln: Nuv (, ) Nuv (, ) P u( u, v) = Pu( u, v) + hu( u, v) + h( u, v) Nuv (, ) Nuv (, ) u Nuv (, ) Nuv (, ) P v( uv, ) = Pv( uv, ) + hv( uv, ) + huv (, ) Nuv (, ) Nuv (, ) v Für kleine Werte h(u,v) können die hinteren Teilterme ignoriert werden: Nuv (, ) P u( u, v) Pu( u, v) + hu( u, v) Nuv (, ) Nuv (, ) P v( u, v) Pv( u, v) + hv( u, v) Nuv (, ) 80

Bump Mapping Für N (u,v) folgt damit: N N N N N = Pu Pv + hu Pv hv Pu huhv N + N + N N = N + D, mit N N hu( N Pv) hv( Pu N) D= hu Pv + hv Pu = N N N Die zweidimensionale Bump Map h(u,v) ist dabei in der Regel als diskretes Zahlenfeld bzw. als Grauwertbild gegeben. In diesem Fall werden die Richtungsableitungen h u und h v durch hu ( + uv, ) huv (, ) hu ( u, v) = u huv (, + v) huv (, ) hv ( u, v) = v berechnet. 81 Bump Mapping Das Bump Mapping kann nur mit denjenigen Beleuchtungsverfahren kombiniert werden, die eine explizite Beleuchtungsrechnung in jedem Flächenpunkt durchführen. Beispiele hierfür sind das Phong-Shading- und das Raytracing-Verfahren. Das Gouraud-Shading-Verfahren erfüllt diese Bedingung jedoch nicht. 1997 wurde ein Bump-Mapping-Verfahren für Hardware vorgestellt. 82

Zusammenfassung K Fassen Sie das Gelernte zusammen. K Definieren Sie Anwendungsmöglichkeiten für das Gelernte. K Erbitten Sie Feedback zur Schulungsveranstaltung. 83 84

Glossar K Glossar der Begriffe K Definieren Sie die Fachausdrücke, wie sie zu diesem Thema verwendet werden. 85 86

Weitere Informationen K Nennen Sie Bücher, Artikel, elektronische Quellen. K Beratungsdienste, andere Quellen 87 Ausblick Nächste Schritte K Ergänzungen,... K Wie geht es weiter Nächstes Kapitel 88