// MC930 - Laboratorio 8 // Douglas Gardim RA: 008506 // // ====================================================================== // CÂMERA camera { location < 110.00, 80.00, 200.00 > // Posição do observador. right -0.75*x // Largura RELATIVA da imagem. up 1.00*y // Altura RELATIVA da imagem. sky y // Qual direção é "para cima"? look_at < 0.00, 25.00, 0.00 > // Para onde a câmera está apontando. angle 20 } // 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 * < +15.0, +5.0, +5.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, +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. } // RANDOM #declare g = seed(23443); // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.75, 0.80, 0.85 > } #declare texturaTronco = texture { pigment { color rgb <0.3,0.3,0.1> } }; #declare texturaFolha = texture { pigment { color rgb <0,0.9,0> } }; #declare MAX_LEVELS = 6; #macro RandMM(l1, l2) rand(g)*(l2-l1)+l1 #end #macro Arvore(level, h, r, angZ, angY) object { union { #local hC = h*0.5*((MAX_LEVELS-level)/MAX_LEVELS) + h*0.5; #local rC = 0.75*r*((MAX_LEVELS-level)/MAX_LEVELS) + 0.25*r; cylinder { <0,0,0>,<0,hC,0>,rC texture {texturaTronco} } sphere { #if (level = MAX_LEVELS) <0,hC,0>,rC*6 texture {texturaFolha} #else <0,hC,0>,rC*1.4 texture {texturaTronco} #end } #if (level < MAX_LEVELS) #local ramos = RandMM(0,10); #local i = 0; #while (i < ramos) object { Arvore((level+1), hC, rC, RandMM(25,50), RandMM(0,360)) translate <0,hC,0> } #local i = i + 1; #end #end } rotate angZ*z rotate angY*y } #end // Aqui está a cena, finalmente: plane {y, 0 texture { pigment{checker <0.2,0.2,0.2>,<0.3,0.3,0.3>} finish {ambient 0.2 diffuse 0.8 reflection 0.05} scale 30.0 } } object { Arvore(1, 25, 2, 0, 0) }