// Lab02 - Eduardo Uemura Okada ra001606 // Last edited on 2003-10-14 21:21:05 by stolfi // ====================================================================== // CÂMERA #declare ctr = < 0.00, 5.00, 0.00 >; #declare camdir = < 10.00, 20.00, -50.00 >; camera { location ctr + 0.80*camdir // Posição do observador. right -0.60*x // Largura RELATIVA da imagem. up 0.80*y // Altura RELATIVA da imagem. sky y // Qual direção é "para cima"? look_at ctr // 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 * < -10, 25, -20 > // Posição da lâmpada. color rgb 1.2*< 1.00, 1.00, 1.00 > // Intensidade e corda luz. } light_source { 10 * < +10, 15, -20 > // Posição da lâmpada. color rgb 0.6*< 1.00, 1.00, 1.00 > // Intensidade e corda luz. } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.65, 0.70, 0.75 > } #declare cor_cinza_escuro = texture { pigment { color rgb < 0.50, 0.50, 0.50 > } finish { diffuse 0.8 specular 0.5 roughness 0.01 ambient 0.1 } } #declare cor_cinza_claro = texture { pigment { color rgb < 0.80, 0.80, 0.80 > } finish { diffuse 0.8 specular 0.5 roughness 0.01 ambient 0.1 } } // Cor "quase preta" #declare cor_preto = texture { pigment { color rgb < 0.35, 0.35, 0.35 > } finish { diffuse 0.8 specular 0.2 roughness 0.01 ambient 0.1 } } #declare cor_branco = texture { pigment { color rgb < 1.00, 1.00, 1.00 > } finish { diffuse 0.8 specular 0.5 roughness 0.01 ambient 0.1 } } // Construcao do torax // ------------------- #declare torax_a = difference { cone { < 0, 12, 0 >, 5 < 0, 8, 0 > , 3 texture { cor_cinza_escuro } } box { < -6, 7, -5 > < 6, 13, -2 > } } #declare torax_b = difference { object { torax_a } box { < -6, 7, 5 > < 6, 13, 2 > } texture { cor_cinza_escuro } } #declare torax_c = union { object { torax_b } cylinder { < 0, 5, 0 >, < 0, 8, 0 >, 3 texture { cor_preto } } } #declare torax_final = union { object { torax_c } cone { < 0, 5, 0 >, 3 < 0, 3, 0 >, 1 texture { cor_cinza_escuro } } } // Construcao dos bracos // --------------------- #declare braco_esquerdo_a = union { sphere { < -5, 11, 0 >, 1 texture { cor_cinza_claro } } cylinder { < -5, 10, 0 >, < -5, 6, 0 >, 1 texture { cor_cinza_escuro } } } #declare braco_esquerdo_b = union { object { braco_esquerdo_a } sphere { < -5, 5, 0 >, 1 texture { cor_cinza_claro } } } #declare braco_esquerdo_final = union { object { braco_esquerdo_b } cylinder { < -5, 4, 0 >, < -5, 1, 0 >, 1 texture { cor_cinza_escuro } } } #declare braco_direito_final = object { braco_esquerdo_final translate < 10, 0, 0 > } // Construcao das maos // ------------------- #declare mao_esquerda_final = box { < -7, -1, -1 > < -4, 1, 1 > texture { cor_cinza_claro } } #declare mao_direita_final = object { mao_esquerda_final translate < 11, 0, 0 > } // Construcao das pernas // --------------------- #declare perna_esquerda_a = union { sphere { < -2, 4, 0 >, 1 texture { cor_cinza_claro } } cylinder { < -2, 3, 0 >, < -2, -3, 0 >, 1 texture { cor_cinza_escuro } } } #declare perna_esquerda_final = union { object { perna_esquerda_a } sphere { < -2, -4, 0 >, 1 texture { cor_cinza_claro } } cylinder { < -2, -5, 0 >, < -2, -10, 0 >, 1 texture { cor_cinza_escuro } } } #declare perna_direita_final = object { perna_esquerda_final translate < 4, 0, 0 > } // Construcao dos pes // ------------------ #declare pe_esquerdo_final = union { box { < -4, -12, 1.5 > < -1, -10, -2 > texture { cor_cinza_escuro } } box { < -4, -12, -2 > < -1, -11, -3 > texture { cor_cinza_claro } } } #declare pe_direito_final = object { pe_esquerdo_final translate < 5, 0, 0 > } // Construcao da cabeca // -------------------- #declare cabeca = union { // Mascara da boca intersection { sphere { < 0, 16, 0 >, 3 texture { cor_cinza_escuro } } cone { < 0, 16, 0 >, 3.2 < 0, 14, 0 >, 2 texture { cor_preto } } } // Parte superior da cabeca difference { sphere { < 0, 26, 0 >, 3 texture { cor_cinza_escuro } } box { < -4, 22, -4 > < 4, 26, 4 > } texture { cor_cinza_escuro } translate < 0, -10, 0 > } // Pescoco cylinder { < 0, 14, 0 >, < 0, 12, 0 >, 2 texture { cor_preto } } // Antenas box { < -4, 16, -1 > < -3, 19, 1 > texture { cor_cinza_claro } } box { < 3, 16, -1 > < 4, 19, 1 > texture { cor_cinza_claro } } // Olhos // O rotate deixa os olhos "levemente" enviesados box { < -2, 17, 0 > < -1, 17.1, -4 > texture { cor_branco } rotate z*-2 } box { < 2, 17, 0 > < 1, 17.1, -4 > texture { cor_branco } rotate z*2 } } // Aqui está a cena, finalmente: #declare cena = union { object { cabeca } object { torax_final } object { braco_esquerdo_final } object { mao_esquerda_final } object { perna_esquerda_final } object { pe_esquerdo_final } object { perna_direita_final } object { pe_direito_final } object { braco_direito_final } object { mao_direita_final } } // O scale da uma impressao um pouco mais "robusta" do robo (comeu muitos parafusos) object { cena scale <1.1, 1, 1> }