Muñeco de nieve realizado con Povray.

Muñeco de nieve realizado con Povray.

Es otro motivo navideño hecho el Povray bajo licencia GPL. Puede venir bien para tu colección de recursos en Povray. Se trata de un diseño sencillo y sin pretensiones y sin embargo tiene cierto trabajo para estar realizado sin la ayuda de ningún modelador.

A destacar la forma en que se han generado los botones dentro de un bucle, y el detalle de la bufanda que pese a no ser muy realista, si sugiere con claridad lo que se pretende. El realismo en cualquier manifestación artística no debe de ser un objetivo. Muchas veces se evoca de forma mas poderosa una idea sugiriéndola que detallándola.

La bufanda fue un reto, estuve pensando que es lo que podría usa para ella y al final me decanté por usar los donuts (toros) estirando la forma en el sentido del eje de rotación. El trozo de bufanda que cuelga es igualmente un trozo de un toro con el mismo radio que la gran bola que forma el cuerpo del muñeco. De esa forma sugiere una forma blanda que reposa sobre el cuerpo del muñeco.

No hay más que comentar en esta ocasión.

Felices fiestas a todos.

munieve.inc:

// munieve.inc
// (C) Antonio Castro Snurmacher
// Licencia GPL de GNU
#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"
#include "stones.inc"
#include "metals.inc"
#declare RadCuerpo= 4.5;
#declare RadCabeza= 2;
#declare RadBoton=.2;
#declare RadOjos=.35;
#declare RadIris=.1;
#declare Y_Cuerpo=2.5;
#declare Y_Cabeza=Y_Cuerpo+RadCuerpo+RadCabeza*.75;
#declare RadNariz=.3;
#declare LNariz=1.5;
#declare LCanyoPipa=1.2;
#declare RadCanyoPipa=.1;
#declare LCazoletaPipa=.5;
#declare RadCazoletaPipa1=.26;
#declare RadCazoletaPipa2=.3;
#declare RadSombrero1=1;
#declare RadSombrero2=1.2;
#declare LSombrero=1.5;
#declare RadAlaSombrero=1.6;
#declare TextuNieve = texture {
pigment {White}
finish{
ambient 0.6
diffuse 0.2
specular 0.4
reflection 0.1
roughness 1
phong .6
phong_size 1
}
}
#declare TextuNariz= texture{
pigment {color rgb <1, 0.8, 0.3>}
finish{
ambient 0.5
diffuse 0.3
phong .8
phong_size 20
}
}
#declare TextuBufanda= texture{
pigment {checker Red, Orange}
finish{
ambient 0.5
diffuse 0.5
}
scale .2
}
#declare TextuPipa= texture{
pigment {color rgb <.5, 0.5, 0.2>}
finish{
ambient 0.2
diffuse 0.7
phong .8
phong_size 20
}
}
#declare TextuSombrero= texture{
pigment {Black}
finish{
ambient 0.2
diffuse 0.9
reflection .8
specular 0.75
phong 1
phong_size 5
}
}
#declare Bufanda= object{
union{
object{
torus{ 6.2, .55}
translate <0,-1.4,0>
scale <.3,1,.3>
}
object{
intersection {
sphere {<0,0,0> RadCuerpo+0.15}
box {<0,RadCuerpo+1,-.8><5,RadCuerpo*.5,.8>}
}
translate <0,-6,0>
}
}
texture {TextuBufanda}
}
#declare Ojo = difference {
sphere {<0,0,-RadCabeza> RadOjos}
sphere {<0,0,-RadCabeza-RadOjos> RadIris}
}
#declare Nariz= object{
cone {<0,0,-RadCabeza> RadNariz,<0,0,-RadCabeza-LNariz> 0.1 }
texture { TextuNariz}
rotate <10,0,0>
}
#declare Pipa= object{
difference{
union{
cylinder {<0,0,LCanyoPipa*.5>, <0,0,-LCanyoPipa>,RadCanyoPipa }
cone {<0,-LCazoletaPipa*.1,-LCanyoPipa>, RadCazoletaPipa1, <0,LCazoletaPipa, -LCanyoPipa>,RadCazoletaPipa2 }
}
cone {<0,0 ,-LCanyoPipa>, RadCazoletaPipa1-.1, <0,LCazoletaPipa+0.5,-LCanyoPipa>,RadCazoletaPipa2-0.1 }
}
texture { TextuPipa }
rotate <0,-50,0>
translate <0,0,-RadCabeza>
rotate <-10,0,0>
}
#declare YR_Sombrero= RadCabeza*.85;
#declare Sombrero = object {
union{
cone{<0,YR_Sombrero,0>,RadSombrero1<0,YR_Sombrero+LSombrero,0>,RadSombrero2}
cylinder{<0,YR_Sombrero,0>,<0,YR_Sombrero+.1,0>, RadAlaSombrero}
}
texture {TextuSombrero}
rotate z*-20
}
#declare Cabeza = union {
object {Sombrero }
object {Bufanda}
object {Nariz }
object {Pipa }
object {
union {
sphere {<0,0,0> RadCabeza}
difference {Ojo rotate <25,20,0>}
difference {Ojo rotate <25,-20,0>}
}
texture {TextuNieve}
}
}
#declare Cuerpo= object{
union{
sphere {<0,0,0> RadCuerpo}
#declare Cont=-1.5;
#while (Cont<=9) object{ sphere {<0,0,-RadCuerpo> RadBoton}
rotate x*Cont*10
}
#declare Cont=Cont+1;
#end
}
texture {TextuNieve}
}
#declare Munieve= union{
object {Cuerpo translate <0,Y_Cuerpo,0> }
object {Cabeza translate <0,Y_Cabeza,0> }
}

demo_munieve.pov:
// demo_munieve.pov
// (C) Antonio Castro Snurmacher
// Licencia GPL de GNU
#include "munieve.inc"
#declare Luz=light_source { <30, 60, -40> color Gray50 }
#declare CameraUp= camera {
location <15, 20, -30>
look_at <0,5,0>
angle 37
// AspectRatio debe declararse en el '.ini'
// Su valor es el ancho/alto y normalmente valdrá 16/9 o 4/3
right AspectRatio*x
}
#declare EscalaSuelo=8;
#declare Suelo2= plane { y,0
texture {T_Stone21}
scale EscalaSuelo
}
Munieve
camera {CameraUp}
Luz
Suelo2