Home
- POV-Ray Tutorial
Oberflächengestaltung
- Farben und Texturen
Inhalt
texture Syntax
Vorgefertigtes
Farben Do-it-Yourself
Muster
Muster Listen
- Reguläre Muster
- Random Muster
- Fractal Muster
- Besondere Muster
Warps
- warp mapping
>uv_mapping
Mapping
Überlagerungen
Eigene Texturen
|
|
Surface Mapping mittels 'uv_mapping'
Adaptierung von Mustern an Oberflächen
Prozessurale Muster sind normalerweise in 3D im gesamten Raum definiert, aber oft gibt es Muster für
Texturen, welche nur in 2D in einer Ebene definiert sind. Derartige Muster passen meist nicht besonders gut
auf 3D Oberflächen von gerundeten Körpern.
Die Muster von checker, hexagon, square, triangle, tiling und pavement sind in der xz-Ebene definiert.
Diese Muster muß man mittels 'rotate<-90,0,0> drehen damit sie in der xy-Ebene ausgerichtet sind.
Die Muster von brick und image_map sind dagegen bereits in der xy-Ebene definiert.
'uv_mapping' ist eine Methode um solche Muster anzupassen indem das Muster um das Object gewickelt wird.
Die Punkte eines 2D-Musters beschreibt man durch 2D-Vektoren, den uv-Vektoren, in sogenannten uv-Koordinaten (u,v).
Die u-Koordinaten reicht von 0 bis 1 (die Breite des Musters oder Bildes ), die v-Koordinaten zählen aufwärts von
0 bis 1 (die Höhe des Musters oder Bildes).
Surface mapping durch 'uv_mapping' ist gegenwärtig in POV-Ray definiert für die folgenden Objekte:
- box : ein 'box mapping' oder 'cube mapping' wie gezeigt bei der 'Sky_Box' mit Cube-Maps.
- sphere : sogenanntes 'spherical mapping' wie bei 'Sky_Domes' mit Sky-Maps.
- lathe, sor: mit einem modifizierten 'spherical mapping'. Hier: u (0...1) wickelt sich um die y-Achse,
v Koordinate verbunden mit den Kontrollpunkten des Objekts von (0..1).
- mesh, mesh2: UV Koordinaten sind für jeden Scheitel (vertex) definiert und interpoliert dazwischen.
- bicubic_patch: UV Koordinaten basieren auf den parametrischen Koordinaten des Patches,
und werden mit den Kontrollpunkten gestreckt.
- parametric: Die Map innerhalb der Grenzen des uv-Raumes, innerhalb deren das Parametric-Surface berechnet werden muß.
- torus : Die map definiert in dem Bereich <0,0><1,1>
Die u-Koordinate kreist mit den Major-Radius, die v-Koordinate mit dem Minor-Radius.
Allgemeine Syntax für uv_mapping:
texture {
uv_mapping pigment{PIGMENT_BODY} | pigment{uv_mapping PIGMENT_BODY}
uv_mapping normal {NORMAL_BODY } | normal {uv_mapping NORMAL_BODY }
uv_mapping texture{TEXTURE_BODY} | texture{uv_mapping TEXTURE_BODY)
} |
|
'uv_mapping' für einen Quader (box)
Das Mapping-Schema für eine 'box' zeigen die folgenden 2 Abbildungen:
|
Cube-Mapping-Schema in uv-Koordinaten
|
Umwicklung des Musters beim Cube-Mapping
|
UV_mapping auf eine 'box' mit einem Muster in der xz-Ebene
Kachelung mit der Grundlänge = 1 Einheit:
Das Muster muß um 1/4 verkleinert werden um dieselbe Größe wie auf der xz-Ebene zu erhalten.
Beispiel:
box{ <0,0,0>,<1.6,0.5,1>
texture { uv_mapping
pigment{
tiling 6 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
scale 0.10/4
rotate<-90,0,0>
scale<1/1.6,2,1>
} // end pigment
finish { phong 1}
} // end of texture
translate<0,0.0,0>
} // end of box ------------------------ |
|
uv_mapping auf einer 'box'
|
UV_mapping auf einer 'box', wenn Länge, Breite u. Höhe verschieden lang sind.
Kachelung mit der Grundlänge = 1 Einheit:
Das Muster muß invers zu den Längen der Seiten des Quaders skaliert werden!
Beispiel:
box{ <0,0,0>,<1.6,0.5,1>
texture { uv_mapping
pigment{
tiling 6 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
scale 0.10/4
rotate<-90,0,0>
scale<1/1.6,1/0.5,1>
} // end pigment
finish { phong 1}
} // end of texture
translate<0,0.0,0>
} // end of box ------------------------ |
|
uv_mapping on a box
|
'uv_mapping' für eine Kugel (sphere)
Ein Muster definiert in der xz-Ebene gemappt auf eine 'sphere':
|
Beispiel:
sphere{ <0,0,0>, 0.75
texture { uv_mapping
pigment{
tiling 6 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
scale 0.025
rotate<-90,0,0>
} // end pigment
finish { phong 0.1}
} // end of texture
translate<0.5,0.5,0.5>
} // end of sphere ------------------------- |
Und mit einer farbenfroheren color_map:
#declare Pigment_1 =
pigment{
tiling 3 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 0.5 color rgb<1,0,0>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
scale 0.075
rotate<-90,0,0>
} // end pigment
// -----------------------------------------
sphere{ <0,0,0>, 0.75
texture {
pigment{ uv_mapping Pigment_1 }
normal { uv_mapping
pigment_pattern{ Pigment_1 }
0.25} // end normal
finish { phong 0.1}
} // end of texture
translate<0.5,0.5,0.5>
} // end of sphere ------------------------- |
Derselbe Effekt mit mittels 'warp' ungewickeltes 'tiling':
#declare Pigment_1 =
pigment{
tiling 6 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 0.5 color rgb<1,0,0>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
scale 0.075
rotate<-90,0,0>
warp{ spherical
orientation <0,0,1>
dist_exp 0
} // end of warp
} // end pigment
//------------------------------------------
sphere{ <0,0,0>, 0.75
texture { // no uv_mapping !
pigment{ Pigment_1 } // end pigment
normal{
pigment_pattern{ Pigment_1 }
0.5} // end normal
finish { phong 0.1}
} // end of texture
translate<0.5,0.5,0.5>
} // end of sphere ------------------------- |
|
'uv_mapping' auf einer 'sphere'
'uv_mapping' auf einer 'sphere'
Umwicklung eines gekachelten Musters (tiling)
mittels 'warp' um eine Kugel (sphere)
Für mehr über 'warp' siehe hier:Mapping mit Warps
|
'uv_mapping' für einen Ring (torus)
Ein Kachel-Muster in der xz-Ebene gemappt auf einen 'torus':
|
Beispiel:
sphere{ <0,0,0>, 0.75
texture { uv_mapping
pigment{
tiling 6 // 1~24 Pattern_Number
color_map{
[ 0.0 color rgb<1,1,1>]
[ 0.5 color rgb<1,0,0>]
[ 1.0 color rgb<0,0,0>]
} // end color_map
rotate<-90,0,0>
//frequency 10
scale<0.05,0.2,1>*0.25
} // end pigment
finish { phong 0.1}
} // end of texture
translate<0.5,0.5,0.5>
} // end of torus ------------------------- |
|
uv_mapping auf einen torus
uv_mapping auf einen torus 'frequency 10'
|
|
|