// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2003-05-29 02:58:24 by stolfi #include "colors.inc" #include "stones.inc" background{ color rgb < 0.70, 0.73, 0.85 > } #declare ctr = < 0.00, 0.00, -1.00 >; camera { location ctr + 0.7*< 3.00, -4.00, 1.00 > right y up z sky z look_at ctr } light_source { 50*< 2, 0, 1.5 > color rgb < 1.00, 1.00, 1.00 > } light_source { 50*< 0, -2, 1.5 > color rgb < 1.00, 1.00, 1.00 > } plane { z,-3 pigment { checker color rgb <1,1,1> color rgb <0.7,1.0,0.9> } } #declare raio = 2.000; #declare tinta_verde = texture { pigment { color rgb 2*< 0.00, 1.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_preta = texture { pigment { color rgb < 0.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_azul = texture { pigment { color rgb < 0.00, 0.00, 1.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_vermelha = texture { pigment { color rgb < 1.00, 0.00, 0.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tronco = intersection { cone {<0, 0, 0>, 1, <0, 0, -1.50>, 0.1} sphere {<0, 0, 0.3>, 0.9 scale <0,0,2>} } #declare cabeca = union { difference { blob { threshold 0.7 cylinder {<0,0,-0.3>,<0,0,0.3>, 0.5, 1} cylinder {<0,0,-0.7>,<0,0,-0.3>, 0.1, 1} cylinder {<0.1,0,-0.9>,<0.1,0,-0.7>, 1.5, 0.2} } cylinder {<-0.3,0.3,-0.2>, <-0.3,0-0.3,-0.2>, 0.1 } texture{tinta_vermelha} } cylinder {<-0.24,0.1, 0.1>, <0.2,0.1,0.1>, 0.07 texture{tinta_preta}} cylinder {<-0.24,-0.1, 0.1>, <0.2,-0.1,0.1>, 0.07 texture{tinta_preta}} scale 2 } #declare braco = union { blob { threshold 0.7 cylinder {<0,0,0>,<0,0,-1>, 0.3, 2} cylinder {<0,0,-1>,<0,1,-1>, 0.3, 2} texture{T_Stone10} } difference { torus {0.35, 0.1 texture{tinta_azul} rotate<0,0,90> translate <0,1.45,-1>} cylinder {<0.2, 1.75, -1>, <-0.2, 1.75, -1>, 0.2} } } #declare pcima = union { object { tronco texture{tinta_vermelha} translate <0,0,-0.8>} object {cabeca translate <0,0,0.5>} object {braco rotate <10,0,45> translate <0,0.75,-0.8>} object {braco rotate <10,0,135> translate <0, -0.75, -0.8> } } // ----dimensoes dos objetos #declare hcanela = 1; #declare rcanela = 0.2; #declare hcoxa = 1.3; #declare rcoxa = rcanela; #declare tetape1 = 0; #declare tetacanela1 = 0; #declare tetacoxa1 = 0; // ----angulos entre articulacoes - perna1 #if (clock < 0.25) #declare tetape1 = 0; #declare tetacanela1 = clock / 0.25 * 45; #declare tetacoxa1 = clock / 0.25 * 45; #else #if (clock < 0.5) #declare tetape1 = 0; #declare tetacanela1 = 45 - ((clock-0.25) / 0.25 * 45); #declare tetacoxa1 = 45 - ((clock-0.25) / 0.25 * 45); #else #if (clock < 0.75) #declare tetape1 = 0; #declare tetacanela1 = (clock-0.75) / 0.25 * 45; #declare tetacoxa1 = (clock-0.75) / 0.25 * 45; #else #declare tetape1 = 0; #declare tetacanela1 = 45 - ((clock-0.75) / 0.25 * 45); #declare tetacoxa1 = 45 - ((clock-0.75) / 0.25 * 45); #end #end #end // ----definicoes dos objetos - perna1 #declare canela1 = union { cylinder {<0, 0, hcanela>, <0, 0, 0>, rcanela} box {<-rcanela, -rcanela, -rcanela>, <3*rcanela, rcanela, 0> rotate <0, tetape1, 0>} } #declare coxa1 = union { cylinder {<0, 0, hcoxa>, <0, 0, 0>, rcoxa } object {canela1 translate <0,0, -hcanela> rotate <0, tetacanela1, 0>} } #declare perna1 = object { coxa1 translate <0, 0, -hcoxa> rotate <0, -tetacoxa1, 0> } // ----angulos entre articulacoes - perna2 #declare tetape2 = 30; #declare tetacanela2 = 20; #declare tetacoxa2 = -20; // ----definicoes dos objetos - perna2 #declare canela2 = union { cylinder {<0, 0, hcanela>, <0, 0, 0>, rcanela} box {<-rcanela, -rcanela, -rcanela>, <3*rcanela, rcanela, 0> rotate <0, tetape2, 0>} } #declare coxa2 = union { cylinder {<0, 0, hcoxa>, <0, 0, 0>, rcoxa } object {canela2 translate <0,0, -hcanela> rotate <0, tetacanela2, 0>} } #declare perna2 = object { coxa2 translate <0, 0, -hcoxa> rotate <0, tetacoxa2, 0> } // Aqui está a cena, finalmente: union { object { perna1 texture{tinta_vermelha} rotate <0,0,40>} }