// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 } } #declare raio = 2.000; #declare olho = sphere{ <0,0,0>, 0.3 texture{ tx_espelho } } #declare orelha = box{ < -0.1 , -0.5 , 0 >, < 0.1, 0.5 ,3 > texture { tx_plastico } } #declare cabeca = sphere{ <0,0,0>, 2 texture { tx_plastico } } #declare tronco = cylinder{ <0,0,0>, <0,0,5>, 2 texture { tx_plastico } } #declare musculo = cylinder{ <0,0,0>, <0,0,2>, 0.5 texture { tx_plastico } } #declare articulacao = sphere{ <0,0,0>, 0.3 texture { tx_plastico } } #declare apendice = box{ <0,-0.25,0>, <1,0.25,0.5> texture { tx_plastico } } #declare NQ = 9; #declare tempo = array[NQ]; #declare timer_A2 = array[NQ]; #declare timer_A3 = array[NQ]; #declare timer_B2 = array[NQ]; #declare timer_B3 = array[NQ]; #declare timer_C1 = array[NQ]; #declare timer_D1 = array[NQ]; #declare tempo[0] = 0.0; #declare tempo[1] = 0.125; #declare tempo[2] = 0.250; #declare tempo[3] = 0.375; #declare tempo[4] = 0.5; #declare tempo[5] = 0.625; #declare tempo[6] = 0.75; #declare tempo[7] = 0.875; #declare tempo[8] = 1.0; #declare timer_A2[0] = -90; #declare timer_A2[1] = -180; #declare timer_A2[2] = -90; #declare timer_A2[3] = 0; #declare timer_A2[4] = -90; #declare timer_A2[5] = -180; #declare timer_A2[6] = -90; #declare timer_A2[7] = 0; #declare timer_A2[8] = -90; #declare timer_A3[0] = -90; #declare timer_A3[1] = 0; #declare timer_A3[2] = -90; #declare timer_A3[3] = 0; #declare timer_A3[4] = -90; #declare timer_A3[5] = 0; #declare timer_A3[6] = -90; #declare timer_A3[7] = 0; #declare timer_A3[8] = -90; #declare timer_B2[0] = -90; #declare timer_B2[1] = 0; #declare timer_B2[2] = -90; #declare timer_B2[3] = -180; #declare timer_B2[4] = -90; #declare timer_B2[5] = 0; #declare timer_B2[6] = -90; #declare timer_B2[7] = -180; #declare timer_B2[8] = -90; #declare timer_B3[0] = -90; #declare timer_B3[1] = 0; #declare timer_B3[2] = -90; #declare timer_B3[3] = 0; #declare timer_B3[4] = -90; #declare timer_B3[5] = 0; #declare timer_B3[6] = -90; #declare timer_B3[7] = 0; #declare timer_B3[8] = -90; #declare timer_C1[0] = 0; #declare timer_C1[1] = 0; #declare timer_C1[2] = 0; #declare timer_C1[3] = 0; #declare timer_C1[4] = 0; #declare timer_C1[5] = 45; #declare timer_C1[6] = 0; #declare timer_C1[7] = 0; #declare timer_C1[8] = 0; #declare timer_D1[0] = 0; #declare timer_D1[1] = 0; #declare timer_D1[2] = 0; #declare timer_D1[3] = 0; #declare timer_D1[4] = 0; #declare timer_D1[5] = 0; #declare timer_D1[6] = 0; #declare timer_D1[7] = -45; #declare timer_D1[8] = 0; #macro head() union{ object{ cabeca } object{ orelha rotate <-30,0,0> translate < 0, 0.5, 1.5 > } object{ orelha rotate < 30,0,0> translate < 0, -0.5, 1.5 > } object{ olho translate < 2, 0.5, 0.5 > } object{ olho translate < 2, -0.5, 0.5 > } } #end #macro mao(M) union{ object{ articulacao } object{ apendice translate <0,0,-0.8> rotate <0,M,0> texture{ tx_espelho } } } #end #macro antebraco(N,M) union{ object{ articulacao } object{ musculo translate <0,0,-2.3> rotate <0,N,0> } object{ mao(M) translate <0,0,-2.6> rotate <0,N,0> } } #end #macro braco(X,Y,N,M) union{ object{ articulacao } object{ musculo translate <0,0,-2.3> rotate } object{ antebraco(N,M) translate <0,0,-2.6> rotate } } #end #macro pe(P) union{ object{ articulacao } object{ apendice translate <0,0,-0.8> rotate <0,P,0> texture{ tx_espelho } } } #end #macro canela(C,P) union{ object{ articulacao } object{ musculo translate <0,0,-2.3> rotate <0,C,0> } object{ pe(P) translate <0,0,-2.6> rotate <0,C,0> } } #end #macro perna(X,Y,C,P) union{ object{ articulacao } object{ musculo translate <0,0,-2.3> rotate } object{ canela(C,P) translate <0,0,-2.6> rotate } } #end #macro rabbit(A1,A2,A3,A4, B1,B2,B3,B4, C1,C2,C3,C4, D1,D2,D3,D4) union{ object{ head() translate <0,0,7> } object{ tronco } object{ braco(A1,A2,A3,A4) translate <0,2,4> } object{ braco(B1,B2,B3,B4) translate <0,-2,4> } object{ perna(C1,C2,C3,C4) translate <0, 1.5,0> } object{ perna(D1,D2,D3,D4) translate <0,-1.5,0> } } #end #macro interpola(f0, v0, f1, v1, f) #local ss = (f-f0)/(f1-f0); #local rr = 1-ss; (rr*v0 + ss*v1) #end #macro quadro_anterior(fase) #local k = 0; #while ((k < NQ-1) & (tempo[k+1] < fase)) #local k = k+1; #end k #end #macro coelho_dancando(fase) #local i = quadro_anterior(fase); #local A2 = interpola( tempo[i], timer_A2[i], tempo[i+1], timer_A2[i+1], fase); #local A3 = interpola( tempo[i], timer_A3[i], tempo[i+1], timer_A3[i+1], fase); #local B2 = interpola( tempo[i], timer_B2[i], tempo[i+1], timer_B2[i+1], fase); #local B3 = interpola( tempo[i], timer_B3[i], tempo[i+1], timer_B3[i+1], fase); #local C1 = interpola( tempo[i], timer_C1[i], tempo[i+1], timer_C1[i+1], fase); #local D1 = interpola( tempo[i], timer_D1[i], tempo[i+1], timer_D1[i+1], fase); object { rabbit(0,A2,A3,30, 0,B2,B3,30, C1,0,0,0, D1,0,0,0) } #end #include "eixos.inc" union{ object{ eixos(1.00) } object{ coelho_dancando(clock) } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 5.00 >; #declare raio_cena = 15.0; #declare dir_camera = < 14.00, 7.00, 8.00 >; #declare dist_camera = 20.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)