// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare marrom = texture{ pigment{ color rgb < 1, 0.51, 0.23 > } finish{ diffuse 0.9 ambient 0.1 } } #declare verde = texture{ pigment{ color rgb < 0, 1, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare solo = texture{ pigment{ color rgb < 0, 0.8, 0 > } finish{ diffuse 0.9 ambient 0.1 } } #declare cones = cone { < 0, 0, -0.6 >, 0.2, < 0, 0, 0.6 >, 0.3 } #declare cabeca = cone { < 0, 0, -0.8 >, 0.4, < 0, 0, 0.8 >, 0.7 } #declare pescoco = cone { < 0, 0, -0.3 >, 0.4, < 0, 0, 0.3 >, 0.6 } #declare tronco = cone { < 0, 0, -1.5 >, 0.55, < 0, 0, 1.5 >, 0.55 } #declare bolas = sphere { < 0, 0, 0 >, 0.3 } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #declare NQ = 6; #declare fase = array[NQ]; #declare fase[0] = 0; #declare fase[1] = 0.2; #declare fase[2] = 0.4; #declare fase[3] = 0.6; #declare fase[4] = 0.8; #declare fase[5] = 1; #declare aC = array[NQ]; #declare aC[0] = -20; #declare aC[1] = -20; #declare aC[2] = -20; #declare aC[3] = -65; #declare aC[4] = -65; #declare aC[5] = -65; #declare aB = array[NQ]; #declare aB[0] = -120; #declare aB[1] = -120; #declare aB[2] = -120; #declare aB[3] = -40; #declare aB[4] = -40; #declare aB[5] = -40; #declare aA = array[NQ]; #declare aA[0] = 110; #declare aA[1] = 110; #declare aA[2] = 110; #declare aA[3] = 90; #declare aA[4] = 90; #declare aA[5] = 90; #declare aF = array[NQ]; #declare aF[0] = -10; #declare aF[1] = -50; #declare aF[2] = -110; #declare aF[3] = -100; #declare aF[4] = -100; #declare aF[5] = -100; #declare aE = array[NQ]; #declare aE[0] = 0; #declare aE[1] = 0; #declare aE[2] = 10; #declare aE[3] = 25; #declare aE[4] = 25; #declare aE[5] = 25; #declare aD = array[NQ]; #declare aD[0] = 0; #declare aD[1] = 0; #declare aD[2] = 0; #declare aD[3] = 30; #declare aD[4] = 30; #declare aD[5] = 30; #declare aCorpo = array[NQ]; #declare aCorpo[0] = 30; #declare aCorpo[1] = 30; #declare aCorpo[2] = 30; #declare aCorpo[3] = 0; #declare aCorpo[4] = 0; #declare aCorpo[5] = 0; #declare aPos = array[NQ]; #declare aPos[0] = 0; #declare aPos[1] = 0; #declare aPos[2] = 0; #declare aPos[3] = 2; #declare aPos[4] = 2; #declare aPos[5] = 2; #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(local_fase) #local i = 0; #while (i < NQ - 1) #if((fase[i] <= local_fase) & (fase[i+1] >= local_fase)) #local resp = i; #end #local i = i + 1; #end resp #end object{ chao translate < 0,0,-5 > texture{ solo } } #macro pe() union { object { bolas texture { marrom } } object { cones rotate 90 *x translate < 0, 0.8, 0> texture { marrom } } } #end #macro subperna(A) union { object{ pe() rotate A *x scale < 0.8, 0.8, 0.8 > translate < 0, 1.6, 0 >} object{ pe() } } #end #macro perna(A, B) union { object{ subperna(A) rotate B *x scale < 0.8, 0.8, 0.8 > translate < 0, 1.6, 0> } object{ pe() } } #end #macro membros(A1, B1, C1, A2, B2, C2, A3, B3, C3, A4, B4, C4) union { object { perna(A1, B1) rotate C1 *x translate < 0.8, 0, 1 > } object { perna(A2, B2) rotate C2 *x translate < -0.8, 0, 1 > } object { perna(A3, B3) rotate C3 *x scale < 0.8, 0.8, 0.8 > translate < 0.8, 3, 0.8 > } object { perna(A4, B4) rotate C4 *x scale < 0.8, 0.8, 0.8 > translate <-0.8, 3, 0.8 > } } #end #macro corpo(A1, B1, C1, A2, B2, C2, A3, B3, C3, A4, B4, C4) union{ object { membros(A1, B1, C1, A2, B2, C2, A3, B3, C3, A4, B4, C4) } object { pescoco rotate 175 *x translate < 0, 3.1, 1.6 > texture { marrom } } object { cabeca rotate 70 *x translate < 0, 3.6, 2.3 > texture { marrom } } object { tronco rotate 88 *x scale < 1.5, 1.5, 1.5 > translate < 0, 1.5, 0.8 > texture { marrom } } } #end #macro animal(A1, B1, C1, A1, B2, C2, A3, B3, C3, A4, B4, C4, D, E) object { corpo(A1, B1, C1, A1, B2, C2, A3, B3, C3, A4, B4, C4) rotate D *x translate < 0, 0, -4.5 + E > } #end #macro danca(local_fase) union { #local i = quadro_anterior(local_fase); object { animal( interpola(fase[i], aA[i], fase[i+1], aA[i+1], local_fase), interpola(fase[i], aB[i], fase[i+1], aB[i+1], local_fase), interpola(fase[i], aC[i], fase[i+1], aC[i+1], local_fase), interpola(fase[i], aA[i], fase[i+1], aA[i+1], local_fase), interpola(fase[i], aB[i], fase[i+1], aB[i+1], local_fase), interpola(fase[i], aC[i], fase[i+1], aC[i+1], local_fase), interpola(fase[i], aD[i], fase[i+1], aD[i+1], local_fase), interpola(fase[i], aE[i], fase[i+1], aE[i+1], local_fase), interpola(fase[i], aF[i], fase[i+1], aF[i+1], local_fase), interpola(fase[i], aD[i], fase[i+1], aD[i+1], local_fase), interpola(fase[i], aE[i], fase[i+1], aE[i+1], local_fase), interpola(fase[i], aF[i], fase[i+1], aF[i+1], local_fase), interpola(fase[i], aCorpo[i], fase[i+1], aCorpo[i+1], local_fase), interpola(fase[i], aPos[i], fase[i+1], aPos[i+1], local_fase) ) } } #end object { danca(clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 1, 0, 0.2 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)