|
Surface Mapping con 'uv_mapping'
Come adattare motivi (patterns) a superfici.
Motivi processurali (processural patters) normalmente sono definiti in 3D nel spazzio, ma spesso abbiamo
motivi per testuri definito solo in 2D su un piano. Questi motivi solitamente non vanno bene con gli superfici 3D di solidi.
I motivi di checker, hexagon, square, triangle, tiling e pavement sono definito nel piano xz. Questi motivi
devono essere girati con 'rotate<-90,0,0> per allineare i motivi con il piano xy.
I motivi di brick e image_map sono gia definito nel piano xy.
'uv_mapping' è un metodo per adattare questi motivi con avvolgere i motivi intorno a un oggetto.
I punti di un motivo 2D sono descritti con vettori 2D, uv-vettori, con cosiddetti uv-coordinati (u,v).
I coordinati u vanno da 0 a 1 (La larghezza del motivo ou del'immagine), i coordinati v vanno verso l’alto
da 0 a 1 (l'altezza del motivo ou del'immagine).
Surface mapping con 'uv_mapping' al momento attuale è definito in POV-Ray per gli oggetti seguenti:
- box : 'box mapping' o 'cube mapping' come con 'Sky_Box' e cubemaps.
- sphere : cosiddetto 'spherical mapping' come con 'Sky_Domes' e skymaps.
- lathe, sor: con un spherical mapping modificato. Qui: u (0...1) avvolge intorni al asse y,
la coordinata collegato ai punti di controllo degli oggetti (0..1).
- mesh, mesh2: Le coordinate uv sono definiti con ogni vertice e interpolati fra questi.
- bicubic_patch: Le coordinate uv si basano sulle coordinate parametriche del patch, s'estendono con i punti di controllo.
- parametric: la 'map' si prende dai confini dello spazio uv, dove la superficie parametriche deve essere calcolata.
- torus : la 'map' si prende della area <0,0><1,1>
la coordinate u si avvolge intorno con il raggio maggiore, la coordinata v intorno con il raggio minore.
La sintassi generale per 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 for box
Lo schema di mapping per box è dimostrato con le due immagini seguenti:
|
Cube Mapping schema in coordinati uv
|
Wrapping di un motivo con Cube Mapping
|
UV_mapping con box con un motivo nel piano xz
'tiling' con la larghezza di base di 1 unitá:
Il motivo deve essere ridotto con 1/4 per avere la stessa scale come sul piano xz.
Esempio:
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 con box
|
UV_mapping con box con lunghezza, larghezza et/o altezza differenti
Un 'tiling' con la larghezza di base di 1 unitá:
Il motivo deve essere ridotto inverse ai lati del cuboido!
Esempio:
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 su un box
|
uv_mapping con sphere
Un motivo nel piano xz 'mapped' su una sfera:
|
Esempio:
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 ------------------------- |
E con un color_map più vivace:
#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 ------------------------- |
Lo stesso effetto con 'warped 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 con sphere
uv_mapping con sphere
warped tiling con sphere
Più su 'warp' q.v. qui:Mapping con Warps
|
uv_mapping con torus
A tiling pattern in the xz plane mapped on a torus:
|
Esempio:
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 con torus
uv_mapping con torus e 'frequency 10'
|
|