// 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 < 1.0, 1.0, 1.0 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 0.8 ambient 0.1 specular 5.8 roughness 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.1 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.42, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } // ====================================================================== //declaracoes para imagem #declare NQ=6; #declare angPehD= array[NQ]; #declare angPehD[0]=0; #declare angPehD[1]=0; #declare angPehD[2]=0; #declare angPehD[3]=0; #declare angPehD[4]=0; #declare angPehD[5]=0; #declare angPehE= array[NQ]; #declare angPehE[0]=0; #declare angPehE[1]=0; #declare angPehE[2]=0; #declare angPehE[3]=0; #declare angPehE[4]=0; #declare angPehE[5]=0; #declare angAntbE= array[NQ]; #declare angAntbE[0]=0; #declare angAntbE[1]=0; #declare angAntbE[2]=0; #declare angAntbE[3]=0; #declare angAntbE[4]=0; #declare angAntbE[5]=0; #declare angAntbD= array[NQ]; #declare angAntbD[0]=0; #declare angAntbD[1]=0; #declare angAntbD[2]=0; #declare angAntbD[3]=0; #declare angAntbD[4]=0; #declare angAntbD[5]=0; #declare angBraD= array[NQ]; #declare angBraD[0]=0; #declare angBraD[1]=0; #declare angBraD[2]=0; #declare angBraD[3]=0; #declare angBraD[4]=0; #declare angBraD[5]=0; #declare angBraE= array[NQ]; #declare angBraE[0]=0; #declare angBraE[1]=0; #declare angBraE[2]=0; #declare angBraE[3]=0; #declare angBraE[4]=0; #declare angBraE[5]=0; #declare angPerE= array[NQ]; #declare angPerE[0]=0; #declare angPerE[1]=0; #declare angPerE[2]=0; #declare angPerE[3]=0; #declare angPerE[4]=0; #declare angPerE[5]=0; #declare angPerD= array[NQ]; #declare angPerD[0]=0; #declare angPerD[1]=0; #declare angPerD[2]=0; #declare angPerD[3]=0; #declare angPerD[4]=0; #declare angPerD[5]=0; #declare tempo= array[NQ]; #declare tempo[0]= 0.00; #declare tempo[1]= 0.20; #declare tempo[2]= 0.40; #declare tempo[3]= 0.60; #declare tempo[4]= 0.80; #declare tempo[5]= 1.00; #macro boneco_dancando(fase) #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 < Q) #if((tempo[i] <= fase) & ((i = NQ) | (tempo[i+1] >= fase))) #local resp= t; #end #local i= i+1; resp #end #end // DESCRIÇÃO DA CENA // Partes da cena: /************ cabeca-pescoco-tronco *****************/ #macro mcpt() #declare cabeca = cylinder{ < 0, 0, 5.0 >, < 0, 0, +7.0 >, 1.0 texture { pigment {color rgb <0.64, 0.16, 0.16> }} } #declare olho = sphere { <0.8,0,6.7> , 0.13 } #declare nariz = sphere { <0.9,0,6.0>, 0.2 } #declare tronco = cylinder{ < 0, 0, 0.0 >, < 0, 0, +4.0 >, 2.0 texture { pigment {color rgb <0.64, 0.16, 0.16> } } } #declare pesc = cylinder{ < 0, 0, 4.0 >, < 0, 0, 5.0 >, 0.4 texture { pigment {color rgb <0.64, 0.16, 0.16> }} } union { object { cabeca } object { tronco } object { pesc } object { nariz } object { olho translate <0, -0.5, 0>} object { olho translate <0, 0.5, 0>} } #end /***********************************************/ /************ peh *****************/ #macro mpeh(n) #declare peh = box { <-0.9, -0.8, -0.02>, < 0.9, 0.8, 0.02> texture { pigment {color rgb <0.64, 0.16, 0.16> }} } object { peh rotate } #end /***********************************************/ /************ anteperna *****************/ #macro anteperna(aa, ap) #declare c1 = cylinder{ < 0, 0, 0.0 >, < 0, 0, -3.0>, 0.25 } union { object { c1 rotate } object { mpeh(ap) rotate <-aa, 0, 0> translate < 0, 0, -3> rotate } } #end /***********************************************/ /************ perna *****************/ #macro perna(ap, aap, apeh) #declare c1 = cylinder{ < 0, 0, 0 >, < 0, 0, -4.0>, 0.3 texture { pigment {color rgb <0.64, 0.16, 0.16> }} } union { object { c1 rotate } object { anteperna(aap, apeh) rotate <-ap, 0, 0> translate <0, 0, -4> rotate } } #end /***********************************************/ /************ antebraco *****************/ #macro antebrac(n) #declare c1 = cylinder{ < 0, 0, 0 >, < 0, 0, -1.5>, 0.25 } #declare mao = sphere{ < 0, 0, -2.0 >, 0.5 texture{ pigment { color rgb <0,1,0> } } } union { object { c1 rotate } object { mao rotate } } #end /***********************************************/ /************ braco *****************/ #macro braco(ab, aa) #declare cil = cylinder{ < 0, 0, -1.5 >, < 0, 0, 0 >, 0.5 texture { pigment {color rgb <0.74, 0.26, 0.26> } } } union { object { antebrac(aa) rotate <-ab,0,0> translate <0, 0, -1.5> rotate } object { cil rotate } } #end #declare caixa = box{ < -2.00, +2.00, -1.00 >, < +2.00, -2.00, +1.00 > texture {tx_vidro} } /***********************************************/ #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #include "eixos.inc" // Aqui está a cena, finalmente: #macro boneco(bracD, antebracD, pernaD, antepernaD, pehD, bracE, antebracE, pernaE, antepernaE, pehE) union { object{ eixos(3.00) } object { mcpt() } object { braco(bracE, antebracE) translate <0, 2.5, 3.7> } object { braco(bracD, antebracD) translate <0, -2.5, 3.7> } object { perna(pernaE,antepernaE , pehE) translate <0, 1.8, 0>} object { perna(pernaD, antepernaD, pehD) translate <0, -1.8, 0>} } #end // CENA union { object{ chao translate < 0,0,-8 > texture{ tx_xadrez } } object { boneco(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) translate <-2, -6, 0> } //object { boneco(0, 0, 0, 0, 0, 0, 0 0, 0, 0) translate < 0, 6, 0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 14.0; #declare dir_camera = < 34.00, 10.00, 14.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)