Acrobat

Werbung
Proseminar Computer Graphics
Texture Mapping
computer graphics & visualization
Proseminar – Computer Graphics
Andreas Budde
Inhalt:
1. Entstehung des Texture Mappings
2 .Texturformate
3. Texture Mapping Verfahren
Zweistufiges Texture-Mapping
Rückwärts-Mapping
Vorwärts-Mapping
Affines Texture Mapping
Projiziertes Texture Mapping
4. Problembehandlung
Anti-Aliasing
Mip-Mapping
5. Speziellere Mapping Verfahren
6. Texture Mapping in OpenGL
7. Fazit
8. Quellenangabe
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
1.Enstehung des Texture Mapping
• bei realistischen Darstellung von Objekten aus
der realen Welt benötigt man sehr viele kleine
Polygone
• kostet viel Speicherplatz und Rechenzeit
Suche nach anderen Methode Details darstellen
zu können
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Idee
2-D Rasterbilder, welches
die Details wiederspiegelt,
wird auf ein 3D-Modelle
aufgesetzt
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Weiteres Beispiel
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Vor- und Nachteile
+
+
+
+
+
Modelle mit einfacher Form wirken detailliert
Polygonanzahl kann reduziert werden
spart Modellier-, Speicher- und Rechenaufwand
Eindruck von rauhen Oberfläche hinzufügbar
Spiegelung der Umgebung an einem Objekt
möglich
- bei näherer Betrachtung wird das Objekt
unscharf
- Texturen müssen so gestaltet sein, dass die
Übergänge fließend sind
- Verzerrungen können auftreten
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
2.Texturformate
Texturen können ein-, zwei- oder dreidiminsional sein

1D-Textur wäre eine Rasterlinie mit Farbwerten

2D-Texturen sind am gebräuchlichsten
Verwendung von Rasterbilder von realen Objekten, Mustern
oder auch Oberflächenstrukturen

3D-Textur auch Volumentextur genannt, besteht
beispielsweise aus räumliche Daten von Objekten, wie sie bei
der Computertomographie entstehen
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
1D-Textur Beispiel

Farbwert aus der 1D-Textur wird durch die Höhe
des einzelnen Punktes bestimmt
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel: 3D-Texture
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel: 3D-Texture
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
3.Texture Mapping Verfahren
Zweistufiges Texture-Mapping
Rückwärts-Mapping
Vorwärts-Mapping
Affines Texture Mapping
Projiziertes Texture Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Texture Mapping
Allgemein:
2D texture space (u,v) -> 3D object space (x,y,z) -> 2D screen space (x,y)
parametrization
projective transformation
Parametrisierung:
 Vertex bekommt Texturkoordinaten zugewiesen
 Zwischen den Vertex wird durch lineare Interpolation die

entsprechende Texturkoordinate ermittelt
Bei einfachen Objekten ist die Parametrisierung trivial, bei
komplexeren Objekten wird das Zweistufige Texture Mapping
angewendet
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Zweistufiges Texture-Mapping
Anwendung
 Bei komplexeren Objekten verwendet man
Zwischenobjekte
Durchführung
 Zunächst wird die Texture auf ein Zwischenobjekt
projiziert.
 Im Anschluss wird sie auf das Objekt projiziert
(Mapping von einem 3D-Raum in einen 3D-Raum)
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Im Detail:
1.Schritt (S-Mapping)
 Mapping von einem zweidimensionalen
Texturraum auf eine einfach dreidiminsionale
Zwischenoberfläche
Bsp.: Zylinder, Ebene, Würfel, Kugel
2.Schritt (O-Mapping)
 3D-Texturmuster wird auf Objektoberfläche
aufgetragen
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Im Detail:
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Texture Mapping Verfahren
Rückwärts-Mapping (Reverse-Mapping)
 man findet für jedes Screen-Pixel sein zugehöriges “Urbild“
im Texturraum (Abbildung in den Texturraum)
+gebräuchlichtes Verfahren
+gut mit Z-Buffering kombinierbar
Vorwärts-Mapping (Forward-Mapping)
 Abbildung vom Texturraum in den Bildraum
 Vorgang vergleichbar mit elastischen Folie die an die
Objektoberfläche angeschmiegt wird
-Löcher und Überlappungen möglich
-in Hardware schwer realisierbar
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Affines Texture Mapping
• dabei werden den Eckpunkten eines Dreiecks im
Bildraum entsprechend Texturkoordinaten im
(U,V)-Texturraum zugewiesen.
• durch lineare Interpolation wird zu jedem Pixel im
Bildraum das entsprechende Pixel im Texturraum
bestimmt.
- Lage des Dreiecks im Objektraum und Perspektive
nicht korrekt beachtet
Folge: Perspektivische Verzehrung entsteht
+ relativ einfache Berechnung
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Affines Texture Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Vergleich beider Verfahren
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Projiziertes Texture Mapping
• Projektion relativ zum Projektorstandpunkt
Objekte können sich relativ zur Textur
bewegen (Bsp.: Simulation eines Lichtkegels)
•
Projektion relativ zu den Objektkoordinaten
betrachten.
Textur bewegt sich mit dem Körper mit , wie
festgemacht am Körper
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
4.Problembehandlung

Anti-Aliasing

Mip-Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Probleme beim Texture Mapping
 bei der Zuordnung eines Pixels im Bildraum zu
einem Pixel im Texturraum kann es beispielsweise
zu dem Problem kommen, dass viele Textur-Pixel
auf einen Pixel abgebildet werden können
 somit können visuelle Artefakte (Aliasing)
entstehen
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Probleme
Magnification (Vergrößerung)
 Ein Textur-Pixel wird für mehrere Bild-Pixel verwendet
Orginal:
 Lösung: Bilineare Interpolation
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Probleme
Minification (Verkleinerung)
 mehrere Textur-Pixel werden auf einen Bild-Pixel abgebildet
Orginal:
 Ausweg: Mip-Mapping
(Bilineare Interpolation)
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Möglichkeiten gegen Aliasing
Point-Sampling (Nearest Neighbor)
 den Wert des nächst liegenden Textur-Pixel nehmen
+ schnell
- schlechte Qualität
Bilineare Interpolation
 gewichteter linearer Durchschnitt aus 2x2-Feld des am nächsten
liegenden Textur-Pixels
- langsam
+ höhe Qualität
Mip Mapping
Trilineare Interpolation
 Interpolation zwischen MipMap Stufen
Anisotropes Filtern
 Im Gegensatz zu isotropen Filtern wird ein nicht-quadratischer
Filterbereich (Rechteck oder Parallelogramm) angenähert
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel
• Kommt noch
Point-Sampling
Mip Mapping + Bilineare Interpolation
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Mip Mapping
 Anwendung des Filters auf die Textur in
verschiedene Entfernungen bereits bei der
Initialisierung
 Abspeichern der Ergebnisse
 Speicherung der drei Farbanteile (Rot, Grün, Blau)
in der Textur wie folgend:
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Speicherung von Mip-Maps
 im 4. Viertel wird die Textur
wieder in halber Auflösung
abgespeichert, rekursiv
fortgesetzt.
 je nach Distanz wird
dann das entsprechende
Teilbild als Textur
verwendet.
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispieltextur um 50% verkleinert
 Ohne Mip-mapping
 2x2-Mip-Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Vor- und Nachteile
+ schnelle Darstellung mit guter Qualität
+ man kann mit Hochqualitätsfiltern arbeiten, da die
Berechnung nur einmal bei der Initialisierung
passiert
- 1/3 mehr Speicherplatz nötig
- Übergang zwischen MIP-Stufen ist abrupt
(MIP-Banding-> trilinearen Filtern)
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
5.Speziellere Mapping Verfahren
• Bump Mapping
• Displacement Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Bump Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Texture Mapping und Bump Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Displacement Mapping
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiele
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiele
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Weiteres Beispiel
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
6.Texture Mapping in OpenGl
void glGenTextures( GLsizei n, GLuint *textures )
 erzeugt Textur-ID über die OpenGl die Texturen
identifizieren kann
- n Anzahl der Texturennamen an, die generiert
-
werden sollen
textures Array in dem die Texturnamen
gespeichert werden sollen
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Texture Mapping in OpenGl
void glBindTexture(GLenum target, GLuint texture)
 bindet eine Texture an ein Texture-Target
- target spezifiert das Target zu dem die Texture
-
gebindet werden soll
(kann GL_TEXTURE_1D, GL_TEXTURE_2D oder
GL_TEXTURE_3D sein)
texture Texture die gebindet werden soll
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
void glTexParameterf(GLenum target, GLenum pname, GLfloat param)

-
-
-
Setzt die Parameter für die Textur
(Texturfilter oder ob die Texture gekachelt werden soll)
target spezifiert das Target zu dem die Texture gebindet
werden soll
pname Name eines Texture-Parameters
(GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER,
GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T,
GL_TEXTURE_BORDER_COLOR oder
GL_TEXTURE_PRIORITY)
Params Wert des Parameters
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel für Magnification
glTexParameterf( GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_LINEAR );
 GL_TEXTURE_2D


Target
GL_TEXTURE_MAG_FILTER
Mehrere Pixel werden auf ein Texel abgebildet
GL_LINEAR
Bilineare Interpolation
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel für Minification
glTexParameterf( GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );



GL_TEXTURE_2D
Target
GL_TEXTURE_MIN_FILTER
Mehrere Texel werden auf einen Pixel abgebildet
GL_LINEAR_MIPMAP_LINEAR
Wählt die beiden MipMaps die am Nächsten an der
gewünschten Größe sind und berechnet jeweils bei beiden
über GL_LINEAR einen Texturwert. Aus den beiden
Texturwerten wird dann der Durchschnitt gebildet
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Texture Mapping in OpenGl
void glTexImage2D( GLenum target, GLint level, GLint
internalformat, GLsizei width, GLsizei height, GLint border, GLenum
format, GLenum type, const GLvoid *pixels )

Lädt die Texture in den Video Speicher
-
target Target
level gibt den Detailgradan, level=0 ist das Basisbild. level=n ist
die n-te Mipmap Reduzierung der Texture
internalformat Anzahl der Farbkomponenten GL_RGB
width & height die Breite und Höhe der Texture (Muss 2er Potenz
sein)
border Borderweite (0 oder 1)
format Format der Pixeldaten (GL_RGB )
type Datentyp der Pixeldaten (GL_UNSIGNED_BYTE. )
pixels Pointer zu den Bilddaten im Speicher
Beispiel:
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, imageWidth, imageHeight, 0,
GL_RGB, GL_UNSIGNED_BYTE, imageData);
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Zu beachten:
 Texturing einschalten mit
glEnable (GL_TEXTURE_2D)
 glBindTexture bevor glBegin/glEnd verwendet
werden
 Sicherstellen das man die Texture Koordinaten
spezifiziert hat
 Bei Dreieck mit 3 Vertex:
TexCoord; VertexCoord; TexCoord; VertexCoord;
TexCoord; VertexCoord;
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Beispiel: Viereck
glEnable (GL_TEXTURE_2D); /* enable texture mapping */
glBindTexture (GL_TEXTURE_2D, 13); /* bind to our texture, has id of
13 */
glBegin (GL_QUADS);
glTexCoord2f (0.0f,0.0f); /* lower left corner of image */
glVertex3f (-10.0f, -10.0f, 0.0f);
glTexCoord2f (1.0f, 0.0f); /* lower right corner of image */
glVertex3f (10.0f, -10.0f, 0.0f);
glTexCoord2f (1.0f, 1.0f); /* upper right corner of image */
glVertex3f (10.0f, 10.0f, 0.0f);
glTexCoord2f (0.0f, 1.0f); /* upper left corner of image */
glVertex3f (-10.0f, 10.0f, 0.0f);
glEnd ();
glDisable (GL_TEXTURE_2D); /* disable texture mapping */
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Weitere Texture Befehle in OpenGL

Um Texturfarbe mit Flächenfarbe zu mischen
glTexEnv*()

Ersetzen von Teilen von Texturen
glTexSubImage2d()

Texturengröße abändern
gluScaleImage()

gluBuild*DMipmaps()
…Funktionen für Environment Mapping….
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
7.Fazit
 In der heutigen Computergrafik ist das Texture
Mapping nicht wegzudenken
 Es stellt eine Vielzahl von Möglichkeiten bereit,
Computer Szenen noch realistischer und in
Echtzeit darzustellen zu können
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
8.Quellenangabe
•
Alan Watt – 3D-Computer Graphics, 3.Auflage
•
Alan Warr – 3D Games
•
Hans-Joachim Bungartz, Michael Griebel, Christoph Zenger Einführung in die Computergraphik, 2 Auflage
•
Beat Brüderlin, Andreas Meier – Computergrafik und
Geometrisches Modellieren
•
www.tomshardware.de
•
www.opengl.org
•
http://de.wikipedia.org
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Danke für Ihre Aufmerksamkeit
Proseminar – Computer Graphics
Andreas Budde
computer graphics & visualization
Herunterladen