//Dependencias #include "colors.inc" //Iluminação light_source { <15, 15, -15> color rgb <1, 1, 1> } light_source { <10, 10, -10> color rgb <1, 1, 1> } // Observador camera { location <13,6,17> right -1.00*x // Largura RELATIVA da imagem. up 0.50*y // Altura RELATIVA da imagem. sky y // Qual direção é "para cima"? look_at <0, 0, 0> } //Fundo background{ color rgb < 1, 1, 1 > } //Cores #declare cor_metalico = <0.4, 0.31, 0.25>; #declare cor_cristal = <0.98, 0.98, 0.98, 0.9>; #declare amarelo = texture { pigment { color rgb < 1.00, 0.80, 0.10 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } //Texturas #declare tx_metalico = texture { pigment { rgb cor_metalico } finish { ambient 0.05 diffuse 0.05 reflection cor_metalico specular 0.20 roughness 0.05 } } #declare tx_cristal = texture { finish { ambient 0 diffuse 0 reflection 0.5 refraction 0.85 ior 1.5 phong 0.3 phong_size 60 specular 1 roughness 0.001 } pigment { color rgbf cor_cristal filter 1} } /*********************Auxiliar******************/ #declare eixos = union { // x axis cylinder { <-50, 0, 0>, <50, 0, 0>, 0.1 pigment { color rgb <1, 0, 0> } } // y axis cylinder { <0, -50, 0>, <0, 50, 0>, 0.1 pigment { color rgb <0, 1, 0> } } //z axis cylinder { <0, 0, -50>, <0, 0, 50>, 0.1 pigment { color rgb <0, 0, 1> } } } /***************************************/ //Cenário/////////////////////////////// //Angulos #declare a1 = 100; #declare a2 = 45; #declare a3 = 55; //Computando os angulos #declare tt = clock; #if (tt < 0.3) #declare angulo_braco = tt*a1; #declare angulo_antebraco = 0; #declare angulo_pegada = 0; #declare angulo_levantada = 0; #else #if (tt < 0.7) #declare angulo_braco = 0.3*a1; #declare angulo_antebraco = a1 + (a2 - a1)/(0.4) + (tt - 0.3); #declare angulo_pegada = 0; #declare angulo_levantada = 0; #else #if (tt < 0.9) #declare angulo_braco = 0.3*a1; #declare angulo_antebraco = a1 + (a2 - a1)/(0.4) + (0.4); #declare angulo_pegada = a2 + (a3 - a2)/(0.2) + (tt - 0.7); #declare angulo_levantada = 0; #else #declare angulo_braco = 0.3*a1; #declare angulo_antebraco = a1 + (a2 - a1)/(0.4) + (0.4); #declare angulo_pegada = a2 + (a3 - a2)/(0.2) + (0.2); #declare angulo_levantada = tt*40; #end #end #end //Um dede que aponta para o céu, ou seja, o eixo y #declare dedo = object { cylinder {<0,0,0>, <0,0.3,0>, 0.05} } //Quatro dedos, o original mais outros tres rotacionados em 45 graus #declare dedos = union { object {dedo rotate x*90*clock translate <0, 0.51, 0>} object {dedo translate <0, 0.51, 0> rotate z*-45} object {dedo rotate x*90*clock translate <0, 0.51, 0> rotate z*-135} object {dedo translate <0, 0.51, 0> rotate z*-180} texture {amarelo} //scale <3,3,3> } //A mão é uma esfera mais os dedos #declare mao = union { object { sphere { <0,0,0>, 0.5} texture {tx_metalico} //scale <3,3,3> } object {dedos} } //O antebraco eh um cilindro com a mao #declare antebraco = #declare tt = clock; union { cylinder { <0,0,0>, <4,0,0>,0.5} object { mao translate <4.5,0,0>} pigment{Green} } // O braco eh outro cilindro com o antebraco #declare braco = union { cylinder { <0,0,0> <0,0,4>, 0.5} object { antebraco rotate angulo_antebraco*z rotate angulo_pegada*x translate <0,0,4.5> } rotate angulo_braco*y pigment {Red} } /*O corpo do robo*/ #declare corpo = object { box {<1, -2, 2>, <-1, 2, -2>} pigment {Blue} } /*O pescoço*/ #declare pescoco = object { cylinder { <0,2,0>, <0,3,0>, 0.5 pigment {Gray} } } /*A cabeça com olhos*/ #declare cabeca = union { object { box {<0.7, 3, 1>, <-0.7, 4, -1>} pigment {Blue} } object { cylinder { <0.8, 3.5, 0.6>, <0, 3.5, 0.6>, 0.3 pigment {Red} } } object { cylinder { <0.8, 3.5, -0.6>, <0, 3.5, -0.6>, 0.3 pigment {Red} } } } /*O robo*/ #declare robo = union { object {corpo} object {pescoco} object {cabeca} object { braco rotate angulo_levantada*z translate <0,0,2> } //braco direito object { braco scale <1,1,-1> rotate angulo_levantada*z translate <0,0,-2> } //braco esquerdo } //Criminoso #declare criminoso = object { sphere {<0,0,0>,1.5} translate <4,-1,0> pigment {Magenta} rotate angulo_levantada*z } //////////////////////////////////////// // Aqui está a cena, finalmente: union { object { plane { // the floor y, 0 // along the x-z plane (y is the normal vector) pigment { color rgb <0, 0.5, 0.32> } } translate <0,-3,0 > } object {eixos} object {robo} object {criminoso} }