// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS 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_preto = texture{ pigment{ color rgb <0,0,0>} finish{ diffuse 0.8 ambient 0.1} } #declare tx_pele_coelho = texture{ pigment{ color rgb <0.81,0.81,0.81>} finish{ diffuse 0.8 ambient 0.1} } #declare tx_grama = texture{ pigment{ color rgb <0.6,0.8,0.2>} finish{ diffuse 0.8 ambient 0.1} } #declare tx_madeira = texture{ pigment{ color rgb <0.8,0.7,0.5>} finish{ diffuse 0.8 ambient 0.1} } //======================================== //Declarando angulos #declare NQ=6; #declare alfa = array[NQ]; #declare alfa[0] =0; #declare alfa[1] =30; #declare alfa[2] =60; #declare alfa[3] =20; #declare alfa[4] =10; #declare alfa[5] =alfa[0]; #declare beta = array[NQ]; #declare beta[0] =0; #declare beta[1] =-60; #declare beta[2] =-120; #declare beta[3] =-40; #declare beta[4] =-20; #declare beta[5] =beta[0]; #declare gama = array[NQ]; #declare gama[0] =0; #declare gama[1] =30; #declare gama[2] =60; #declare gama[3] =-50; #declare gama[4] =-65; #declare gama[5] =gama[0]; #declare mi = array[NQ]; #declare mi[0] =-30; #declare mi[1] =-30; #declare mi[2] =-90; #declare mi[3] =-30; #declare mi[4] =-30; #declare mi[5] =mi[0]; #declare teta = array[NQ]; #declare teta[0] =0; #declare teta[1] =30; #declare teta[2] =0; #declare teta[3] =0; #declare teta[4] =0; #declare teta[5] =teta[0]; // ====================================================================== // DESCRIÇÃO DA CENA #macro antebraco() union{ cone { <0,0,0>,0.4,<0,0,-2>,0.4 } } #end #macro braco(teta) union{ cone { <0,0,0>,0.4,<0,0,-2>,0.4 } sphere {<0,0,-2>,0.5 } object { antebraco() rotate teta*y translate <0,0,-2> } } #end #macro ombro(mi,teta) union{ sphere{<0,0,0>,0.5} object{braco(teta) rotate mi*y} } #end #macro pe() union{ cone { <0,0,0>,0.4,<0,1.5,0>,0.4 } texture { tx_preto} } #end #macro canela(gama) union{ cone { <0,0,0>,0.4,<0,0,-3>,0.4 } sphere {<0,0,-3>,0.5 texture {tx_preto}} object { pe() rotate gama*x translate <0,0,-3> } } #end #macro coxa(beta,gama) union{ cone { <0,0,0>,0.4,<0,0,-3>,0.4 } sphere {<0,0,-3>,0.5 } object { canela(gama) rotate beta*x translate <0,0,-3> } } #end #macro perna(alfa,beta,gama) union{ sphere{<0,0,0>,0.5} object{coxa(beta,gama) rotate alfa*x} } #end #declare orelha= union{ cone{<0,0,0>,0.2,<0,0,1.2>,0.1} } #declare cabeca= union{ sphere {<0,0,0>0.8} object{orelha translate<0.2,0,0.6>} object{orelha translate<-0.2,0,0.6>} } #macro coelho(alfa,beta,gama,mi,teta) union{ object{ perna(alfa,beta,gama) translate <-0.5,0,6.4> } object{ perna(alfa,beta,gama) translate <0.5,0,6.4> } cone {<0,0,6.4>,1.3,<0,0,11.4>,1.3} object { ombro(mi,teta) translate <1.3,0,10.8> } object { ombro(mi,teta) translate <1.3,0,10.8> rotate 180*z} cone {<0,0,11.4>,0.5,<0,0,12.4>,0.6} object{cabeca translate <0,0,12.8>} texture{ tx_pele_coelho } } #end #macro coelho_mexendo(alfa,beta,gama,mi,teta) union{ #local alfa_r = (alfa/360)*2*pi; #local beta_r = (beta/360)*2*pi; #local gama_r = (gama/360)*2*pi; #local desl = ((1-abs(cos(alfa_r)))*3+(1-abs(cos(beta_r+alfa_r)))*3+sin(gama_r+beta_r+alfa_r)*1.5); object{ coelho(alfa,beta,gama,mi,teta) translate <0,0,-desl>} } #end #macro interpol(ta,va,tb,vb,tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va+s*vb); #end #macro quadro_anterior(fase) #declare fg = array[NQ] #declare fg[0] = 0; #declare fg[1] = 0.2; #declare fg[2] = 0.4; #declare fg[3] = 0.6; #declare fg[4] = 0.8; #declare fg[5] = 1; #local i=0; #while(i=fase)) #local resp = i; #end #local i = i+1; #end resp; #end #macro coelho_dancando(fase) #declare t0 = 0; #declare t1 = 0.2; #declare t2 = 0.4; #declare t3 = 0.6; #declare t4 = 0.8; #declare t5 = 1; #if ((fase>=t0) & (fase<=t1)) #declare alfa = interpol(t0,alfa[0],t1,alfa[1],fase); #declare beta = interpol(t0,beta[0],t1,beta[1],fase); #declare gama = interpol(t0,gama[0],t1,gama[1],fase); #declare mi = interpol(t0,mi[0],t1,mi[1],fase); #declare teta = interpol(t0,teta[0],t1,teta[1],fase); #end #if ((fase>t1) & (fase<=t2)) #declare alfa = interpol(t1,alfa[1],t2,alfa[2],fase); #declare beta = interpol(t1,beta[1],t2,beta[2],fase); #declare gama = interpol(t1,gama[1],t2,gama[2],fase); #declare mi = interpol(t1,mi[1],t2,mi[2],fase); #declare teta = interpol(t1,teta[1],t2,teta[2],fase); #end #if ((fase>t2) & (fase<=t3)) #declare alfa = interpol(t2,alfa[2],t3,alfa[3],fase); #declare beta = interpol(t2,beta[2],t3,beta[3],fase); #declare gama = interpol(t2,gama[2],t3,gama[3],fase); #declare mi = interpol(t2,mi[2],t3,mi[3],fase); #declare teta = interpol(t2,teta[2],t3,teta[3],fase); #end #if ((fase>t3) & (faset4) & (fase, <+10,+10,0> } #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ chao translate < 0,0,0 > texture{ tx_grama} } //coelho(coxa,canela,tornozelo,ombro,cotovelo) //object{ coelho_mexendo(0,0,0,-30,0) scale <0,0,0.8> translate <0,0,0>} //object{ coelho_mexendo(30,-60,30,-30,30) scale <0,0,0.8> translate <0,0,0>} //object{ coelho_mexendo(60,-120,60,-90,0) scale <0,0,0.8> translate <0,0,0>} //object{ coelho_mexendo(20,-40,-50,-30,0) scale <0,0,0.8> translate <0,0,0>} //object{ coelho_mexendo(10,-20,-65,-30,0) scale <0,0,0.8> translate <0,0,0>} object{ coelho_dancando(0.6) } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 25.0; #declare dir_camera = < 0, 20, 20.00 >; #declare dist_camera = 25.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)