36
Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte Freiformflächen) glatt – im Gegensatz zu wirklich existierenden natürlichen Oberflächen. ? +

Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Embed Size (px)

Citation preview

Page 1: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

?

+

Page 2: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 3: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 4: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 5: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 6: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 7: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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“

Page 8: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 9: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 10: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 11: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

11Visualisierung mit C++ / OpenGL - SS 2008

Texture Mapping

Beispiel: Zwischenobjekt Zylinder

Page 12: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

12Visualisierung mit C++ / OpenGL - SS 2008

Texture Mapping

Beispiel: Zwischenobjekte

Planar Zylinder

Kugel

Page 13: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

13Visualisierung mit C++ / OpenGL - SS 2008

Texture Mapping

Techniken des o-mappings:

1. Reflexionsstrahl 2. Objektzentrum

3. Normalenvektor 4. Hilfsobjektnormale

Page 14: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

14Visualisierung mit C++ / OpenGL - SS 2008

Texture Mapping

Inverses Mapping mit Zwischenobjekt:

Page 15: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 16: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 17: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 18: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

18Visualisierung mit C++ / OpenGL - SS 2008

Bump Mapping

Grundlegende Beobachtung:

Page 19: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 20: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

20Visualisierung mit C++ / OpenGL - SS 2008

Bump Mapping

Beispiele:

Page 21: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 22: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 23: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 24: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 25: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 26: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 27: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 28: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 29: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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

Page 30: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

30Visualisierung mit C++ / OpenGL - SS 2008

„Bubble“

Environment Mapping

Page 31: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

31Visualisierung mit C++ / OpenGL - SS 2008

Environment Mapping

Beispiele:

Page 32: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

32Visualisierung mit C++ / OpenGL - SS 2008

Environment Mapping

Beispiele:

Page 33: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

33Visualisierung mit C++ / OpenGL - SS 2008

Environment Mapping

Beispiele:

Page 34: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 35: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

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.

Page 36: Mapping-Techniken 1 Visualisierung mit C++ / OpenGL - SS 2008 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte

Mapping-Techniken

36Visualisierung mit C++ / OpenGL - SS 2008

Resümee

Beispiel: Chrome / Reflection Mapping + Ray Tracing