Upload
elli-katzman
View
105
Download
2
Embed Size (px)
Citation preview
Mapping-Techniken
1Visualisierung mit C++ / OpenGL - SS 2008
Motivation
Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte Freiformflächen) glatt – im Gegensatz zuwirklich existierenden natürlichen Oberflächen.
?
+
Mapping-Techniken
2Visualisierung mit C++ / OpenGL - SS 2008
Motivation
Die explizite Wiedergabe von Oberflächendetails ist oft zuaufwendig (Modellierung und Rendering) und wird deshalbdurch die Anwendung verschiedenster Mapping-Technikensimuliert.
Am Anfang stand das reine Texture Mapping (Catmull 1974):„(...) Projektion (zweidimensionaler) (Strukturen und) Muster auf die Oberfläche von Körpern (...)“
Darauf aufbauend existieren mittlerweile verschiedenste Varianten,viele davon Hardware-unterstützt!
Entsprechend wird heute die Simulation von Oberflächendetails i.d.R. mittels Bitmaps, also 2D-Bildern, durchgeführt.
Mapping-Techniken
3Visualisierung mit C++ / OpenGL - SS 2008
AusprägungenAusprägungen
Jahr Name(n) Verfahren Merkmal
1974 Catmull Texture Mapping Farbe
1976 Blinn, Newell Reflection Mapping Reflexionen
1978 Blinn Bump Mapping Normalen
1985 Gardener Transparency Mapping Transparenz
1986 Greene Environment Mapping Reflexionen
1987 PIXAR Displacement Mapping Form, Geometrie
StanzeStanze
Transparency Map
Bump MapBump Map
Texture MapTexture Map
Weitere Verfahren: Procedural Mapping, 3D Texture Mapping, …
Texture Mapping
Mapping-Techniken
4Visualisierung mit C++ / OpenGL - SS 2008
Abbildung
Problemstellungen
Realisierung der Abbildung?
Speicherung der Abbildungsvorschrift?
Ziele
Darstellung von Oberflächendetails (Materialien)
Ohne aufwändige Geometrieberechnung
Ohne aufwändige Repräsentation
Ohne aufwändigeres Rendering
3 2 3: , , , , , ... T x y z m
„All it takes is for the rendered image to look right.“
(Jim Blinn, SIGGRAPH‘84)
üblich: 2 Schritte
Texture Mapping
Mapping-Techniken
5Visualisierung mit C++ / OpenGL - SS 2008
Schritt B
Gängig: Speicherung der Abbildungswerte in Bitmap („Texture Map“)
Bsp.:
Alternativ: Prozedurale Erzeugung
2 3: T mit 3( , ) : 0,1 0,1 T u v
Schritt A
Abbildung 3D-Punkt-Koordinaten auf 2D-Textur-Koordinaten
Zusammen:
Für sichtbare Vertices
Für Pixel innerhalb sichtbarer Polygone: Interpolation
2, u v 3, T u vA B
3, , x y z
Texture Mapping
Mapping-Techniken
6Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Begriffe:Texture Map: Das zu mappende Bild oder Muster
(Realbild oder synthetisches Bild)Texel: Einzelelemente (Pixel) der Texture Map
Prinzip:
Texture Map
Texel
Mapping-Techniken
7Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Bemerkungen:
- Man unterscheidet grundsätzlich die Sichtweisen forward und inverse mapping
- Im praktischen Einsatz erweist es sich oft als sinnvoll den eigentlichen Mapping Vorgang zweigeteilt durchzuführen(hier in der Sichtweise forward mapping):
a) Zunächst wird die Textur durch eine geeignete (einfache)Abbildung auf eine einfache Zwischenfläche (intermediatesurface) projiziert -> „s-mapping“Man benutzt Rechteck, Box, Zylinder, Kugel
b) Von dort wird die Textur auf das wirklich zu texturierende Objekt (mit einer allgemeinen Fläche) übertragen.-> „o-mapping“
Mapping-Techniken
8Visualisierung mit C++ / OpenGL - SS 2008
(0,0)
(1,1)
Beispiel: Zwischenobjekt planares Rechteck Rechteck (Schritt A)(Schritt A)
Gegeben
(0,0,0) (b,0,0)
(b,h,0)(0,h,0)
x
y
z
Bestimmung der Textur-Koordinaten
xu x, y, z
b y
v x, y, zh
x, y 0,b 0,h
u
v
(0,0) (1,0)
(1,1)(0,1)
?
(0,0)
(1,1)
Texture Mapping
Mapping-Techniken
9Visualisierung mit C++ / OpenGL - SS 2008
Beispiel: Zwischenobjekt Kugel
Kugelkoordinaten:
mit:
Abbildung planares Rechteck auf Kugel → Verzerrungen
Daher: Einschränkung auf Teilkugel
x, y, z r cos sin , r sin sin , r cos
0,2 , 0,
Bestimmung der Textur-Koordinaten (Bsp.)
l
r l
u ,
u
o u
v ,
l r o u, , ,
x y
z
r
ro
u
l
Texture Mapping
Mapping-Techniken
10Visualisierung mit C++ / OpenGL - SS 2008
Beispiel: Zwischenobjekt Kugel
Teilkugel: l r u o0, , ,2 2 4
x y
z
r
ro
u
l
/ 2u, v ,
/ 2 / 4
u, v 0,1D.h.:
Beispiel:
Texture Mapping
Mapping-Techniken
11Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Beispiel: Zwischenobjekt Zylinder
Mapping-Techniken
12Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Beispiel: Zwischenobjekte
Planar Zylinder
Kugel
Mapping-Techniken
13Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Techniken des o-mappings:
1. Reflexionsstrahl 2. Objektzentrum
3. Normalenvektor 4. Hilfsobjektnormale
Mapping-Techniken
14Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Inverses Mapping mit Zwischenobjekt:
Mapping-Techniken
15Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Texture Mapping und Aliasing:
Texture Mapping ist äußerst anfällig für Aliasing-Effekte:
- Ein Pixel in Bildschirmkoordinaten kann nach der Rückprojektion auf die Textur dort den Bereich mehrerer Texels überdecken -> Abtastung? -> idealerweise: Integral, Praxis: Samples + Filterung
Minification
Mapping-Techniken
16Visualisierung mit C++ / OpenGL - SS 2008
Texture Mapping
Texture Mapping und Aliasing: (Fortsetzung)
Texture Mapping ist äußerst anfällig für Aliasing-Effekte:
- umgekehrt: Ein Texel auf der Textur kann in Bildschirm-koordinaten mehrere Pixel überdecken -> Abtastung?
- Texture Maps werden i. A. periodisch aneinandergereiht,um eine größere Fläche zu bedecken -> Vorsicht: Periodizität und Abtasttheorem!
=> Oversampling, Filterung und Mip-Mapping
Magnification
Minification-Problem
Mapping-Techniken
17Visualisierung mit C++ / OpenGL - SS 2008
Bump Mapping
Reines Texture Mapping erzeugt den Eindruck einer texturierten aber glatten/ebenen Oberfläche.
Um die Oberfläche „aufzurauhen“ und dreidimensionaler wirken zu lassen wird beim Bump Mapping nun nicht die Geometrie der Oberfläche selbst verändert, sondern die Normalen bei der Auswertung des Beleuchtungsmodells manipuliert:
Simulation von Oberflächenunebenheiten auf eigentlich glatten Oberflächen durch Veränderung der Normalenvektoren der Geometrie.
Mapping-Techniken
18Visualisierung mit C++ / OpenGL - SS 2008
Bump Mapping
Grundlegende Beobachtung:
Mapping-Techniken
19Visualisierung mit C++ / OpenGL - SS 2008
Bump Mapping
Verfahren:
Die Veränderung der Normalenvektoren erfolgt prozeduraloder unter Verwendung von Texture Maps, deren Grauwerteein Maß für die Abweichung darstellen.
Es können regelmäßige Strukturen (z. B. Golfball)als auch unregelmäßige Strukturen (z. B. Baumrinde)simuliert werden.
Betrachtet man die Silhouette eines mit Bump Mapping dargestellten Körpers, so merkt man jedoch bei genauerem Hinsehen, daß die Oberfläche in Wirklichkeit eben ist.
Mapping-Techniken
20Visualisierung mit C++ / OpenGL - SS 2008
Bump Mapping
Beispiele:
Mapping-Techniken
21Visualisierung mit C++ / OpenGL - SS 2008
Displacement Mapping
Über die eigentliche Oberfläche wird ein Höhenfeld gelegt,dessen einzelne Punkte in Richtung der Oberflächennormalenanhand einer Texture Map verschoben werden.
Hier werden also tatsächlich Oberflächenpunkte (von ihrem Platz) bewegt!
+ Silhouette - schwer kontrollierbare Polygonanzahl
Beispielanwendung: Landschaftsmodelle
Silhouette schwer kontrollierbare Polygonanzahl
Mapping-Techniken
22Visualisierung mit C++ / OpenGL - SS 2008
Opacity Mapping / Transparency Mapping
Ähnlich dem Alpha-Kanal bei Bildern. Das Objekt, auf das eine Opacity Map gelegt wird, kann entsprechend der verwendeten Bildvorlage auf seiner ganzen Oberfläche oder nur stellenweise (graduell) transparent sein.
Mapping-Techniken
23Visualisierung mit C++ / OpenGL - SS 2008
Procedural Mapping
Allgemeine Methode, die den Umstand beschreibt, dass eine algorithmische Beschreibung die Grundlage des verwendeten Mapping-Verfahrens darstellt.
Dieses Prinzip wird i.d.R. für 3D-Texturen angewendet.
Beispiel: Simulation von Unregelmäßigkeit
Mapping-Techniken
24Visualisierung mit C++ / OpenGL - SS 2008
3D (Texture) Mapping
Statt einem 2D-Bild wird eine (prozedurale) Map benutzt, die an jedem Punkt im 3D-Raum definiert ist.
Mittels prozeduralen Ansätzen und geeigneten mathematischen Funktionen lassen sich wirklichkeitsgetreue, dreidimensionale Muster erzeugen.
Holzmaserung Perlin Marmor
Mapping-Techniken
25Visualisierung mit C++ / OpenGL - SS 2008
MotivationMotivation
Bisher: Texturkoordinaten bleiben fest,
auch bei Bewegung Objekt / Beobachter
Problem: ungeeignet für spiegelnde Objekte (z.B. glänzende Kugel)
Korrekte Simulation des Lichtwegs durch Gesetze der
geometrischen Optik
Aber: Software-Rendering! Keine GPU-Unterstützung!
Kein Echtzeitverhalten!
Übliche Lösung: Raytracing
Ziel des Environment Mappings: Approximation von Reflexionen
mit Hilfe der Textur-Hardware !
Environment Mapping
Mapping-Techniken
26Visualisierung mit C++ / OpenGL - SS 2008
Historisch ältestes Verfahren: Historisch ältestes Verfahren: Sphere MappingSphere Mapping
NormaleReflexionsstrahl
Sichtstrahl
ReflektierendeKugelB
ildeb
ene
Vorstellung: Betrachter sehr weit entfernt, Kugel sehr klein
hintereHälfte
vordereHälfte
Sphere Map
Geometrie
Environment Mapping
Mapping-Techniken
27Visualisierung mit C++ / OpenGL - SS 2008
Realisierung von Schritt ARealisierung von Schritt A
Abbildung 3D-Punkt-Koordinaten auf 2D-Textur-Koordinaten:
3x, y, z 2u, v Reflexionsvektor 3rReflexionsgesetz Reflexionsrichtungen
Textur-Koordinaten Reflexionsgesetz: r 2 s, n n s s rn
Geometrie-Setup: Einheitskugel im Ursprung
Zuordnung: Punkt-Koord. Textur-Koord.
y 2v 1 x 2u 1
2 2z 1 x y
x1
-1
y
zu
1
0
v
Environment Mapping
Mapping-Techniken
28Visualisierung mit C++ / OpenGL - SS 2008
Normale:T T
0 x y zn (n ,n ,n ) (x, z)n y,
Sichtrichtung:Ts (0,0,1)
Nach Refexionsgesetz:
x x
y z y
z z
r n 0
r r 2n n 0
r n 1
Nach n auflösen, normalisieren:
x x
0 y y2 2 2x y z
z z
r n1
n r nr r (r 1) r 1 n
x 2u 1
x
22 2x y z
r 1u
22 r r r 1
y
22 2x y z
r 1v
22 r r r 1
Resultat:Resultat:
x1
-1
y
zu
1
0
vEnvironment Mapping
Mapping-Techniken
29Visualisierung mit C++ / OpenGL - SS 2008
BeispielBeispiel
Wichtige ProblemeWichtige Probleme
Sphere Map gilt nur für einen Beobachtungspunkt!
Dynamische Neuberechnung der Sphere Map ist aufwendig!
VerbesserungenVerbesserungen
Dual-Paraboloid-Mapping
Cube Mapping (in heutiger Grafik-Hardware implementiert)
Environment Mapping
Mapping-Techniken
30Visualisierung mit C++ / OpenGL - SS 2008
„Bubble“
Environment Mapping
Mapping-Techniken
31Visualisierung mit C++ / OpenGL - SS 2008
Environment Mapping
Beispiele:
Mapping-Techniken
32Visualisierung mit C++ / OpenGL - SS 2008
Environment Mapping
Beispiele:
Mapping-Techniken
33Visualisierung mit C++ / OpenGL - SS 2008
Environment Mapping
Beispiele:
Mapping-Techniken
34Visualisierung mit C++ / OpenGL - SS 2008
Chrome / Reflection Mapping
Abbildung eines willkürlichen Musters aus dem zweidimensionalenTexturraum (chrome map) auf eine reflektierende Oberfläche.
Die Textur bleibt an einem festen Punkt im Raum. Oft wird künstlich für Unschärfe der Textur gesorgt.
Mapping-Techniken
35Visualisierung mit C++ / OpenGL - SS 2008
Resümee
- Alle Arten von Mapping-Techniken sind äußerst anfälligfür Aliasing-Effekte!
- Verschiedene Arten von Mapping-Techniken können miteinander kombiniert auf das gleiche Objekt angewendet werden.
Dies leisten heute verfügbare Werkzeuge Rendering- undAnimationspakete standardmäßig.
- Mapping-Techniken bilden die wesentliche Grundlage fürpraktisch alle heute kommerziell eingesetzten Computergrafik-Techniken.
Mapping-Techniken
36Visualisierung mit C++ / OpenGL - SS 2008
Resümee
Beispiel: Chrome / Reflection Mapping + Ray Tracing