// Last edited on DATE TIME by USER // Processed by remove-cam-lights #include "colors.inc" #include "textures.inc" #include "woods.inc" #include "stones.inc" background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_chao = texture{ pigment{ color rgb < 0.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_caixa = texture{ pigment{ color rgb < 0.50, 0.20, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_origem = texture{ pigment{ color rgb < 1.0, 0.00, 0.00 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_corpo = texture{ pigment{ color rgb < 0.60, 0.70, 1.00 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_perna = texture{ pigment{ color rgb < 0.10, 0.70, 7.00 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_ante_perna = texture{ pigment{ color rgb < 1.00, 0.20, 0.50 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_pe = texture{ pigment{ color rgb < 0.00, 0.90, 0.20 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tm_corpo = 3; #declare tm_perna = 5; #declare tm_ante_perna = 3; #declare tm_pe = 1; #declare tm_osso = 0.4; #declare ob_corpo = union{ sphere{ <0,0,0> 0.5 } cone{ <0,0,0>, 0.2, <0,0,-tm_corpo>, 1} texture {tx_corpo} } #declare ob_perna = union{ sphere{ <0,0,0> tm_osso } cone{ <0,0,0>, tm_osso, <0,0,-tm_perna>, 0.1 } sphere{ <0,0,-tm_perna> 0.2 } texture {tx_perna} } #declare ob_ante_perna = union{ sphere{ <0,0,0> tm_osso } cone{ <0,0,0>, tm_osso, <0,0,-tm_ante_perna>, 0.1 } sphere{ <0,0,-tm_ante_perna> 0.2 } texture {tx_ante_perna} } #declare ob_pe = union{ sphere{ <0,0,0> tm_osso } cone{ <0,0,0>, tm_osso, <0,0,-tm_pe>, 0.1 } sphere{ <0,0,-tm_pe> 0.2 } texture {tx_pe} } #macro mc_saltopode(ang_perna, ang_ante_perna, ang_pe) union{ object{ ob_corpo } object{ mc_perna(ang_ante_perna, ang_pe) rotate <0,ang_perna,0> translate <0,0,-tm_corpo> } } #end #macro mc_perna(ang_ante_perna, ang_pe) union{ object{ ob_perna } object{ mc_ante_perna(ang_pe) rotate <0,ang_ante_perna,0> translate <0,0,-tm_perna> } } #end #macro mc_ante_perna(ang_pe) union{ object{ ob_ante_perna } object{ mc_pe() rotate <0,ang_pe,0> translate <0,0,-tm_ante_perna> } } #end #macro mc_pe() union{ object{ ob_pe } } #end #macro interpola(ta, va, tb, vb, tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va + s*vb) #end #declare ang_pe0 = 45; #declare ang_pe1 = 90; #declare ang_pe2 = 30; #declare ang_perna0 = 0; #declare ang_perna1 = 30; #declare ang_perna2 = 0; #declare ang_ante_perna0 = 0; #declare ang_ante_perna1 = -60; #declare ang_ante_perna2 = 0; #declare ang_pe3 = 30; #declare ang_pe4 = 20; #declare ang_pe5 = 30; #declare ang_perna3 = 0; #declare ang_perna4 = 10; #declare ang_perna5 = 0; #declare ang_ante_perna3 = 0; #declare ang_ante_perna4 = -20; #declare ang_ante_perna5 = 0; #declare altura_armacao = -1; #macro armacao(fase) #local tp0 = 0; #local tp1 = 0.7; #local tp2 = 1; #local ang_perna = ang_perna0 + sin(fase*pi) * (ang_perna1-ang_perna0); #local ang_ante_perna = ang_ante_perna0 + sin(fase*pi) * (ang_ante_perna1-ang_ante_perna0); #local ang_pe = ang_pe0 + sin(fase*pi) * (ang_pe1-ang_pe0); #local altura = 11 + sin(fase*pi) * altura_armacao; object{ mc_saltopode(ang_perna,ang_ante_perna,ang_pe) translate <0,0,altura> } #end #macro voo(altura_pulo, fase) #local tp0 = 0; #local tp1 = 0.5; #local tp2 = 1; #if ((fase >= tp0) & (fase < tp1)) #local ang_perna = interpola(tp0, ang_perna3 , tp1, ang_perna4 , fase); #local ang_ante_perna = interpola(tp0, ang_ante_perna3, tp1, ang_ante_perna4, fase); #local ang_pe = interpola(tp0, ang_pe3 , tp1, ang_pe4 , fase); #end #if ((fase >= tp1) & (fase <= tp2)) #local ang_perna = interpola(tp1, ang_perna4 , tp2, ang_perna5 , fase); #local ang_ante_perna = interpola(tp1, ang_ante_perna4, tp2, ang_ante_perna5, fase); #local ang_pe = interpola(tp1, ang_pe4 , tp2, ang_pe5 , fase); #end #local altura = 11 + sin(fase*pi) * altura_pulo; object{ mc_saltopode(ang_perna,ang_ante_perna,ang_pe) translate <0,0,altura> } #end #declare centro_cena = <0,0,0>; #macro voo_geral(altura_pulo, p, q, fase) #local r = interpola(0,p,1,q,fase); #declare centro_cena = r; object{ voo(altura_pulo, fase) translate r } #end #macro armacao_geral(p, fase) #declare centro_cena = p; object{ armacao(fase) translate p } #end #macro quadro(tempo) #local t0 = 0; #local t1 = 0.1; #local t2 = 0.5; #local t3 = 0.6; #local t4 = 1; #local p0 = <+10,0,0>; #local p1 = <0,0,4>; #local p2 = <-10,0,0>; #if((tempo >= t0) & (tempo <= t1)) #local fase = interpola(t0,0,t1,1,tempo); armacao_geral(p0, fase) #end #if((tempo > t1) & (tempo <= t2)) #local fase = interpola(t1,0,t2,1,tempo); voo_geral(10,p0,p1,fase) #end #if((tempo > t2) & (tempo <= t3)) #local fase = interpola(t2,0,t3,1,tempo); armacao_geral(p1, fase) #end #if((tempo > t3) & (tempo <= t4)) #local fase = interpola(t3,0,t4,1,tempo); voo_geral(13,p1,p2,fase) #end #end #declare chao = box{ <-200,-200,-1>, <+200,+200,0> } #declare caixa = box{ <-2,-2,0>, <+2,+2,4> texture{tx_caixa} } union{ object{ chao texture{tx_chao} translate < 0,0,-0.01 >} object{ caixa } object{ caixa translate <-20,0,0>} object{ caixa translate <+20,0,0>} object{ caixa translate <-40,0,0>} object{ caixa translate <+40,0,0>} sphere{ < 0,0,0>, 0.1 texture { tx_origem }} quadro(clock) } #include "camlight.inc" #declare raio_cena = 25.0; #declare dir_camera = < 5.00, 15.00, 1 >; #declare dist_camera = 26.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)