//Eduardo Hideki Tanaka RA: 970563 // Projeto de MC930: Predio da DAC //background{ color rgb < 0.22, 0.20, 0.82 > } light_source { < -12.00, 57.00, -60.00 > color rgb < 1.10, 1.10, 1.10 > } camera { location < -90.00, 16.00, -100.00 > look_at < -10.00, 5.00, 8.00 > } //plano que servira de base plane { y, 0 texture { pigment { checker color rgb <0.1, 0.85, 0.3> color rgb <0.2, 0.9, 0.2> } } } //plano que da a impressao do ceu plane { y, 500 texture { pigment { color rgb <0.22, 0.3, 0.82> } finish { ambient 1 diffuse 0} } texture { pigment { bozo turbulence .5 color_map { [0 color rgb <1, 1, 1>] [1 color rgb <1, 1, 1> filter 1] } } finish { ambient 1 diffuse 0 } scale <1000, 250, 250> rotate <5, 45, 0> } } //constantes #declare w = 3; //numero de janelas em cada coluna do predio #declare c = 8; //numero de "colunas" em cada lado #declare cm = 2; //numero de "colunas do meio" #declare a = 2; //numero de andares #declare ej = 0.33; //espaco entre as janelas //primeiro, declaracao de texturas #declare tinta_branca = texture { pigment { color rgb <1.00, 1.00, 1.00> } finish { diffuse 0.6 specular 0.4 ambient 0.1 phong 1 } } #declare tinta_cinza = texture { pigment { color rgb < 0.85, 0.85, 0.85 > } finish { diffuse 0.5 specular 0.5 ambient 0.1 phong 1} } #declare tinta_preta = texture { pigment { color rgb < 0.00, 0.00, 0.10 > } finish { diffuse 0.9 ambient 0.1 } } #declare tinta_vermelha = texture { pigment { color rgb <0.90, 0.46, 0.40> } finish { diffuse 0.9 specular 0.4 ambient 0.01 } normal { brick 0.25 scale 0.3 } } //esta textura sera usada em janelas #declare text_jan = texture { pigment { color rgbf <0.50, 0.50, 1.00, 1.00> } finish { diffuse 0.9 ambient 0.3 reflection 0.20 phong 1 } } //uma outra sugestao para ser usado em janelas, mas nao utilizado ainda #declare tinta_jan = material { texture { pigment { color rgbf <0.4, 0.4, 0.45, 0.9> } normal { bumps , 0.2 scale <0.5, 0.5, 5.0> } finish { diffuse 0.2 specular 0.9 ambient 0.1 roughness 0.06 phong 1.0 phong_size 50.0 reflection 0.15} } interior { ior 1.1 } } #declare tinta_pastel = texture { pigment { color rgb <1.00, 1.00, 0.75> } finish { diffuse 0.6 specular 0.4 ambient 0.1 } } //agora, as declaracoes de pequenas partes do predio //pequena coluna branca #declare ladoB = box { <-0.5, -5, -1>, <0.5, 5, 1> texture { tinta_branca } } //este e o bloco dos tijolos #declare ladoT = box { <-1.5, -5, -1>, <1.5, 5, 1> texture { tinta_vermelha } } //este bloco define uma janela pequena #declare janelaP = box { <-1.9, -0.35, -0.2>, <1.9, 0.35, 0.2> texture { text_jan } } //e este outro bloco uma janela grande #declare janelaG = object { janelaP scale <1, 2.057, 1> } //o pequeno box abaixo existe entre cada andar do predio, entre as janelas #declare divisor = box { <-1.9, -1.25, -0.05>, <1.9, 1.25, 0.05> texture { tinta_pastel } rotate <20, 0, 0> } //neste bloco virao as janelas e/ou portas #declare ladoJ = box { <-2, -5, -1>, <2, 5, 1> texture { tinta_cinza } } //aqui, um bloco com as janelas para os segundo e terceiro andares #declare ladoJJ3 = merge { object { ladoJ } object { janelaP translate <0, 5-0.35-ej, -1.05> } object { janelaG translate <0, 5-0.72-0.7-2*ej, -1.05> } object { janelaP translate <0, 5-0.35-1.44-0.7-3*ej, -1.05> } object { janelaG translate <0, 5-0.72-0.7-1.44-0.7-4*ej, -1.05> } object { janelaP translate <0, 5-0.35-1.44-0.7-1.44-0.7-5*ej, -1.05> } object { divisor translate <0, 5-1.25-0.7-1.44-0.7-1.44-0.7-6*ej, -1.35> } } //para a coluna central do predio, onde esta a escada (internamente), deve-se usar uma proporcao menor //dos blocos #declare ladoBM = object { ladoB scale <0.85, 0.9, 1> } #declare ladoTM = object { ladoT scale <0.85, 0.9, 1> } #declare ladoJM = object { ladoJJ3 scale <0.85, 0.9, 1> } //este e o bloco principal de 1/2 predio #declare blocoS = box { <-36, -15, -15>, <41, 15, 15> //36 era a distancia x anterior. 41 e para os limites iniciais e finais do predio texture { tinta_branca } } //parte do telhado #declare telhadoS = object { blocoS scale <1, 0.10, 1> } #declare blocoM = box { <-6.375, -4.5, -15>, <6.375, 4.5, 15> texture { tinta_branca } } //outra parte do telhado #declare telhadoM = object { blocoM scale <1,0.5,1> } //estes sao pequenos detalhes no teto do predio #declare ps_antena = box { <-0.5, -1.2, -0.5> <0.5, 1.2, 0.5> texture { tinta_branca } } //esta declaracao equivale a fachada coluna central (das escadas do predio) #declare fcentral = union { object { ladoBM translate <0.425, 4.5, 5> } object { ladoJM translate <1.7+0.85, 4.5, 5> } object { ladoBM translate <0.425+3.4+0.85, 4.5, 5> } object { ladoTM translate <1.275+0.85+3.4+0.85, 4.5, 5> } object { ladoBM translate <0.425+2.55+0.85+3.4+0.85, 4.5, 5> } object { ladoJM translate <1.7+0.85+2.55+0.85+3.4+0.85, 4.5, 5> } object { ladoBM translate <0.425+3.4+0.85+2.55+0.85+3.4+0.85, 4.5, 5> } } //abaixo esta toda a coluna central do predio #declare colc = merge { #declare i = 1; #while (i <=w ) object { fcentral translate <0, 9*i, 0> } object { blocoM translate <6.375, 4.5+9*i, 20> } #declare i = i+1; #end //end while object { telhadoM translate <6.375, 2.25+9*i, 20> } } //isto equivale a 1/3 da fachada de uma coluna #declare fachada13 = union { object { ladoB translate <0.5, 5, 5> } object { ladoT translate <1.5+1, 5, 5> } object { ladoB translate <0.5+3+1, 5, 5> } object { ladoJJ3 translate <2+1+3+1, 5, 5> } } //este pedaco e o que limita o predio #declare fincol = union { object { ladoB translate <0.5, 5, 5> } object { ladoT translate <1.5+1, 5, 5> } object { ladoB translate <0.5+3+1, 5, 5> } } //aqui temos a fachada inteira de um lado do predio #declare fachadaL = union { #declare ii = 1; #while (ii<=c) object { fachada13 translate <9*ii, 0, 0> } #declare ii = ii+1; #end //end while object { fincol translate <9*ii, 0, 0> } } //este e um lado do predio onde ficam as salas #declare parteE = union { merge { #declare ii = 0; #while (ii } #declare ii = ii+1; #end //end while } object { blocoS translate <36+9, 15, 19.01> } object { telhadoS translate <36+9, 1.5+30, 19.01> } } //a cena, finalmente, e mostrada abaixo union { object { colc translate <-3.1, -9, 6> } object { parteE } object { parteE scale <-1, 1, 1> translate <6.4, 0, 0> } }