//A linha do trem tem um raio tao grande que se torna uma reta... //(Eu fiz uma reta...pois temos muito pouco tempo para fazermos nossos trabalhos.) // Exemplo de arquivo de descricao de cena para POV-ray // Last edited by Botuca at 19 de Outubro de 2004 // ====================================================================== // CÂMERA camera { location < 90.00, 20.00, 20.00 > // Posição do observador. right -1.00*x // Largura RELATIVA da imagem. up 0.5*y // Altura RELATIVA da imagem. sky z // Qual direção é "para cima"? look_at < 0.00, 0.00, 0.00 > // Para onde a câmera está apontando. } // Nota: os parâmetros "right" e "up" devem ter a mesma proporção // que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile. // ====================================================================== // FONTES DE LUZ light_source { 10 * < +50.0, +30.0, +50.0 > // Posição da lâmpada. color rgb 1.2 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < +50.0, -10.0, +10.0 > // Posição da lâmpada. color rgb 0.8 * < 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #declare tinta_A = texture { pigment { color rgb < 0.90, 0.80, 0.60 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_B = texture { pigment { color rgb < 1.00, 0.80, 0.10 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_C = texture { pigment { color rgb < 0.40, 0.80, 1.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_D = texture { pigment { color rgb < 0.10, 0.80, 1.00 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_Teto = texture { pigment { color rgb < 0.90, 0.30, 0.30 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare tinta_Cargo = texture { pigment { color rgb < 0.40, 0.30, 0.50 > } finish { diffuse 0.5 specular 0.5 roughness 0.005 ambient 0.1 } } #declare cor_esmeralda = <0.2 0.5 0.4>; #declare tx_esmeralda = texture { finish { ambient 0.1 diffuse 0.2 reflection 0.04 specular 1 roughness 0.003 } pigment { color cor_esmeralda filter 1 } } #declare cor_ruby = <0.6 0.4 0.3>; #declare tx_ruby = texture { finish { ambient 0.1 diffuse 0.2 reflection 0.04 specular 1 roughness 0.003 } pigment { color cor_ruby filter 1 } } #declare cor_prata = <0.7 0.7 0.8>; #declare tx_prata = texture { pigment { rgb cor_prata } finish { ambient 0.05 diffuse 0.1 reflection cor_prata specular 0.3 roughness 0.7 } } #declare cor_ouro = < 1.00, 0.80, 0.10 >; #declare tx_ouro = texture { pigment { rgb cor_ouro } finish { ambient 0.05 diffuse 0.05 reflection cor_ouro specular 0.20 roughness 0.05 } } #declare base = torus { 3,0.5 texture { tx_ouro } } #declare roda = cylinder { <0,-0.1,0> <0,+0.1,0> 0.4 texture { tx_ouro } interior { ior 1.5 } } #declare rodas = union { #declare i = 0; #while (i < 5) object { roda translate < -2.5 + 1.2*i, 0, 0 > } #declare i = i + 1; #end } #declare vkernel = difference { box { <-3.5, 1, +2.5> <+3.5, -1, -0.3> texture { tinta_A } } box { <-3.0, 1.2, +0.3> <+3.0, 0.7, -0.4> texture { tinta_A } } box { <-3.0, -1.2, +0.3> <+3.0, -0.7, -0.4> texture { tinta_A } } box { <-3.6, 1.2, +2.51> <-3.0, -1.2, 1> texture { tinta_A } } box { <+3.6, 1.2, +2.51> <+3.0, -1.2, 1> texture { tinta_A } } box { <-2.8, 1, +2.51> <+2.8, -1, 0.32> texture { tinta_A } } } #declare teto = box { <3.7, 1.2, 2.6> <-3.7, -1.2, 2.4> texture { tinta_Teto } } #declare janela_r = cylinder { < 0, +1.1, 0> < 0, -1.1, 0> 0.3 texture { tinta_C } } #declare janela_q = box { <+0.3, +1.1, +0.3> <-0.3, -1.1, -0.3> texture { tinta_D } } #declare janelas = union { #declare gerador = seed(123456); #declare i = 0; #while(i<6) #declare r = 10*rand(gerador); #if (r > 5) object { janela_r translate < -2.5 + i, 0, 1.8> } #else object { janela_q translate < -2.5 + i, 0, 1.8> } #end #declare i = i + 1; #end } #declare vagao_sj = union { object {vkernel} object {rodas translate < 0, +1, 0,>} object {rodas translate < 0, -1, 0,>} object {teto} } #declare vagao_carga = union { object {vkernel} object {rodas translate < 0, +1, 0,>} object {rodas translate < 0, -1, 0,>} } #declare vagao_carga_final = object { vagao_carga translate < 0, +30, 0>} #declare vagao_pass = difference { object { vagao_sj } object { janelas } } #declare vagao_pass_final = object { vagao_pass translate < 0, +30, 0>} #declare trem_sem_maquina = union { #declare i = 0; #while (i<13) #declare r = 10*rand(gerador); #if (r > 5) object { vagao_pass_final rotate 18*i*z } #else object { vagao_carga_final rotate 18*i*z } #end #declare i = i + 1; #end } #declare mkernel = difference { box { <-4.5, 1, +2.5> <+4.0, -1, -0.3> texture { tinta_A } } box { <-2.5, 1.2, +0.3> <+3.5, 0.7, -0.4> texture { tinta_A } } box { <-2.5, -1.2, +0.3> <+3.5, -0.7, -0.4> texture { tinta_A } } box { <-4.6, 1.2, +2.51> <-4.2, -1.2, 1> texture { tinta_A } } box { <+4.6, 1.2, +2.51> <-0.5, -1.2, 0.5> texture { tinta_A } } box { <-4.0, 0.9, +2.51> <-0.9, -0.9, 1> texture { tinta_A } } box { <-3.2, 1.2, 2.3> <-2.2, -1.2, 1.3> texture { tinta_A } } } #declare caldeira = union { cylinder { <3.9, 0, 1.2> <-0.5, 0, 1.2> 0.8 texture { tinta_A } } cylinder { <2.5, 0, 3.3> <2.5, 0, 1.8> 0.38 texture { tinta_A } } } #declare tetinho = box { <-0.5, 1.0, 2.7> <-4.8, -1.0, 2.4> texture { tinta_Teto } } #declare maquina = union { object {mkernel} object {rodas translate < 0.5, +1, -0.1>} object {rodas translate < 0.5, -1, -0.1>} object {caldeira} object {tetinho } } #declare trilho = union { difference { cylinder { <0, 0, -0.5> <0, 0, -0.7> 31.3 texture {tinta_D} } cylinder { <0, 0, -0.49> <0, 0, -0.71> 31 texture {tinta_D} } } difference { cylinder { <0, 0, -0.5> <0, 0, -0.7> 29.3 texture {tinta_D} } cylinder { <0, 0, -0.49> <0, 0, -0.71> 29 texture {tinta_D} } } } #declare station = union { difference { box { <20,10,10> <-20,-10,0> texture {tinta_Cargo} } box { <21,0,6> <-21,-11,0.01> texture {tinta_Cargo} } } } #declare tt = clock; #if (tt<0.20) #declare posicao = 1100*tt*tt; #else #if (tt<0.80) #declare posicao = -44+440*tt; #else #declare posicao = 360-1300*(1-tt)*(1-tt); #end #end #declare trem_total= union { object {maquina translate <0, 30, 0> rotate -20*z} object { trem_sem_maquina } } union { object {trem_total rotate -1*posicao*z} object {trilho} object { station translate <0,33,-0.6>} }