Zur Homepage von Tobias Krause | Zur Proseminar Homepage |
Tobias Krause |
|
Übersicht |
Inhalt: |
1.1
Simple
Mapping - Texture-Mapping auf einfache Körper
1.2 Two Stage Mapping
- Zwei-Phasen-Texturprojektion
1.5 Mapping polygon interior points
1.6 Mapping mit Hilfe einer Bereichsunterteilung
1.7 Texture Mapping und Antialiasing
1.9 View-dependent mapping techniques:
1. Texture Mapping |
Zur realistischen Visualisierung von Objekten gehört
die detailgetreue Darstellung ihrer
Oberflächen. Diese Darstellung kann durch das "Texture
Mapping" erreicht werden. Dabei
wird ein zweidimensionales, digitales Bild auf ein dreidimensionales
Objekt projiziert. Bei
jeder dieser Darstellungen steht man vor dem Problem,
wie die Textur am besten auf das
Objekt abzubilden ist. Man benötigt eine Funktion,
die jedem Punkt auf dem Objekt einen
Wert der Textur zuweist: (u,v) = F(x,y,z), wobei
(x,y,z) die Koordinaten der Objektpunkte
und (u,v) die Koordinaten der einzelnen Texturpunkte (Texel)
im Texturraum sind. Beispiele
für dieses Prinzip sind das Tapezieren einer Wand
oder das Aufkleben eines Etiketts auf
eine Flasche.
1.1 Simple Mapping - Texture-Mapping auf einfache Körper |
Texture-Mapping auf eine planare Oberfläche |
Bei der Projektion des Musters auf eine
planare Oberfläche legt man die Map mit Hilfe eines Vektors V0 und den beiden Einheitsvektoren S und T fest. V0 gibt hierbei die Lage des Ursprungs
V=Vi - V0 Der Vektor V beschreibt die Lage eines
Die Abbildungsfunktion lautet: u=V*S/k mit (V*S=|V|*|S|*cos(alpha)) v=V*T/k mit (V*T=|V|*|T|*cos(beta)) wobei k ein Skalierungsfaktor für das
|
Texture-Mapping auf einen Zylinder |
Allgemeine Abbildungsfunktion:
;x,y,z sind die Koord. der Objektpunkte | |
;u,v sind die Texturkoordinaten im Texturraum |
Jeder Punkt auf der Oberfläche des
Zylinders wird durch : (r*cos(),r*sin(),h*z) mit 02* und 0z1 repräsentiert. Die Abbildung der
(u,v) = (/2 ,z) wobei u,v im Bereich [0,1] liegt. Nun kann jedem Punkt auf der
u = /2II v = z
|
Texture-Mapping auf eine Sphäre |
Allgemeine Abbildungsfunktion:
;x,y,z sind die Koord. der Objektpunkte | |
;u,v sind die Texturkoordinaten im Texturraum |
Für das sphärische Mapping Modell
gilt die Funktion: (u,v) = (r*cos()*sin(),r*sin()*sin(),r*cos()) wobei 0 /2 und /4 /2 liegt Die Abbildung der Textur in Abhängigkeit
(u,v) = (/(/2) , ((/2) - )/(/4)) wobei u,v im Bereich [0,1] liegen Mit dieser Abbildungsfunktion kann jedem
u=/(/2 ) v=((/2)-)/(/4) |
1.2. Two Stage Mapping - Zwei-Phasen-Texturprojektion |
Beim "two-stage mapping" erfolgt der
Mapping-Prozeß durch das sogenannte "S-mapping" und das
"O-mapping".
Durch das "S-mapping" wird zunächst die
2D Texture-Map auf eine einfache 3D Form
aufgebracht (z.B.: Sphäre,Zylinder).
Dies kann mit den oben beschriebenen einfachen
Methoden
erreicht werden.
Anschließend folgt das "O-mapping". Mit
dieser Methode wird die Textur vom Hilfsobjekt auf die
Oberfläche des eigentlichen Objekts abgebildet.
Es existieren vier "O-mapping"-Arten:
Bei diesem Verfahren verwendet man den
Dafür wird die Oberflächennormale N in
Nachdem eine Textur auf das Hilfsobjekt
Durch die Wahl verschiedener Punkte (x,y,z),
|
Hierbei legt man eine Gerade vom Mittelpunkt
Nach der Projektion der Textur auf das
|
Von einem beliebigen Punkt
auf der
Eine Gerade in Richtung N schneidet die
Durch die Verwendung von weiteren Punkten auf
|
1.3 Texture Mapping während Modellierung |
Die Bananen im nebenstehenden
Bild wurden
zuerst als einfache zylinderförmige Polyeder modelliert und mit einer Textur versehen. Anschließend werden sie in ihre endgültige natürliche Form gebogen. In dem unteren Beispiel werden die beiden Enden des Zylinder in einem Punkt zusammengeführt. Dabei wird die aufgebrachte Textur zu einem Teil der Objektdaten und gelangt so unverändert durch den Modelliervorgang. |
|
1.4 Reverse Projection |
Eine andere Methode, mit der man eine
Textur abbilden kann, ist der "Reverse Projection" Algorithmus. Für diese Technik sind am besten symmetrische Objekte geeignet (z.B. Ente), da man sie nur auf eine Seite des Objekts abbilden muß und die andere Seite durch eine Spiegelung an der Symmetrieebene erzeugen kann. Bei dem Beispiel auf der rechten Seite wurde ein Kasten (Bounding Box) gewählt, der das Objekt vollständig umgibt. Zwei Koordinaten und (Xr,Yr,Zr) durch die der Kasten beschrieben wird, werden mit den Texturkoordinaten gleichgesetzt. Nun wird durch eine Projektion, unter
Wie man sehen kann, wird die Textur
|
|
1.5 Mapping polygon interior points |
Planare Oberflächen können mit der
inversen Transformation vom Bildraum in den Textrraum linear abgebildet werden. Zuerst müssen die Transformationen für die drei Eckpunkte des Oberflächenelements berechnet werden. Sie bilden die Basis für ein baryzentrisches Koordinatensystem für das Oberflächenelement. Die baryzentrischen Koordinaten eines Oberflächenpunktes sind die Verhältnisse, mit denen die Transformation der Eckpunkte in die Transformation für eingehen.
Die Berechnung der Transformation
Der Algorithmus kann so inkrementell
Der einfachste Weg, um Texturkoordinaten
|
|
1.6 Die Abbildung unter Verwendung einer Bereichsunterteilung |
Cutmull entwickelte den ersten Algorithmus in der Computergrafik,
der eine Textur werwendete.
Hierbei konnte ein durch Parameter beschriebenes Objekt mit Textur versehen werden. Während eine Fläche des Objekts im Objektraum unterteilt wird, wird auch im Texturraum eine Textur auf die gleiche Weise unterteilt. Dies wird solange gemacht, bis durch die Unterteilung ein einziges Pixel überdeckt wird. Wenn dies der Fall ist, können die benötigten Pixelwerte aus der Bereichsunterteilung im Texturraum an die selbe Stelle der Unterteilung im Objektraum übergeben werden. Die Intensität der Pixelwerte im Texturraum wird durch den Durchschnittswert der überdeckten Fläche bestimmt. |
1.7 Texture Mapping und Anti-Aliasing |
|
Beim Aufbringen von Texturen enstehen oft
Aliasing-Effekte. Wenn einzelnen Pixel im Bildraum mehrere Pixel im Musterraum zugeordnet werden(Bild oben) oder nicht alle Informationen des Musterraumes genutzt werden (Bild unten), treten Diskretisierungs- fehler (aliasing) auf. Diese Aliasing-Effekte führen zu deutlichen Unstimmigkeiten auf Rasterbildern. Diese Effekte kommen dadurch zustande, weil die Projektion eines Pixels im Bildraum mehrere Texel des Texturraums überdeckt, jedoch nur ein Texel als Repräsentrant für das Pixel genommen werden kann. Beispiel: Ein vom Blickpunkt weit entferntes
Im unteren Fall kann ein Bereichsunterteilungs-
Beim Mip-Mapping wird die Textur für
Die Summed-Area-Table-Methode ist eine
|
1.8 Solid Texture Mapping |
Soll ein Objekt aus einem bestimmten Material
(z. B. Holz, Marmor etc.)sein, sind normale mapping-Methoden nicht ausreichend. Um es realistisch wirken zu lassen muß zum Beispiel bei Holz die Maserung der Flächen zueinander passen. Hat die Vorderseite eine Quer- maserung, so können die Seitenflächen nur längs gemasert sein. Die Musterung muß also dreidimensional modelliert werden. Daür werden verschiedene Texturen benötigt. Die Textur der Oberfläche ist somit Raumabhängig, was der realen Erfahrung entspricht: Schnitzt man aus einem Holzobjekt ein Stück heraus, so hat die neu entstandene Fläche nicht die gleiche Maserung wie die vorher vorhandene Fläche. Aufgrund des höheren Speicheraufwandes von Musterfeldern werden für diese 3D-Texturen prozedural definierte Muster verwendet. Bei marmorierten Objekten könnte man z.B. auf Fraktal-Muster zurückgreifen. |
1.9 View-dependent mapping techniques |
Bei dieser Technik wird die Textur unter Verwendung
von Reflexionsstrahlen abgebildet, die vom Blickpunkt des Betrachters ausgehehen. Hierfür wird für jede der 4 Pixelecken ein eigener Reflexionsstrahl benötigt. Diese Strahlen werden vom Ausgangspunkt aus durch die Normalen in den 4 Eckpunkten des Pixels von der Oberfläche auf die Textur-map projiziert. Für die überdeckte Fläche der Textur wird nun eine Farbe errechnet, die an die markierte Objektoberfläche weitergegeben wird. Eine andere Möglichkeit ist die Verwendung des mip-mapping Algorithmus, der die Textur für verschieden Größen vorberechnet. Der überdeckte Bereich, der auf einer der mip-maps etwa ein Texel ausmacht, wird an die markierte Oberfläche übergeben. Die zweite Möglichkeit ist von besserer Qualität, da sie Aliasing-Effekte verhindert. Nachteil ist der hohe Speicherverbrauch der durch die Verwendung des mip-mapping Algorithmus ensteht. Die nachfolgenden 3 mapping Algorithmen gehören auch
|
1.10 Chrome/reflection mapping |
Diese Technik erlaubt ein willkürliches Muster aus dem
zweidimensionalen Texturraum (chrome map) auf eine reflektierende Oberfläche abzubilden. Das Besondere dabei ist die Verwendung von zwei verschiedenen Chrome-Texturen für die Oberfläche des Objekts (unteres Bild). Für die Abbildung der Textur kann die oben beschriebene two-stage-mapping Methode benutzt werden. Für die Tasten des Saxophons wurde die graue map(rechts) und für den Körper die linke map benutzt. Die richtige Darstellung hängt von der Oberflächenbeschaffenheit des Objekts ab, die bei den meisten hellspiegelnden Objekten in Wirklichkeit rauh ist. Daraus folgt dann eine undeutliche Abbildung der Umgebung. Um die Fehler bei der Darstellung zu kaschieren, wird die Texture- map eingetrübt. Dieser Effekt kann bei sehr vielen Chrome-mapping Abbildungen beobachtet werden. Im Unterschied zu den vorigen texture-maping
|
|
1.11 Refraction mapping |
|
|
1.12 Environment mapping |
|
Environment-Mapping erlaubt die Integration
einer komplexen Umgebung in die realistische Bildgenerierung, ohne daß die Umgebung explizit modelliert werden muß. Zuerst wird das Objekt von einem drei-
Eine Möglichkeit, solche Verzerrungen zu
Eine hochwertige environment-mapping
Die Spiegelungen auf der Teekanne in Bild 6a
Man kann die Teekanne natürlich auch auf
Beispiel: (Bild 4b)
u = x + 0,5 ;u wächst
in Richtung
v = -z + 0,5 ;v steigt in
Richtung
|
2. Bump Mapping |
Wenn auf ein Objekt nicht nur ein farbiges/buntes Muster
projiziert werden soll, sondern der Oberfläche auch eine Struktur 'aufgeprägt' werden soll, kommt das bump-mapping zum Einsatz. Hierbei werden mit Hilfe von Störvektoren der glatten Oberfläche andere Reflexionseigenschaften verliehen, aus denen dann bei der Beleuchtung des Objekts eine Oberflächenstruktur ensteht, da die Berechnung der Helligkeit eines Punkts von der Oberflächennormale abhängt. Bump-mapping ist deshalb hervorragend geeignet, um eine Rinde von einem Baum oder ein faltiges Stück Leder zu simulieren. Problem dabei sind die Ränder der Objekt- Silhouette. Sie erscheinen glatt, da die Modellierung die Oberflächenstruktur nicht wirklich verändert. Durch die Normalenperturbation sollten daher keine allzu zerklüfteten Strukturen beschrieben werden. Bei der Erzeugung muß darauf geachtet werden, daß die
Die Normale in einem Punkt O auf der Oberfläche(Bild 2a)
Deshalb werden die beiden Vektoren
und
1. Beispiel:
|
In Bild (1a - 1d) wird der Vorgang aus eindimensionaler Sichtweise
erläutert. Die Funktion
O'(u) von Bild 1c ensteht durch die Addition der Ableitung von B(u,v) aus Bild 1b mit der Funktion O(u,v) aus Bild 1a. Die daraus folgende Funktion lautet: .
durch die bump map Funktion im Vergleich zur räumlichen Ausdehnung klein ist). Die Vektoren N' zur neuen Oberfläche lauten:
Der erste Term der Funktion ist die Normale zur Oberfläche und
der letzte Term ist gleich
oder Der neue abgelenkte Vektor ist N' = N + D Eine bump-map ist also ein Feld mit Verschiebungswerten. Mit jedem Wert
kann man eine
|
2. Beispiel:
Bild 3a zeigt eine Anwendung des bump-mapping Algorithmus.Unter Verwendung der bump-map(Bild 3b) wird eine unregelmäßig aufgerauhte Oberflächenstruktur erzeugt. Durch die Schattierung wird eine für das Auge realistisch wirkendeDarstellung erzeugt. |
Anhang: Literaturverzeichnis |