// 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_chao = texture{ pigment{ color rgb < 0.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_cadeira = texture{ pigment{ color rgb < 0.80, 0.10, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_torcedor2 = texture{ pigment{ color rgb < 0.10, 0.10, 0.90 > } finish{ diffuse 0.9 ambient 0.4 } } #declare tx_torcedor1 = texture{ pigment{ color rgb < 0.10, 0.90, 0.10 > } finish{ diffuse 0.9 ambient 0.4 } } #declare tx_origem = texture{ pigment{ color rgb < 1.0, 0.00, 0.00 > } finish{ diffuse 0.1 ambient 0.9 } } #declare tx_escada = texture{ pigment{ color rgb < 0.60, 0.60, 0.60 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_pessoa = texture{ pigment{ color rgb < 0.80, 0.75, 0.00 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_sapato = texture{ pigment{ color rgb < 0.20, 0.20, 0.20 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== #macro escada(altura, largura /*em blocos*/) union{ #declare i = 0; #while (i < altura) object{blocoEscada scale translate <0, un_padrao*i, un_padrao*i>} #declare i = i+1; #end } #end #macro bloco(altura, largura /*em blocos*/) union{ #declare i = 0; #while (i < altura) #declare j = 0; #while (j < largura) object{cadeira translate <-un_padrao*i, un_padrao*j, un_padrao*i>} // 33% para 1, e 33% para 2 (metade dos 66% restantes) #declare random = rand(firstSeed); #if ( random < 0.33) object{pessoa translate <-un_padrao*i, un_padrao*j, un_padrao*i + 1*un> texture {tx_torcedor1}} #else #if (random < 0.50) object{pessoa translate <-un_padrao*i, un_padrao*j, un_padrao*i + 1*un> texture {tx_torcedor2}} #end #end #declare j = j+1; #end #declare i = i+1; #end } #end // ====================================================================== // DESCRIÇÃO DA CENA #declare firstSeed = seed(6031769); #declare un = 0.5; #declare un_padrao = 2.4 * un; // Partes da cena: #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #declare cadeira = union { box{ <-1*un,-1*un,0>, <1*un,1*un,1*un> } box{ <-1*un,-1*un,0>, <-0.25*un,1*un,2*un> } } #declare degrau = box{ <-0.5*un,-0.2*un,0*un>, <+0.5*un,+0.2*un,0.4*un> } #declare blocoEscada = union{ object{degrau translate <0.0, -0.6, 0.0>} object{degrau translate <0.0, -0.4, 0.2>} object{degrau translate <0.0, -0.2, 0.4>} object{degrau translate <0.0, 0.0, 0.6>} object{degrau translate <0.0, +0.2, 0.8>} object{degrau translate <0.0, +0.4, 1.0>} object{degrau translate <0.0, +0.6, 1.2>} } // Partes da pessoa: #declare tamanhoCorpo = 2*un; #declare tamanhoCabeca = 1*un; #declare tamanhoPerna = 0.5*un; #declare tamanhoCintura = 1*un; #declare pessoa = union{ // cabeca sphere{ < 0,0,tamanhoCorpo + tamanhoPerna + tamanhoCabeca/2>, tamanhoCabeca/2 texture {tx_pessoa}} // corpo cone{<0.00, 0.00, tamanhoPerna>, tamanhoCintura, <0.00, 0.00, tamanhoCorpo + tamanhoPerna + tamanhoCabeca/2>, tamanhoCabeca/4} // perna1 cylinder{< 0.00, +tamanhoCintura/2, 0 >, < 0.00, +tamanhoCintura/2, tamanhoPerna >, tamanhoCintura / 4 texture {tx_sapato} } // perna2 cylinder{< 0.00, -tamanhoCintura/2, 0 >, < 0.00, -tamanhoCintura/2, tamanhoPerna >, tamanhoCintura / 4 texture {tx_sapato} } // braco cylinder{< 0.00, -tamanhoCintura, tamanhoCorpo*2/3 + tamanhoPerna >, < 0.00, +tamanhoCintura, tamanhoCorpo*2/3 + tamanhoPerna >, tamanhoCintura / 4 texture {tx_pessoa} } } //#include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ chao texture{tx_chao} translate < 0,0,-0.01 >} sphere{ < 0,0,0>, 0.1 texture { tx_origem }} object{ bloco(3,6) texture { tx_cadeira } translate <-6*un_padrao,-7*un_padrao,0> } object{ escada(3,5) texture { tx_escada } rotate <0,0,90> translate <-6*un_padrao,-0*un_padrao,0> } object{ bloco(3,5) texture { tx_cadeira } translate <-6*un_padrao,2*un_padrao,0> } object{ bloco(3,2) texture { tx_cadeira } rotate <0,0,-45> translate <-5.5*un_padrao,8*un_padrao,0> } object{ bloco(3,8) texture { tx_cadeira } rotate <0,0,-90> translate <-3*un_padrao,9*un_padrao,0> } object{ bloco(3,2) texture { tx_cadeira } rotate <0,0,-135> translate <5.5*un_padrao,8*un_padrao,0> } object{ bloco(3,12) texture { tx_cadeira } rotate <0,0,180> translate <6*un_padrao,6*un_padrao,0> } object{ escada(3,5) texture { tx_escada } rotate <0,0,-90> translate <6*un_padrao,-7*un_padrao,0> } object{ bloco(3,2) texture { tx_cadeira } rotate <0,0,45> translate <-5.5*un_padrao,-9*un_padrao,0> } object{ bloco(3,8) texture { tx_cadeira } rotate <0,0,90> translate <3*un_padrao,-10*un_padrao,0> } object{ bloco(3,2) texture { tx_cadeira } rotate <0,0,135> translate <5.5*un_padrao,-9*un_padrao,0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 30.0; #declare dir_camera = < 1.00, 4.0, 30 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)