background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" #declare tx = texture{ pigment{ color rgb < 0.5, 0, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #macro tronco() union{ cylinder{ < 0, 0, 0 >, < 0, 0, 5 >, 2 texture{ tx } } } #end #macro membro_ponta() #local mp = cylinder{ < 0, 0, 0 >, < 0, 0.7, 0 >, 0.7 texture{ tx } } union { object { mp } } #end #macro sub_membro_pequeno(b9) #local smp = cylinder{ < 0, 0, 0 >, < 0, 0, 3 >, 0.3 texture{ tx } } #local mp = membro_ponta(); union { object { smp } object { mp rotate b9*x translate <0,-0.3,3>} } #end #macro membro(b8, b9) #local sub_membro_grande = cylinder{ < 0, 0, 0 >, < 0, 0, 4 >, 0.3 texture{ tx } } #local smp = sub_membro_pequeno(b9); union { object { sub_membro_grande } object { smp rotate b8*x translate <0,0,4>} } #end #macro cabeca() #local cab = sphere{ < 0, 0, 0>, 1.5 texture{ tx } } union { object { cab } } #end #macro sub_pescoco(b1) #local pescoco = cylinder{ < 0, 0, 0 >, < 0, 0, 1.5 >, 0.6 texture{ tx } } #local cab = cabeca(); union { object { pescoco } object { cab rotate b1*x translate <0,0,3>} } #end #macro cab_pes(b1, b2) #local pescoco = cylinder{ < 0, 0, 0 >, < 0, 0, 2 >, 0.6 texture{ tx } } #local sp = sub_pescoco(b1); union { object { pescoco } object { sp rotate b2*x translate <0,0,2>} } #end #macro bicho_preguica(b1, b2, b3, b4, a4, b5, b6, b7, a7, b8, b9, b10, b11, b12, b13, a13, b14, b15) #local perna_1 = membro(b8, b9) #local perna_2 = membro(b11, b12) #local braco_1 = membro(b5, b6) #local braco_2 = membro(b14, b15) #local pescoco_e_cabeca = cab_pes(b1, b2) union{ object { tronco() } object { perna_1 rotate b7*y rotate a7*x translate <0,2,0.5>} object { perna_2 rotate b10*y rotate a10*x scale <-1, -1, 1> translate <0,-2,0.5> } object { braco_1 rotate b4*y rotate a4*x translate <0,2,4.5>} object { braco_2 rotate b13*y rotate a13*x scale <-1, -1, 1> translate <0,-2,4.5>} object { pescoco_e_cabeca rotate b3*y translate <0,0,5>} } #end #macro cena(tt) // pos inicial #local b1 = -90; #local b2 = 0; #local b3 = 15; #local b4 = 0; #local a4 = -100; #local b5 = -60; #local b6 = 90; #local b7 = 0; #local a7 = -100; #local b8 = -75; #local b9 = 90; #local b10 = 0; #local a10 = -90; #local b11 = -75; #local b12 = 90; #local b13 = 0; #local a13 = -90; #local b14 = -60; #local b15 = 90; // movimento #local func = sin(2 * pi * tt); #local dir_func = max(0, func); #local esq_func = max(0, -func); #local membro_ang = 25; #local sub_membro_ang = 55; #local membro_ponta_ang = -75; #local sub_pescoco_ang = 30; #local a4 = a4 + (dir_func * membro_ang); #local a7 = a7 + (dir_func * membro_ang); #local b5 = b5 + (dir_func * sub_membro_ang); #local b8 = b8 + (dir_func * sub_membro_ang); #local b6 = b6 + (dir_func * membro_ponta_ang); #local b9 = b9 + (dir_func * membro_ponta_ang); #local a10 = a10 + (esq_func * membro_ang); #local a13 = a13 + (esq_func * 25); #local b11 = b11 + (esq_func * sub_membro_ang); #local b14 = b14 + (esq_func * sub_membro_ang); #local b12 = b12 + (esq_func * membro_ponta_ang); #local b15 = b15 + (esq_func * membro_ponta_ang); #local b2 = b2 + (func * sub_pescoco_ang); bicho_preguica(b1, b2, b3, b4, a4, b5, b6, b7, a7, b8, b9, b10, b11, b12, b13, a13, b14, b15) #end object { cena(clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 1.00, 1.00 >; #declare raio_cena = 20.0; #declare dir_camera = < 25.00, 0, 10.00 >; #declare dist_camera = 50*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)