// 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 roleta = seed(2134); #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_terra = texture{ pigment{ color rgb <0.58,0.37,0.18>} finish{ diffuse 0.8 ambient 0.1} } #declare tx_cimento = texture{ pigment{ color rgb <0.71,0.71,0.71>} 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} } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #macro caixa(n) difference{ box{<-0.5,2.5,0>,<0.5,-3*(n-1)-2.5,4>} box{<-1,2,0.5>,<1,-3*(n-1)-2,3.5>} texture { tx_madeira } } #end #declare espeto= union{ cylinder{<0,0,0.2>,<0,0,3.8>,0.2} texture {tx_plastico} } //Defeito é um bit quadrado, o normal é circular #macro bit(valor,defeito) union{ intersection{ #if(defeito) difference { box{<-1.2,-1.2,-2>,<1.2,1.2,2>} cylinder{<0,0,-2>,<0,0,2>,0.5} } #else difference { sphere {<0,0,0> 1.2} cylinder{<0,0,-2>,<0,0,2>,0.5} } #end box{<-2,-2,-0.5>,<2,2,0.5>} texture { tx_cimento } translate <0,0,1+valor*2> } object {espeto} } #end #macro fileira(n,valor,prob) union{ #local i=0; #local atual = 0; #local resto = valor; #while(i} #local i = i+1; #end object{caixa(n)} } #end #macro abaco(m,n,valor,prob) union{ #local i=0; #while(i} #local i = i+1; #end translate <0,((n-1)/2)*3,((m-1)/2)*3> } #end #include "eixos.inc" #declare m1 = 5; #declare valoresA = array[m1]; #declare valoresA[0]=31; #declare valoresA[1]=52; #declare valoresA[2]=13; #declare valoresA[3]=22; #declare valoresA[4]=5; #declare m2 = 3; #declare valoresB = array[m2]; #declare valoresB[0]=31; #declare valoresB[1]=501; #declare valoresB[2]=265; // Aqui está a cena, finalmente: union{ object {abaco(m1,6,valoresA,0.1) scale 0.5 translate <0,-7,0>} object {abaco(m2,10,valoresB,0.5) scale 0.5 translate <0,7,0>} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 25.0; #declare dir_camera = < 20, 0, 10.00 >; #declare dist_camera = 25.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)