//Pedro Feniman 083991 // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico1 = texture{ pigment{ color rgb < 0, 1, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_plastico2 = texture{ pigment{ color rgb < 0.2, 0.2, 0.2 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } // ====================================================================== // DESCRIÇÃO DA CENA #declare raio = 2.000; // Partes da cena: #declare batata = cylinder{ <0, 0, -2>, <0, 0, 0>, 0.2 texture{ tx_plastico1 } } #declare joelho = sphere{ <0, 0, 0>, 0.3 texture{ tx_plastico1 } } #declare bota= box { < -0.6 ,-0.6, 0> <0.6, 2.4, 1> texture{ tx_plastico2 } } #macro coxa(a) union{ object{joelho} object{batata} object{joelho translate<0, 0, -2>} object{bota rotate<-a, 0, 0> translate<0, 0, -3>} } #end #macro perna(a1, a2) union{ object{coxa(a2) rotate<-a1, 0, 0> translate<0, 0, -2>} object{batata} object{joelho} } #end #declare bra = cylinder{ <0, 2, 0>, <0, 0, 0>, 0.2 texture{ tx_plastico1 } } #declare cotovelo = sphere{ <0, 0, 0>, 0.3 texture{ tx_plastico1 } } #declare mao= box { < -0.4 ,-0.3, -0.3> <0.4, 1.7, 0.3> texture{ tx_plastico2 } } #declare antebraco = union{ object{cotovelo} object{bra} object{cotovelo translate<0, 2, 0>} object{mao translate<0,2.5,0>} } #macro braco(a) union{ object{antebraco scale<1, 0.9, 1> rotate<0, 0, -a> translate<0,2,0>} object{bra} object{cotovelo} } #end #declare cabeca= sphere{ < 0,0,0 >, 1.5 texture{ tx_plastico1 } } #declare pescoco= cylinder{ < 0, 0, 0 >, < 0, 0, 0.6 >, 0.3 texture{ tx_plastico1 } } #declare corpo= box { < -1.7 ,-1.0, 0> <1.7, 1.0, 5> texture{ tx_plastico1 } } #declare orelha= box { < -0.4 ,-0.2, 0> <0.4, 0.2, 2> texture{ tx_plastico1 } } #macro coelho(pe1, pe2, perx, pery, pd1, pd2, pdrx, pdry, be, berx, bery, berz, bd, bdrx, bdry, bdrz) union{ object{ pescoco translate < 0, 0, 5.3 >} object{ cabeca translate < 0,0, 7.2 >} object{ corpo translate <0, 0, 0.3>} object{ orelha rotate < 0, -20,0 > translate <-0.5, 0, 8.3> } object{ orelha rotate < 0, 20,0 > translate <0.5, 0, 8.3> } object{perna(pe1, pe2) rotate translate<1, 0, 0>} object{perna(pd1, pd2) rotate translate<-1, 0, 0>} object{braco(be) rotate translate<1.9, 0, 4.8>} object{braco(bd) rotate translate<-1.9, 0, 4.8>} } #end #declare NQ = 6; #declare angpe1 = array[NQ]; #declare angpe1[0] = 60; #declare angpe1[1] = 30; #declare angpe1[2] = 0; #declare angpe1[3] = 30; #declare angpe1[4] = 60; #declare angpe1[5] = 30; #declare angpe2 = array[NQ]; #declare angpe2[0] = 10; #declare angpe2[1] = 5; #declare angpe2[2] = 0; #declare angpe2[3] = -5; #declare angpe2[4] = -10; #declare angpe2[5] = -15; #declare angperx = array[NQ]; #declare angperx[0] = -60; #declare angperx[1] = -30; #declare angperx[2] = 0; #declare angperx[3] = 30; #declare angperx[4] = 60; #declare angperx[5] = 90; #declare angpd1 = array[NQ]; #declare angpd1[0] = 60; #declare angpd1[1] = 30; #declare angpd1[2] = 0; #declare angpd1[3] = 30; #declare angpd1[4] = 60; #declare angpd1[5] = 30; #declare angpd2 = array[NQ]; #declare angpd2[0] = -10; #declare angpd2[1] = -5; #declare angpd2[2] = 0; #declare angpd2[3] = 5; #declare angpd2[4] = 10; #declare angpd2[5] = 15; #declare angpdrx = array[NQ]; #declare angpdrx[0] = 60; #declare angpdrx[1] = 30; #declare angpdrx[2] = 0; #declare angpdrx[3] = -30; #declare angpdrx[4] = -60; #declare angpdrx[5] = -90; #declare angberx = array[NQ]; #declare angberx[0] = -90; #declare angberx[1] = -135; #declare angberx[2] = -180; #declare angberx[3] = -210; #declare angberx[4] = -240; #declare angberx[5] = -270; #declare angbdrx = array[NQ]; #declare angbdrx[0] = 90; #declare angbdrx[1] = 45; #declare angbdrx[2] = 0; #declare angbdrx[3] = -30; #declare angbdrx[4] = -60; #declare angbdrx[5] = -90; #declare tempo = array[NQ]; #declare tempo[0] = 0.0; #declare tempo[1] = 0.20; #declare tempo[2] = 0.40; #declare tempo[3] = 0.60; #declare tempo[4] = 0.80; #declare tempo[5] = 1; #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) #if((tempo[i] <= fase) & ((i = NQ-1) | (tempo[i+1] >= fase))) #local resp = i; #end #local i = i + 1; #end resp #end #macro coelhoDancando(fase) #end //object{ coelho(60, 10, -60, 0, 60, -10, 60, 0, 0, -90, 0, 0, 0, 90, 0, 0) } //object{ coelho(30, 5, -30, 0, 30, -5, 30, 0, 0, -135, 0, 0, 0, 45, 0, 0) } //object{ coelho(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0) } //object{ coelho(30, -5, 30, 0, 30, 5, -30, 0, 0, -210, 0, 0, 0, -30, 0, 0) } //object{ coelho(60, -10, 60, 0, 60, 10, -60, 0, 0, -240, 0, 0, 0, -60, 0, 0) } //object{ coelho(30, -15, 90, 0, 30, 15, -90, 0, 0, -270, 0, 0, 0, -90, 0, 0) } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 18.0; //#declare dir_camera = < -14, 20, 5.00 >; #declare dir_camera = < 14, 20, 5.00 >; #declare dist_camera = 18.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)