// 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_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare tx_preto = texture{ pigment{ color rgb < 0.00, 0.00, 0.00 > } } #declare fino = 0.100; #declare grosso = 1.000; #declare NQ = 6; //Nš de quadros #declare pes = array[NQ]; #declare pes[0] = 30; #declare pes[1] = 45; #declare pes[2] = 0; #declare pes[3] = 0; #declare pes[4] = 45; #declare pes[5] = 0; #declare pep = array[NQ]; #declare pep[0] = -30; #declare pep[1] = -60; #declare pep[2] = -90; #declare pep[3] = -30; #declare pep[4] = -30; #declare pep[5] = 0; #declare pds = array[NQ]; #declare pds[0] = -30; #declare pds[1] = -45; #declare pds[2] = 0; #declare pds[3] = -45; #declare pds[4] = 0; #declare pds[5] = 0; #declare pdp = array[NQ]; #declare pdp[0] = 30; #declare pdp[1] = 60; #declare pdp[2] = 90; #declare pdp[3] = 30; #declare pdp[4] = 30; #declare pdp[5] = 0; #declare bes = array[NQ]; #declare bes[0] = 45; #declare bes[1] = -45; #declare bes[2] = 0; #declare bes[3] = 45; #declare bes[4] = -45; #declare bes[5] = 0; #declare bep = array[NQ]; #declare bep[0] = 45; #declare bep[1] = 45; #declare bep[2] = 0; #declare bep[3] = -45; #declare bep[4] = 45; #declare bep[5] = -45; #declare bds = array[NQ]; #declare bds[0] = 45; #declare bds[1] = -45; #declare bds[2] = 0; #declare bds[3] = -45; #declare bds[4] = 45; #declare bds[5] = 0; #declare bdp = array[NQ]; #declare bdp[0] = 45; #declare bdp[1] = 45; #declare bdp[2] = 0; #declare bdp[3] = 45; #declare bdp[4] = -45; #declare bdp[5] = -45; #declare tempo = array[NQ]; #declare tempo[0] = 0.0; #declare tempo[1] = 0.2; #declare tempo[2] = 0.4; #declare tempo[3] = 0.6; #declare tempo[4] = 0.8; #declare tempo[5] = 1.0; #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #macro coxa(a, b, c) union{ cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 0.00, -1.00>, fino texture{ tx_plastico } rotate } object{ perna(b, c) translate <0, 0, -1> rotate texture{ tx_plastico }} } #end #macro perna(b, c) union{ cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 0.00, -1.00>, fino texture{ tx_plastico } rotate } object{ pe(c) texture{ tx_plastico } translate <0, 0, -1> rotate } } #end #macro pe(c) cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 0.00, -0.50>, fino texture{ tx_plastico } rotate } #end #macro braco(b, c) union{ cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 1.00, 0.00>, fino texture{ tx_plastico } rotate } object{ mao(c) texture{ tx_plastico } translate <0, 1, 0> rotate } } #end #macro mao(c) cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 1.00, 0.00>, fino texture{ tx_plastico } rotate } #end #declare corpo = union{ cylinder{ <0.00 , 0.00, 0.00>, <0.00 , 0.00, 3.00>, grosso texture{ tx_plastico } } sphere{ <0.00, 0.00, 4.00>, 1.00 texture{ tx_plastico } } } #macro gato(Y, A, B, C, D, E, F, G, H, I, J) union{ object{ coxa(A, B, C) translate<0, 0.5, 0>} object{ coxa(D, E, F) translate<0, -0.5, 0>} object{ braco(G, H) translate<0, 1, 2>} object{ braco(I, J) scale<+1, -1, +1> translate<0, -1, 2>} object{ corpo } translate <0, Y, 0> } #end #macro gato_dancando(fase) #declare quadro = quadro_anterior(fase); #local pe_esq = interpola(tempo[quadro], pes[quadro], tempo[quadro+1], pes[quadro+1], fase); #local coxa_esq = interpola(tempo[quadro], pep[quadro], tempo[quadro+1], pep[quadro+1], fase); #local pe_dir = interpola(tempo[quadro], pds[quadro], tempo[quadro+1], pds[quadro+1], fase); #local coxa_dir = interpola(tempo[quadro], pdp[quadro], tempo[quadro+1], pdp[quadro+1], fase); #local mao_esq = interpola(tempo[quadro], bes[quadro], tempo[quadro+1], bes[quadro+1], fase); #local braco_esq = interpola(tempo[quadro], bep[quadro], tempo[quadro+1], bep[quadro+1], fase); #local mao_dir = interpola(tempo[quadro], bds[quadro], tempo[quadro+1], bds[quadro+1], fase); #local braco_dir = interpola(tempo[quadro], bdp[quadro], tempo[quadro+1], bdp[quadro+1], fase); object{ gato (0, coxa_dir, pe_dir, 0, coxa_esq, pe_esq, 0, braco_dir, mao_dir, braco_esq, mao_esq)} #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 i=0; #while (i < NQ - 1) #if ((tempo[i] <= fase) & (tempo[i+1] >= fase)) #local resp = i; #end #local i = i+1; #end resp #end #include "eixos.inc" union{ object{ eixos(3.00) } object{ chao translate < 0,0,-5 > texture{ tx_xadrez } } gato_dancando(clock) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 2.00 >; #declare raio_cena = 8.0; #declare dir_camera = < 14.00, 0.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)