// 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.2 roughness 0.005 } } #declare tx_verde = texture{ pigment{ color rgb < 0.48, 0.99, 0.00 > } }; #declare tx_cinza_escuro = texture{ pigment{ color rgb < 0.2, 0.2, 0.2 > } }; #declare tx_vermelho = texture{ pigment{ color rgb < 1.00, 0.00, 0.00 > } } #declare tx_marrom = texture{ pigment{ color rgb < 0.92, 0.64, 0.51 > } }; #declare tx_branco = texture{ pigment{ color rgb < 1, 1, 1 > } }; #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.2*< 1.00, 0.85, 0.30 > ambient 0.1 } } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare chao = box { <-20, -20, -1 >, <20, 20, 0> texture { tx_xadrez } } #declare meuPonto = sphere{ < 0,0,0 >, 0.5 } // ====================================================================== // DESCRIÇÃO DA CENA #macro interpola(f0, v0, f1, v1, f) #local ss = (f-f0)/(f1-f0); #local rr = 1 - ss; (rr*v0 + ss*v1) #end #macro interpola4(t0, v0, v1, v2, v3, t1, tt) #local v01 = interpola(t0, v0, t1, v1, tt); #local v12 = interpola(t0, v1, t1, v2, tt); #local v23 = interpola(t0, v2, t1, v3, tt); #local v012 = interpola(t0, v01, t1, v12, tt); #local v123 = interpola(t0, v12, t1, v23, tt); #local v0123 = interpola(t0, v012, t1, v123, tt); v0123 #end #macro ponto(xx, yy) object { meuPonto translate } #end #macro grafico(x0, y0, y1, y2, y3, x3, N) #local inc = (x3-x0) / N; #local i = 0; union { #while(i < N) #local xx = x0 + i*inc; #local yy = interpola4(x0, y0, y1, y2, y3, x3, xx); // ponto(xx, yy) object { meuPonto translate yy } #local i = i + 1; #end } #end // Partes da cena: #include "eixos.inc" #include "camlight.inc" #include "retalho.inc" // Aqui está a cena, finalmente: //object{ chao translate <0,0,-1>} #local p1 = <2,0,0>; #local p2 = <0,2,2>; #local q1 = <-1,3,4>; #local q2 = <-4,0,-2>; #local r1 = <-6,-2,-6>; #local r2 = <0,-4,1>; #local s1 = <4,-7,6>; #local s2 = <8,1,-3>; #local z0 = 2; #local p11 = <0,0,3.5>; #local p12 = <3,0,3>; #local p13 = <6,0,4>; #local p14 = <9,0,4.5>; #local p21 = <0,1.5,3.5>; #local p22 = <3,1.5,3>; #local p23 = <6,1.5,4>; #local p24 = <9,1.5,4.5>; #local p31 = <0,3,3.5>; #local p32 = <3,3,3>; #local p33 = <6,3,4>; #local p34 = <9,3,4.5>; #local q21 = <0,7,3.5 + z0 + 1>; #local q22 = <3,7,3 + z0>; #local q23 = <6,7,4 + z0>; #local q24 = <9,7,4.5 + z0 + 2>; #local q31 = <0,9,3.5 + z0>; #local q32 = <3,9,3 + z0>; #local q33 = <6,9,4 + z0>; #local q34 = <9,9,4.5 + z0>; #local q41 = <0,11,3.5 + z0>; #local q42 = <3,11,3 + z0>; #local q43 = <6,11,4 + z0>; #local q44 = <9,11,4.5 + z0>; #local p41 = (q21 + p31) / 2; #local p42 = (q22 + p32) / 2; #local p43 = (q23 + p33) / 2; #local p44 = (q24 + p34) / 2; #local q11 = (q21 + p31) / 2; #local q12 = (q22 + p32) / 2; #local q13 = (q23 + p33) / 2; #local q14 = (q24 + p34) / 2; union{ object{ grafico(-10, (s2 + p1) / 2 ,p1, p2, (p2 + q1) / 2, -5 ,200) texture{ tx_fosca } } object{ grafico(-5, (p2 + q1) / 2 ,q1, q2, (q2 + r1) / 2, 0 ,200) texture{ tx_plastico } } object{ grafico( 0, (q2 + r1) / 2 ,r1, r2, (r2 + s1) / 2, 5 ,200) texture{ tx_fosca } } object{ grafico( 5, (r2 + s1) / 2 ,s1, s2, (s2 + p1) / 2, 10 ,200) texture{ tx_plastico } } scale 0.5 translate <3, 5, 8> } union{ object { retalho (p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34, p41, p42, p43, p44, 0.01, texture{ tx_cinza_escuro }, texture{ tx_fosca } ) } object { retalho (q11, q12, q13, q14, q21, q22, q23, q24, q31, q32, q33, q34, q41, q42, q43, q44, 0.01, texture{ tx_cinza_escuro }, texture{ tx_plastico } ) } } #declare centro_cena = < 0, 4, 4 >; #declare raio_cena =20; #declare dir_camera = < 8, 6, 8 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)