//Eduardo Hideki Tanaka RA: 970563 // Projeto de MC930: Predio da DAC //background{ color rgb < 0.22, 0.20, 0.82 > } light_source { < -12.00, 17.00, -60.00 > color rgb < 1.10, 1.10, 1.10 > } camera { location < -12.00, 16.00, -90.00 > look_at < 14.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 //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.1 } normal { dents 0.15 scale 0.3 } } //esta textura sera usada em janelas #declare tinta_jan = texture { pigment { color rgb <0.10, 0.00, 0.10> } finish { diffuse 0.9 ambient 0.3 phong 1 } normal { bumps 0.01 scale 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.5, -0.2>, <1.9, 0.5, 0.2> texture { tinta_jan } } //e este outro bloco uma janela grande #declare janelaG = object { janelaP scale <1, 2.5, 1> } //neste bloco virao as janelas e/ou portas #declare ladoJ = box { <-2, -5, -1>, <2, 5, 1> texture { tinta_cinza } } //aqui, um bloco com suas janelas #declare ladoJJ = merge { object { ladoJ } object { janelaP translate <0, -3.75, -1.05> } object { janelaG translate <0, -2.6, -1.05> } object { janelaG translate <0, 0.2, -1.05> } object { janelaP translate <0, 2.9, -1.05> } } //para a coluna central do predio, onde esta a escada, 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 { ladoJ scale <0.85, 0.9, 1> } #declare blocoS = box { <-36, -15, -15>, <36, 15, 15> texture { tinta_branca } } #declare blocoM = box { <-5.95, -4.5, -15>, <5.95, 4.5, 15> 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 { ladoJM translate <1.7+2.55+0.85+3.4+0.85, 4.5, 5> } object { ladoBM translate <0.425+3.4+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 <5.95, 4.5+9*i, 20> } #declare i = i+1; #end //end while } //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 { ladoJ translate <2+1+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 } #declare parteE = merge { merge { #declare ii = 0; #while (ii } #declare ii = ii+1; #end //end while } object { blocoS translate <36+9, 15, 20> } } //a cena, finalmente, e mostrada abaixo union { object { colc translate <-1.75, -9, 6> } object { parteE } object { parteE scale <-1, 0, 0> translate <7.75, 0, 0> } }