Zur Homepage von Tobias Krause Zur Proseminar Homepage



 
Tobias Krause

 
 
Proseminar  im WS 1998/99: Schnelle 3D-Graphik

 
Thema 11 : 26.01.1999

 
Texture-Mapping und Bump-Mapping

 
(Texturen zur Erzeugung von Oberflächendetails)

 
 
 
Übersicht

 



 
 
 
Inhalt:

1. Texture Mapping

  1.1 Simple Mapping - Texture-Mapping auf einfache Körper
 


  1.2 Two Stage Mapping - Zwei-Phasen-Texturprojektion

  1.3 Texture Mapping während Modellierung

  1.4 Reverse Projection

  1.5 Mapping polygon interior points

  1.6 Mapping mit Hilfe einer Bereichsunterteilung

  1.7 Texture Mapping und Antialiasing

  1.8 Solid Texture Mapping

  1.9 View-dependent mapping techniques:

2. Bump Mapping
 
 
 





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
der Texture-Map an, und S bzw. T die 
Ausrichtung. 

V=Vi - V0

Der Vektor V beschreibt die Lage eines 
Punktes Pivom Ursprung 
der Texturmap aus auf der planaren 
Oberfläche.

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 
Muster darstellt.


 
 
 
 
 
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 
Textur unter Verwendung der 
Auslenkung des Körpers in x,y und 
z-Richtung ist ungeeignet. Besser ist 
es, den Umfang des Kreiszylinder in 
Bogenmaß anzugeben. Ein voller 
Umlauf entspricht 2. Darstellung der
Abbildungsfunktion(Bogenmaß):

(u,v) = (/2 ,z)

        wobei u,v im Bereich [0,1] liegt.

Nun kann jedem Punkt auf der 
Mantelfläche des Zylinders der 
zugehörige Texelwert aus dem 
Texturraums übergeben werden.

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
der x,y und z-Auslenkung des Körpers 
ist wiederum ungeeignet. Besser ist es, 
den Umfang der Sphäre in Bogenmaß 
anzugeben. Die Funktion in Bogenmaß heißt:

(u,v) = (/(/2) , ((/2) - )/(/4))

         wobei u,v im Bereich [0,1] liegen

Mit dieser Abbildungsfunktion kann jedem 
Punkt auf dem Sphärenabschnitt ein 
Texturwert zugeordnet werden.

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 allen 4 O-mapping-Methoden wird um das Zielobjekt ein einfaches 3D Hilfsobjekt erzeugt.
 
O-mapping unter Verwendung eines
Reflexionsstrahls:

Der vom "View point" ausgehende Strahl wird 
in dem Oberflächenpunkt (x,y,z) des Zielobjekts 
gespiegelt. Dieser reflektierte Strahl  schneidet 
die Hilfsfläche in dem Punkt 

Nachdem die Textur auf das Hilfsobjekt 
abgebildet wurde, kann der Farbwert im 
Schnittpunkt , an den 
Reflexionspunkt (x,y,z) auf der Zielfläche 
übertragen werden.

Durch die Richtungsänderung des einfallenden 
Strahls und der daraus resultierende Richtungs-
änderung des Reflexionsstrahls, wird jeder 
erreichbare Punkt auf der Zielfläche mit dem 
Wert des getroffenen Hilfspunkt eingefärbt.
 

O-mapping mit Hilfe der Normalen in 
einem Punkt auf dem Zielobjekt:

Bei diesem Verfahren verwendet man den
Schnittpunkt einer auf dem Zielobjekt 
senkrecht stehenden Geraden, die die
Hilfsoberfläche schneidet.

Dafür wird die Oberflächennormale N in 
einem Punkt (x,y,z) berechnet. Eine Gerade 
in Richtung N schneidet die Hilfsoberfläche 
in dem Punkt 

Nachdem eine Textur auf das Hilfsobjekt 
übertragen wurde, kann der Farbwert auf 
der Hilfsoberfläche im Punkt 
für den Punkt (x,y,z) auf der Zieloberfläche 
verwendet werden.

Durch die Wahl verschiedener Punkte (x,y,z), 
kann die Textur auf die Zieloberfläche 
aufgebracht werden.

Die Projektion einer Linie vom Mittel-
punkt des Objekts durch den Oberflächen-
punkt auf die Hilfsfläche.

Hierbei legt man eine Gerade vom Mittelpunkt 
(Xw,Yw,Zw) des Objekt aus in Richtung 
Hilfsfläche. Diese Gerade schneidet die 
Zielobefläche in Punkt (x,y,z) und die 
Hilfsoberfläche in Punkt 

Nach der Projektion der Textur auf das 
Hilfsobjekt, kann der Farbwert von 
für den Punkt (x,y,z) auf 
dem Zielobjekt verwendet werden. 

O-mapping mit Hilfe der Normalen in 
einem Punkt auf der Hilfsoberfläche

Von einem beliebigen Punkt  auf der 
Hilfsfläche wird die Normale N in Richtung 
Zielfläche berechnet. 

Eine Gerade in Richtung N schneidet die 
Zieloberfläche in einem Punkt (x,y,z). Nachdem 
die Textur auf das Hilfsobjekt projiziert wurde, 
kann der Farbwert in Punkt  an 
den Punkt (x,y,z) übertragen werden.

Durch die Verwendung von weiteren Punkten auf 
der Hilfsfläche wird das Zielobjekt mit der Textur 
vom Hilfsobjekt belegt. 
 


 
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 
  Verwendung einer der 
  Koordinatenebenen die Textur 
  abgebildet. In dem Beispiel wurde die 
  Y-Z Ebene verwendet. Die daraus 
   folgende einfache Abbildung lautet:

  Wie man sehen kann, wird die Textur 
  ohne Berücksichtigung der X-
  Koordinaten auf das Objekt  projiziert.


 
 
 
 
 
 
 
 
 
 
 
 
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 
gestaltet sich noch einfacher, wenn die 
Oberfläche aus Dreiecken besteht
(Bild unten). So lassen sich die 
Längenverhältnissen der Schnittpunkte
und   einer Abtastlinie mit zwei der 
Dreiecksseiten  und  umd
dem Abstand des Punktes  auf der
Abtastlinie zu diesen beiden 
Schnittpunkten berechnen. Es gilt:

Der Algorithmus kann so inkrementell 
fortgeführt werden.

Der einfachste Weg, um Texturkoordinaten 
auf ein  Polgon zu bringen, ist die geradlinige 
Anordnung in der Polygonebene. Man kann 
davon ausgehen, daß die Texturkoordinaten 
unabhängig von der Methode abgebildet
werden, die die Texturkoordinaten auf die 
Eckpunkte abgebildet hat.


 
 
 
 

 


 
 
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 
Objekt mit einem Schachbrettmuster. Wegen 
seiner Darstellungsgröße wird nur ein einziges 
Pixel im Bildraum überdeckt. Dieses Objekt 
wird dann entweder ganz weiß oder schwarz 
sein. Es tritt also ein sichtbarer Darstellungs-
fehler auf. Eine Lösung für den oberen Fall 
wäre eine Mittelwertberechnung, welche die 
Intensität aller überdeckten 'Pixel' im 
Musterraum berücksichtigt. Diese 
Berechnung kann entweder erst bei Bedarf 
oder in einem Vorverarbeitungsverfahren 
(Vorfilterung) erledigt werden.

Im unteren Fall kann ein Bereichsunterteilungs-
algorithmus (z.B. Quadtrees) Abhilfe schaffen. 
Dabei wird, ausgehend vom Objektraum, die 
Fläche parallel in den Bild- und den Muster-
raum transformiert. Die resultierenden Flächen
werden in beiden Räumen solange unterteilt, 
bis die Teilfläche im Bildraum nur noch ein 
Pixel (bzw. das Zentrum eines Pixels) 
überdeckt.

Beim Mip-Mapping wird die Textur für 
verschiedene Größen vorberechnet, wobei 
jeweils um den Faktor 2 verkleinert wird
(Bild 5b). Das letzte Bild besteht aus einem
Texel. Auf Grund der Größe des von einem
Pixel im Texturraum überdeckten Bereichs 
wird dann auf jene Textur zugegriffen, in der
der überdeckte Bereich etwa ein Texel 
ausmacht. In dem Bild 5a sieht man auf dem 
oberen Dreieck die Abbildung der 
Schachbrett-Textur ohne die Verwendung 
von "mip-mapping"(Der Pfeil deutet auf die
enstehenden Aliasing-Effekte hin). Für das 
untere Objekt wurden die vorberechneten 
Texturen (rechte Seite) verwendet.
 

Die Summed-Area-Table-Methode ist eine 
weitere Methode zur Vorfilterung. Es wird 
zunächst für alle möglichen (u,v)-Werte im 
Texturraum die Summe aller Texel im 
Rechteck (0,0) - (u,v) berechnet und 
abgespeichert. Benötigt man eine Summe 
eines beliebigen rechteckigen Bereichs aus 
dem Texturraum, so kann dieser aus den 
vorberechneten Summen mit nur vier 
Zugriffen und Additionen berechnet werden.
 


 
 
 
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
zur Klasse der "View-dependent mapping techniques"


 
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 
Algorithmen ist bei chrome-mapping die Abbildung der
(u,v) Koordinaten eine Funktion der Objektposition 
und nicht nur eine Funktion des Objekts. Das heißt, 
daß die reflexions-map immer an einem festen Punkt
bleibt. Wird das Objekt bewegt, so ändert sich die 
Textur auf dem Objekt. Deshalb wird die Chrome-
mapping-Technik auch in Animationen verwendet. 
 


 

 
 
1.11 Refraction mapping

 
 


 
 
Refraction mapping baut auf dem gleichen 
Gerüst auf wie der Chrome/Reflection
Algotithmus. Es gibt jedoch Unterschiede:
Es muß sichergestellt werden, daß die 
abgelenkten Strahlen die map treffen, da kein 
sphärisches Projektionsmodell benutzt wird, 
sondern nur einen ebene, zweidimensionale 
refraction map existiert. 

In dem Besipiel auf der linken Seite sieht man
zwei Strahlen, die vom Blickpunkt des 
Betrachters ausgehen und von der unruhigen 
Wasseroberfläche auf das darunterliegende 
Muster(Refraction map) gebrochen werden. 
Die von der Wasseroberfläche gespiegelten 
Strahlen treffen auf das Objekt. Nun können 
die Farwerte von den getroffenen Texel auf 
der Refrection map für die Objektpunkte 
verwendet werden. Der Effekt: Das Muster
der Reflection map erscheint auf dem Objekt,
als würde man es  durch eine unruhige
Wasseroberfläche sehen.

Unten sehen wir zwei Beispiele von "Refraction 
mapping". Auf der linken Seite wurden längs 
gerichtet Wellen und auf der rechten Seite
Kreiswellen benutzt.

Als Refraction map wurde der Farbstreifen auf
der linken Seite verwendet.


 
 
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-
 dimensionalen Hilsobjekt umgeben. Als 
 Hilfskörper eignet sich am besten ein Würfel 
 oder eine Kugel. Danach wird die Umgebung 
 auf die Hilfsoberfläche projieziert. Einfache 
 Reflexionsstrahlen werden vom Objekt-
 mittelpunkt zur umgebenden Oberfläche 
 verfolgt und der Schnittpunkt mit Objekt und 
 Hilfsoberfläche vermerkt. Das Besondere
 dabei ist, daß so eine Darstellung ensteht, in 
 der das Objekt den Mittelpunkt markiert und
 die Umgebung um das Objekt detailgetreu 
 angezeigt wird. Sehr wichtig ist  die Größe 
 des Objekts im Verhälnis zum Hilfsobjekt und
 die Entfernung(bzw. die Position) zur 
 environment-map, da die Projektion durch 
 einen einzigen Punkt im Inneren der 
 Oberfläche erzeugt wird und deshalb leicht 
 Verzerrungen entstehen.

 Eine Möglichkeit, solche Verzerrungen zu 
 verhindern, ist das Verwenden des ray-
 tracing Algorithmus bei Gegenständen, die 
 sich zu nahe an dem Objekt befinden. Auch 
 bei der Benutzung eines zu komplexen 
 Objekts sollte ray-tracing verwendet werden, 
 da environment mapping die Behandlung von 
 Objekten, die sich selbst spiegeln,  nicht 
 durchführen kann.

 Eine hochwertige environment-mapping 
 Technik ist die Projektion von der Oberfläche
 eines Würfels auf das Objekt. Auf den Seiten
 des Würfels befindet sich die Umgebung, die 
 in sechs verschiedenen mip-maps gespeichert
 wird und deshalb sechs Mal mehr 
 Informationen enthält,  als eine einfache map. 
 Der daraus resultierende Effekt ist eine 
 Darstellung der Umgebung, die deutlich 
 schärfer ist als ein Abbildungsvorgang mit 
 Hilfe einer Sphäre. Die Environment-map für
 diese Technik wird erzeugt, indem man die 
 Umgebung um das Objekt auf 6 
 verschiedenen Aufnahmen festhält, die alle 
 orthogonal zueinander aufgenommen wurden. 
 Dies kann mit einer Kamera erreicht werden, 
 die ein Blickfeld von pi/2 hat oder aus einer
 Modellszene konstruiert werden. 
 Verwendung fand diese Technik in der 
 animierten Sequenz des Spielfilms 
 "The Abyss" (Bild unten). Dabei  wurde die 
 Umgebung in ein sich bewegendes 
 transparentes Objekt reflektiert. Mit Hilfe 
 der Refraction- mapping Technik enstand 
die schimmernde Oberfläche.

 Die Spiegelungen auf der Teekanne in Bild 6a 
 wurde ebenfalls  mit dem environment-map 
 Algorithmus erzeugt. Verwendet wurde  eine 
 environment-map, die das Zimmer von der 
 Stelle aus zeigt, an der die Teekanne steht. Aus 
 den sechs verschiedenen Aufnahmen wird ein 
 Würfel gebildet, der die Kanne vollständig 
 umgibt. Vom Blickpunkt des Betrachters 
 werden nun Reflexionsstrahlen erzeugt, die auf 
 die Pixel der Teekanne treffen und von dort 
 durch den Reflexionsvektor auf die 
 umgebende Würfeloberfläche reflektiert 
 werden(Bild 4a). Beschreibung zu diesem 
 Verfahren unter:
 ("View dependent mapping techniques").

 Man kann die Teekanne natürlich auch auf 
 einer spiegelnden Oberfläche erzeugen, so 
 daß zusätzlich zur Reflexion auf der 
 Teekanne noch eine Spiegelung der Tee-
 kanne auf der Oberfläche ensteht. Zuerst 
 wird von der Teekanne eine Abbildung 
 erzeugt (das Objekt wird an der ebenen 
 Tischplatte gespiegelt). Nun wird auf die 
 gleiche Weise, wie oben beschrieben, die
 gespiegelte Teekanne von Reflexions-
 strahlen abgetastet. Der reflektierte Strahl 
 bildet den Vektor E2. Dieser Vektor trifft 
 die environment map in einem Punkt, von 
 dem aus der Farbwert an den Ausgangs-
 punkt des Vektors E2 auf dem 
 reflektierten Objekt übergeben wird. 
 Würden man den Vektor E2 an der 
 Tischplatte spiegeln, so würde er auf den 
 Vektor E1 fallen, der enstanden wäre, 
 wenn man den Reflexionsstrahl, der vom 
 Blickpunkt des Betrachters ausgeht zuerst 
 an der Tischplatte und danach an dem 
 eigentlichen Teekannenobjekt reflektiert 
 hätte. Das Bild 7a zeigt diesen Vorgang.

 Beispiel: (Bild 4b)
 Ein Punkt (x,-0.5,z) auf Face4 wird nach 
 folgender Gleichung in die (u,v) 
 Koordinaten eines Bildes transformiert.

 u = x  + 0,5       ;u wächst in Richtung 
                           positiver x-Achse an

 v = -z + 0,5       ;v steigt in Richtung 
                           negativer z-Achse an.


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
Störungen immer an den selben Stellen auftreten, sonst 
würde sich die Oberflächenstruktur ändern, wenn sich das
Objekt in einer animierten Sequenz befindet. Dies wird 
erreicht, indem das Ausmaß gespeichert wird, mit der die 
Normale in einem bestimmten Punkt ausgelenkt wird.

Die Normale in einem Punkt O auf der Oberfläche(Bild 2a)
wird durch das Vektorprodukt beschrieben. 
und  sind zwei Vektoren, die in der Tangentenebene
der Oberfläche liegen, jedoch nicht unbedingt rechtwinklig
zueinander sind.

Deshalb werden die beiden Vektoren  und 
benötigt (Bild 2b). Auch Sie liegen in der 
Tangentialebene, stehen jedoch senkrecht aufeinander. Mit
Ihnen kann der Störvektor  errechnet 
werden.  und  sind die partiellen Ableitungen der bump-
map B(u,v) an den Stellen u und v. Der Störungsvektor 
erzeugt aus dem Normalenvektor N den neuen "gestörten" 
Vektor  (Bild 2c). Wird das Objekt nun 
erneut beleuchtet, so ensteht eine neue Oberflächenstruktur,
da die Lichtstrahlen durch die veränderten Normalenvektoren
anders reflektiert werden.

1. Beispiel:
Java-Applet zum Bump-mapping Algorithmus
 

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:


Der Quotient beschreibt den normierten Normalenvektor
 
Die Gleichung kann nach u und v zerlegt werden:
Wenn B klein ist, kann der letzte Term ignoriert werden(das heißt, daß die Verschiebung 
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 
null (N x N = 0). Daraus folgt der Störvektor D:

oder 

siehe oben

Der neue abgelenkte Vektor ist  N' = N + D

Eine bump-map ist also ein Feld mit Verschiebungswerten. Mit jedem Wert kann man eine
geringfügige Verschiebung eines Punkts auf einer Fläche nach oben oder unten simulieren. 
Die Normalenauslenkungen können entweder explizit als eine Liste von Auslenkungen in 
u- und v-Richtung abgelegt werden oder prozedural als eine Funktion von u und v definiert 
werden. Letzteres eignet sich besonders dann, wenn durch die Textur einen unregelmäßge 
Oberflächenstruktur modelliert werden soll.

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