Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
Gestaltung von Oberflächen mit POV-Ray -
English English English
Italiano Italiano
Français français

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
 
                                           
mapping without uv_mapping

Surface mapping with uv_mapping
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:

  1. box :   ein 'box mapping' oder 'cube mapping' wie gezeigt bei der 'Sky_Box' mit Cube-Maps.
  2. sphere : sogenanntes 'spherical mapping' wie bei 'Sky_Domes' mit Sky-Maps.
  3. 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).
  4. mesh, mesh2: UV Koordinaten sind für jeden Scheitel (vertex) definiert und interpoliert dazwischen.
  5. bicubic_patch: UV Koordinaten basieren auf den parametrischen Koordinaten des Patches, und werden mit den Kontrollpunkten gestreckt.
  6. parametric: Die Map innerhalb der Grenzen des uv-Raumes, innerhalb deren das Parametric-Surface berechnet werden muß.
  7. 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:
Sample CubeMapping
Cube-Mapping-Schema in uv-Koordinaten
Sample CubeMappingWrapping
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 ------------------------



Sample uv_mapping on a 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 ------------------------


Sample uv_mapping on a 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 -------------------------

Sample uv_mapping on a sphere
'uv_mapping' auf einer 'sphere'

Sample uv_mapping on a sphere
'uv_mapping' auf einer 'sphere'








Sample uv_mapping on a 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 -------------------------

Sample uv_mapping on a torus
uv_mapping auf einen torus
Sample uv_mapping on a torus
uv_mapping auf einen torus 'frequency 10'

top
© Friedrich A. Lohmüller, 2010
http://www.f-lohmueller.de