// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_branco = texture{ pigment{ color rgb < 1, 1, 1 > } } #declare tx_fosca_marrom = texture{ pigment{ color rgb < 0.361, 0.2, 0.09 > } } #declare tx_olhos = texture{ pigment{ color rgb < 0.10, 0.62, 0.10 >} finish{ diffuse 0.9 ambient 0.5 } } #declare tamanho_corpo = 20; #declare tamanho_cabeca = 10; #declare NQ = 7; #declare bracoD = array[NQ]; #declare bracoD[0] = -90; #declare bracoD[1] = 0; #declare bracoD[2] = 90; #declare bracoD[3] = 0; #declare bracoD[4] = -90; #declare bracoD[5] = -90; #declare bracoD[6] = -90; #declare bracoE = array[NQ]; #declare bracoE[0] = -90; #declare bracoE[1] = 0; #declare bracoE[2] = 90; #declare bracoE[3] = 90; #declare bracoE[4] = 90; #declare bracoE[5] = 0; #declare bracoE[6] = -90; #declare CotD = array[NQ]; #declare CotD[0] = 0; #declare CotD[1] = 0; #declare CotD[2] = 0; #declare CotD[3] = 90; #declare CotD[4] = 0; #declare CotD[5] = 0; #declare CotD[6] = 0; #declare CotE = array[NQ]; #declare CotE[0] = 0; #declare CotE[1] = 0; #declare CotE[2] = 0; #declare CotE[3] = 0; #declare CotE[4] = 0; #declare CotE[5] = 90; #declare CotE[6] = 0; #declare dancaCabeca = array[NQ]; #declare dancaCabeca[0] = 0; #declare dancaCabeca[1] = 0; #declare dancaCabeca[2] = 0; #declare dancaCabeca[3] = -90; #declare dancaCabeca[4] = 0; #declare dancaCabeca[5] = 90; #declare dancaCabeca[6] = 0; #declare faseQuadro = array[NQ]; #declare faseQuadro[0] = 0; #declare faseQuadro[1] = 1/6; #declare faseQuadro[2] = 2/6; #declare faseQuadro[3] = 3/6; #declare faseQuadro[4] = 4/6; #declare faseQuadro[5] = 5/6; #declare faseQuadro[6] = 1; #macro coelhoDancante (fase) #local i = quadro_anterior(fase); #local CotEVar = interpola(faseQuadro[i], CotE[i], faseQuadro[i+1], CotE[i+1], fase); #local CotDVar = interpola(faseQuadro[i], CotD[i], faseQuadro[i+1], CotD[i+1], fase); #local bracoDVar = interpola(faseQuadro[i], bracoD[i], faseQuadro[i+1], bracoD[i+1], fase); #local bracoEVar = interpola(faseQuadro[i], bracoE[i], faseQuadro[i+1], bracoE[i+1], fase); #local dancaCabecaVar = interpola(faseQuadro[i], dancaCabeca[i], faseQuadro[i+1], dancaCabeca[i+1], fase); object { coelho (bracoDVar, CotDVar, 0, 0, 0, bracoEVar, CotEVar, 0, 0, 0 ,dancaCabecaVar)} #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 ((faseQuadro[i] <= fase) & (faseQuadro[i+1] >= fase)) #local resp = i; #end #local i = i+1; #end resp #end #macro coelho (ang_bracoD, ang_antebracoD, ang_coxaD, ang_canelaD, ang_peD, ang_bracoE, ang_antebracoE, ang_coxaE, ang_canelaE, ang_peE ,viraCabeca) union { object {cabeca() rotate <0,0,viraCabeca> translate <0,0,tamanho_corpo+tamanho_cabeca-2>} object {corpo()} object {braco(ang_antebracoE) rotate translate <-tamanho_corpo,0,5>} object {braco(ang_antebracoD) rotate translate } object {perna(ang_canelaD, ang_peD) rotate translate <5, 0, -tamanho_corpo+5>} object {perna(ang_canelaE, ang_peE) rotate translate <-5, 0, -tamanho_corpo+5>} } #end #macro cabeca () union{ object { sphere{ <0,0,0>, tamanho_cabeca texture{tx_branco} } } object { sphere{ <0.4*tamanho_cabeca,0.5*tamanho_cabeca,0.4*tamanho_cabeca>, 3 texture{tx_olhos} } } object { sphere{ <-0.4*tamanho_cabeca,0.5*tamanho_cabeca,0.4*tamanho_cabeca>, 3 texture{tx_olhos} } } object { sphere{ <0,0,tamanho_cabeca/2>, 5 texture{tx_branco} } scale <1,0.3,2> rotate <0,7,0> translate <4,0,0>} object { sphere{ <0,0,tamanho_cabeca/2>, 5 texture{tx_branco} } scale <1,0.3,2> rotate <0,-7,0> translate <-4,0,0>} object { box { <-1,-0.3,-2>, <1,0.3,2> texture{tx_branco}} rotate <15,0,0> translate <0.2*tamanho_cabeca,0.9*tamanho_cabeca,-0.4*tamanho_cabeca> } object { box { <-1,-0.3,-2>, <1,0.3,2> texture{tx_branco}} rotate <15,0,0> translate <-0.2*tamanho_cabeca,0.9*tamanho_cabeca,-0.4*tamanho_cabeca> } } #end #macro corpo () union{ object { sphere{ <0,0,0>, tamanho_corpo texture{tx_branco}} } object { sphere{ <0,-0.9*tamanho_corpo,-0.7*tamanho_corpo>, 6 texture{tx_branco}} } } #end #macro braco (ang_antebraco) union { object {sphere{ <0,0,0>, 3 texture{tx_branco}} } object {ombro()} object {antebraco() rotate translate <0,10,0>} } #end #macro perna (ang_canela, ang_pe) union { object {coxa()} object {canela(ang_pe) rotate translate <0,0,-10>} } #end #macro ombro () union { object {cylinder {<0,0,0>, <0,10,0>, 3 texture{tx_branco}}} object {sphere{ <0,10,0>, 3 texture{tx_branco}} } } #end #macro antebraco () union { object {cylinder {<0,0,0>, <0,10,0>, 3 texture{tx_branco}}} object {sphere{ <0,10,0>, 4 texture{tx_branco}} } } #end #macro coxa () union { object {cylinder {<0,0,0>, <0,0,-10>, 3 texture{tx_branco}}} object {sphere{ <0,0,-10>, 3 texture{tx_branco}} } } #end #macro canela (ang_pe) union { object {cylinder {<0,0,0>, <0,0,-10>, 3 texture{tx_branco}}} object {cylinder {<0,0,-3>, <0,0,-10>, 4 texture{tx_fosca_marrom}}} object {pe() translate <0,4,0> rotate translate <0,0,-9.9>} } #end #macro pe () union{ object {sphere{ <0,-4,0>, 4 texture{tx_fosca_marrom}} } object {box {<-4,-8,-4>, <4,8,2> texture{tx_fosca_marrom}} } } #end #include "eixos.inc" union { object {coelhoDancante(clock)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 100.0; #declare dir_camera = < 0.00, 1.00, 0.00 >; #declare dist_camera = 160.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)