// Last edited on 2003-05-28 15:16:26 by stolfi // Exercicio 7 - MC930 // Nilton Volpato - RA 003243 // O primeiro passo #include "colors.inc" #include "textures.inc" #include "stones.inc" //---------------------------------------------- // Parâmetros da Animação #declare t1_max = 70; #declare t2_max = 70; #declare t3_max = 30; #declare t1_min = 30; #declare t3_min = 20; #switch (clock) #range (0,1/2) #declare clock1 = clock/(1/2); #break #range (1/2,1) #declare clock1 = (clock-1/2)/(1/2); #break #end #switch (clock1) // ------------------------------------------- // [ 0 __ 1/4 ] #range (0, 1/4) #declare clk = clock1/(1/4); #declare t1_dir = t1_max*clk; #declare t2_dir = t2_max*clk; #declare t3_dir = t3_max*clk; #declare t1_esq = -t1_min*clk; #declare t2_esq = 0; #declare t3_esq = t3_min*clk; #break // ------------------------------------------- // [ 1/4 __ 1/2 ] #range (1/4, 1/2) #declare clk = (clock1-1/4)/(1/4); #declare t1_dir = t1_max - t1_max*clk; #declare t2_dir = t2_max - t2_max*clk; #declare t3_dir = t3_max - t3_max*clk; #declare t1_esq = -t1_min+t1_min*clk; #declare t2_esq = 0; #declare t3_esq = t3_min-t3_min*clk;; #break // ------------------------------------------- // [ 1/2 __ 3/4 ] #range (1/2, 3/4) #declare clk = (clock1-1/2)/(1/4); #declare t1_dir = -t1_min*clk; #declare t2_dir = 0; #declare t3_dir = t3_min*clk; #declare t1_esq = t1_max*clk; #declare t2_esq = t2_max*clk; #declare t3_esq = t3_max*clk; #break // ------------------------------------------- // [ 3/4 __ 1 ] #range (3/4, 1) #declare clk = (clock1-3/4)/(1/4); #declare t1_dir = -t1_min+t1_min*clk; #declare t2_dir = 0; #declare t3_dir = t3_min-t3_min*clk; #declare t1_esq = t1_max - t1_max*clk; #declare t2_esq = t2_max - t2_max*clk; #declare t3_esq = t3_max - t3_max*clk; #break #else #error "Nao deveria chegar aqui!" #end //---------------------------------------------- // Luzes, Câmeras, ... #background { color rgb <1.00, 0.70, 0.50> } light_source { 10*< 0.00, 20.00, -30.00 > color rgb 1.1*< 1, 1, 1 > rotate <0,30,0> } light_source { 10*< 0.00, 20.00, -30.00 > color rgb 0.9*< 1, 1, 1 > rotate <0,160,0> } camera { location 0.85*<-40,5,-20> right <1,0,0> up <0,1,0> sky y look_at <0,2.5,0> } //---------------------------------------------- // Cores e Texturas // textura metalica para o macaco robo #declare textura_pelo = texture { pigment { Brown } finish { Metallic_Finish } // Diminui um pouco a reflexao. O metal do robo nao esta muito polido. finish { reflection .15 } } #declare textura_olho = texture { pigment { color White } } //---------------------------------------------- // Partes do Macaco Mecânico #declare raio_cabeca = 9; #declare cabeca = sphere { 0, raio_cabeca texture { textura_pelo } } #declare raio_orelha = 3; #declare orelha_dir = difference { sphere { 0, raio_orelha scale <1,1,.2> } sphere { 0, raio_orelha/2 scale <2,2,.2> translate <0,0,-.2> //pigment { color Yellow } } texture { textura_pelo } } #declare raio_olho = 1; #declare olho = union { sphere { 0,raio_olho texture { textura_olho } } sphere { 0, raio_olho/3 translate <0,0,-raio_olho> texture { pigment { color Black } } } } #declare boca = sphere { 0, 1 scale <4, 1, 1> texture { pigment { color Red } } } #declare corpo = sphere { 0, 8/2.5 scale <1,2,1> texture { textura_pelo } } #declare braco_dir = sphere { 0, 1 scale <4,1,1> rotate <0,-30,0> rotate <0,0,30> texture { textura_pelo } } #declare coxa_dir = sphere { 0, 1 scale <1,2.5,1> texture { textura_pelo } } #declare perna_dir = sphere { 0, 1 scale <1,2.5,1> texture { textura_pelo } } #declare pe_dir = sphere { 0, 1 scale <1,1,2> texture { textura_pelo } } #declare rabo = blob { threshold .5 sphere { 0, 2, 1 scale <1,1,3> texture { textura_pelo } } sphere { 0, 2, 1 scale <1,1,3> texture { textura_pelo } rotate <120,0,0> translate <0,2.5,4> } sphere { 0, 2, 1 scale <1,1,3> texture { textura_pelo } rotate <-20,0,0> translate <0,6.5,7.5> } rotate <0,0,60> } //---------------------------------------------- // Modelo Hierárquico do Macaco // perna<->pe #macro p_p(theta_p_p) union { object { perna_dir translate <-2,-11,0> } object { pe_dir translate <0,0,-1.2> rotate translate <-2,-14,0> } } #end // coxa<->perna-pe #macro c_pp(theta_c_pp, theta_p_p) union { object { coxa_dir translate <-2,-7,0> } object{ p_p(theta_p_p) translate <0,9,0> rotate <-theta_c_pp,0,0> translate <0,-9,0> } } #end // Perna // Corpo<->coxa-perna-pe #macro c_cpp(theta_c_cpp, theta_c_pp, theta_p_p) object { c_pp(theta_c_pp,theta_p_p) translate <0,5,0> rotate translate <0,-5,0> } #end #declare macaco_mecanico = union{ difference { union { object { cabeca } object { orelha_dir translate <-7,7,-3> } object { orelha_dir translate <-7,7,-3> scale <-1,1,1> } // vira orelha esquerda object { olho translate <-3,5,-7> } object { olho translate <-3,5,-7> scale <-1,1,1> } } object { boca translate <0,0,-9> } scale <.3,.3,.3> translate <0,8.5,0> } object { corpo } object { braco_dir translate <-4,3,-2 > } object { braco_dir translate <-4,3,-2> scale <-1,1,1> } // vira braco esquerdo // perna direita object { c_cpp(t1_dir,t2_dir,t3_dir) } // perna esquerda object { c_cpp(t1_esq,t2_esq,t3_esq) scale <-1,1,1> } object { rabo scale .7 translate <0,-1.5,4> } translate <0,5,0> } //---------------------------------------------- // Cena object { macaco_mecanico translate <0,0,7-14*clock> } plane { y, -10 texture { T_Grnt1 scale 10 } }