// 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_tronco = texture{ pigment{ color rgb < 0.65, 0.16, 0.16 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_chao = texture{ pigment{ color rgb < 0.15, 0.16, 0.16 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_folha = texture{ pigment{ color rgb < 0.13, 0.55, 0.13 > } finish{ diffuse 0.9 ambient 0.8 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0, 0, 0 >, color rgb < 1, 1, 1 > filter 0.9} finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare altura_inicial = 40; #declare profundidade = 4; #declare chao = box{ <-50,-50,-1>, <+50,+50,0> texture{ tx_chao } } #macro esfera(raio) sphere { <0, 0, 0>, raio texture {tx_folha} } #end #macro meu_cilindro(tamanho) union { object { esfera(1.0) translate<0, 0, 0>} cylinder { <0, 0, 0>, <0, 0, tamanho>, 1.0 texture { tx_folha } } object { esfera(1.0) translate<0, 0, tamanho>} } #end #macro pe(tamanho) object { meu_cilindro(tamanho) } // pe #end #macro batata(tamanho) object { meu_cilindro(tamanho) } // batata #end #macro coxa(tamanho) object { meu_cilindro(tamanho) } // coxa #end #macro mao(tamanho) object { meu_cilindro(tamanho) } // mao #end #macro antebraco(tamanho) object { meu_cilindro(tamanho) } // antebraco #end #macro braco(tamanho) object { meu_cilindro(tamanho) } // braco #end #macro batata_coelho(b, c) #local angulo_pe = -90 + a; #local angulo_pe_batata = 45 + b; #local tamanho_pe = 2; #local tamanho_batata = 4; union { object {pe(tamanho_pe) rotate} object {batata(tamanho_batata) rotate} translate<0, -cos((pi/180) * angulo_pe_batata) * tamanho_batata, -sin((pi/180) * angulo_pe_batata) * tamanho_batata> } #end #macro perna_coelho (a, b, c) #local angulo_coxa_batata = 45 + c; #local tamanho_coxa = 3; union { object {batata_coelho(b, c)} object { coxa(tamanho_coxa) rotate } translate<0, cos((pi/180) * angulo_coxa_batata) * tamanho_coxa, -sin((pi/180) * angulo_coxa_batata) * tamanho_coxa> } #end #macro antebraco_coelho (b, c) #local angulo_mao = -90 + a; #local angulo_mao_antebraco = 45 + b; #local tamanho_mao = 1; #local tamanho_antebraco = 2; union { object {mao(tamanho_mao) rotate} object {antebraco(tamanho_antebraco) rotate} translate<0, -cos((pi/180) * angulo_mao_antebraco) * tamanho_antebraco, -sin((pi/180) * angulo_mao_antebraco) * tamanho_antebraco> } #end #macro braco_coelho (a, b, c) #local angulo_braco_antebraco = 45 + c; #local tamanho_braco = 2; union { object {antebraco_coelho(b, c)} object { braco(tamanho_braco) rotate } translate<0, cos((pi/180) * angulo_braco_antebraco) * tamanho_braco, -sin((pi/180) * angulo_braco_antebraco) * tamanho_braco> } #end #macro orelha() union { object{ esfera(1.0) } scale<2, 1, 3> } #end #macro cabeca(raio) union { object{ esfera(raio) } //object{ orelha() translate<0, 0, raio/2> } //object{ orelha() translate<0, 0, raio/2> } } #end #macro corpo(altura_corpo) union { object{ cabeca(3) translate<0, 0, altura_corpo + 3 - 1> } object{ esfera(1) scale<4, 3, altura_corpo> } // corpo } #end #macro coelho(pda, pdb, pdc, pea, peb, pec, bda, bdb, bdc, bea, beb, bec) union { #local altura_corpo = 8; object{ corpo(altura_corpo) } object{ perna_coelho( pea, peb, pec) translate<-4, 0, -(3/5) * altura_corpo> } object{ perna_coelho( pda, pdb, pdc) translate<+4, 0, -(3/5) * altura_corpo> } object{ braco_coelho( bea, beb, bec) translate<-4, 0, +(3/5) * altura_corpo> } object{ braco_coelho( bda, bdb, bdc) translate<+4, 0, +(3/5) * altura_corpo> } } #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object { eixos(10.0) } //object{ chao } object {coelho(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)} object {coelho(15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15) translate<0, 20, 0>} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 50.0; #declare dir_camera = < 100.00, 1.00, 1.00 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)