// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2017-05-07 20:10:09 by stolfilocal // ====================================================================== // CORES E TEXTURAS background { color rgb < 0.74, 0.84, 0.92 > } #declare roleta = seed(11031997); #declare tx_azul = texture { pigment { color rgb <0.34, 0.45, 0.6> } finish { diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_vermelho = texture { pigment { color rgb <1, 0.37, 0.34> } finish { diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #macro camara (tamanho, textura) union{ box{ <-1 * tamanho, -2 * tamanho, -1.5 * tamanho>, < 1 * tamanho, 2 * tamanho, 1.5 * tamanho> } texture{ textura } } #end #macro tunel (inicio, fim, textura) union{ cylinder{ inicio, fim, 1 } texture { textura } } #end #macro mina (M, N) union{ #declare posicoes = array[N]; #declare tamanhos = array[N]; #declare i = 0; #while (i < N) #declare tamanhos[i] = 2 + 3 * rand(roleta); #declare posicoes[i] = <100 + 500 * rand(roleta), 100 + 500 * rand(roleta), 100 + 500 * rand(roleta)>; object{ camara(tamanhos[i], tx_azul) translate posicoes[i] } #declare i = i + 1; #end #declare tuneis = array[N][N]; #declare i = 0; #while (i < M) #declare origem = int((N - 1) * rand(roleta)); #declare destino = int((N - 1) * rand(roleta)); // evita tunel saindo e chegando na mesma camara #if (origem = destino) #if (destino = 0) #declare destino = 1; #else #declare destino = destino - 1; #end #end object{ tunel(posicoes[origem], posicoes[destino], tx_vermelho) } #declare i = i + 1; #end } #end // Aqui está a cena, finalmente: union { mina(100, 50) } #include "camlight.inc" #declare centro_cena = < 7.00, 10.00, 0.00 >; #declare raio_cena = 700.0; #declare dir_camera = < 8.00, 8.00, 10.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)