// Exemplo de arquivo de descricao de ANIMAÇÃO para POV-ray // Last edited on 2009-09-24 15:40:22 by stolfi #macro quadro(tt) // Gera o quadro do filme (cena, luzes e câmera) // para o instante {tt} -- um número real entre 0 e 1. // ====================================================================== // CÂMERA camera { location < -10.00, -8.00, 5.00 > // Posição do observador. right -1.00*x // Largura RELATIVA da imagem. up 0.75*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. } // ====================================================================== // DESCRIÇÃO DA CENA background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #macro interpola(ta, va, tb, vb, tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va + s*vb) #end #declare tx_vermelho = texture{ pigment{ color rgb < 1.00, 0.0, 0.10 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_amarelo = texture{ pigment{ color rgb < 1.00, 1.0, 0.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_parede = texture{ pigment{ color rgb < 0.65, 0.65, 0.65 > filter 0.70} } #declare tx_timao = texture{ pigment{ image_map{ jpeg "foto.jpg" } scale 1 rotate <0,90,0> } } #declare tx_bb = texture{ pigment{ image_map{ jpeg "bb.jpg" } scale 1 rotate <0,90,00> } } #macro timao() union{ object{ box{ <1.01,0,1>, <1.01,1,1.9> texture{ tx_timao} rotate 90*x } } } #end #local deformAchatado = 4; /////////////////////////// //BICO #local bico12 = <0,-4,1>; #local bico13 = <0,-5,0.5>; #local bico14 = <0,-6,0>; #local bico22 = <0.8+deformAchatado,-4,0.8>; #local bico23 = <0.5+deformAchatado,-5,0.5>; #local bico24 = <0+deformAchatado,-6,0>; #local bico32 = <1+deformAchatado,-4,0>; #local bico33 = <0.5+deformAchatado,-5,0>; #local bico34 = <0+deformAchatado,-6,0>; #local bico42 = <0,-4,-1>; #local bico43 = <0,-5,-0.5>; #local bico44 = <0,-6,0>; //////////////////////////// //CORPO #local ponto12 = <0,1,2>; #local ponto13 = <0,1,2>; #local ponto22 = <1.5+deformAchatado,-1,1>; #local ponto23 = <1.5+deformAchatado,1,1>; #local ponto32 = <1.5+deformAchatado,-1,0>; #local ponto33 = <1.5+deformAchatado,1,0>; #local ponto42 = <0,-1,-1>; #local ponto43 = <0,1,-1>; //////////////////////////// //RABO #local rabo12 = <0,4,2>; #local rabo13 = <0,4.5,4>; #local rabo14 = <0,5,3>; #local rabo22 = <1.5+deformAchatado,4,1.5>; #local rabo23 = <1+deformAchatado,4.5,3>; #local rabo24 = <0+deformAchatado,5,2>; #local rabo32 = <1.5+deformAchatado,4,0.4>; #local rabo33 = <1+deformAchatado,4.5,1>; #local rabo34 = <0+deformAchatado,5,0>; #local rabo42 = <0,4,-1>; #local rabo43 = <0,4.5,-1>; #local rabo44 = <0,5,-1>; //ligacao corpo bico #local bico11 = (bico12+ponto12)/2; #local bico21 = (bico22+ponto22)/2; #local bico31 = (bico32+ponto32)/2; #local bico41 = (bico42+ponto42)/2; #local ponto11 = bico11; #local ponto21 = bico21; #local ponto31 = bico31; #local ponto41 = bico41; //ligacao corpo rabo #local rabo11 = (rabo12+ponto13)/2; #local rabo21 = (rabo22+ponto23)/2; #local rabo31 = (rabo32+ponto33)/2; #local rabo41 = (rabo42+ponto43)/2; #local ponto14 = rabo11; #local ponto24 = rabo21; #local ponto34 = rabo31; #local ponto44 = rabo41; #local raio = 0.01; // Aqui está a cena, finalmente: #include "eixos.inc" #include "retalho.inc" // Aqui está a cena union{ //eixos object{ eixos(3.00) } union{ object { retalho( ponto11, ponto12, ponto13, ponto14, ponto21, ponto22, ponto23, ponto24, ponto31, ponto32, ponto33, ponto34, ponto41, ponto42, ponto43, ponto44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( bico11, bico12, bico13, bico14, bico21, bico22, bico23, bico24, bico31, bico32, bico33, bico34, bico41, bico42, bico43, bico44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( rabo11, rabo12, rabo13, rabo14, rabo21, rabo22, rabo23, rabo24, rabo31, rabo32, rabo33, rabo34, rabo41, rabo42, rabo43, rabo44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } //asa object{ box{ <0,-1,0>,<4, 0, 0.2> } texture{tx_vermelho} } } //outro lado union{ object { retalho( ponto11, ponto12, ponto13, ponto14, ponto21, ponto22, ponto23, ponto24, ponto31, ponto32, ponto33, ponto34, ponto41, ponto42, ponto43, ponto44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( bico11, bico12, bico13, bico14, bico21, bico22, bico23, bico24, bico31, bico32, bico33, bico34, bico41, bico42, bico43, bico44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( rabo11, rabo12, rabo13, rabo14, rabo21, rabo22, rabo23, rabo24, rabo31, rabo32, rabo33, rabo34, rabo41, rabo42, rabo43, rabo44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } //asa object{ box{ <0,-1,0>,<4, 0, 0.2> } texture{tx_vermelho} } scale -1 rotate 180*x } } //comprido ///////////////////////////////////////////////////////////////////////////////////////////////////// #local deformCompridoNeg = -4; #local deformCompridoPos = 6; /////////////////////////// //BICO #local bico12 = <0,-4+deformCompridoNeg,1>; #local bico13 = <0,-5+deformCompridoNeg,0.5>; #local bico14 = <0,-6+deformCompridoNeg,0>; #local bico22 = <0.8,-4+deformCompridoNeg,0.8>; #local bico23 = <0.5,-5+deformCompridoNeg,0.5>; #local bico24 = <0,-6+deformCompridoNeg,0>; #local bico32 = <1,-4+deformCompridoNeg,0>; #local bico33 = <0.5,-5+deformCompridoNeg,0>; #local bico34 = <0,-6+deformCompridoNeg,0>; #local bico42 = <0,-4+deformCompridoNeg,-1>; #local bico43 = <0,-5+deformCompridoNeg,-0.5>; #local bico44 = <0,-6+deformCompridoNeg,0>; //////////////////////////// //CORPO #local ponto12 = <0,1+deformCompridoPos,2>; #local ponto13 = <0,1+deformCompridoPos,2>; #local ponto22 = <1.5,-1,1>; #local ponto23 = <1.5,1+deformCompridoPos,1>; #local ponto32 = <1.5,-1,0>; #local ponto33 = <1.5,1+deformCompridoPos,0>; #local ponto42 = <0,-1+deformCompridoNeg,-1>; #local ponto43 = <0,1+deformCompridoPos,-1>; //////////////////////////// //RABO #local rabo12 = <0,4+deformCompridoPos,2>; #local rabo13 = <0,4.5+deformCompridoPos,4>; #local rabo14 = <0,5+deformCompridoPos,3>; #local rabo22 = <1.5,4+deformCompridoPos,1.5>; #local rabo23 = <1,4.5+deformCompridoPos,3>; #local rabo24 = <0,5+deformCompridoPos,2>; #local rabo32 = <1.5,4+deformCompridoPos,0.4>; #local rabo33 = <1,4.5+deformCompridoPos,1>; #local rabo34 = <0,5+deformCompridoPos,0>; #local rabo42 = <0,4+deformCompridoPos,-1>; #local rabo43 = <0,4.5+deformCompridoPos,-1>; #local rabo44 = <0,5+deformCompridoPos,-1>; //ligacao corpo bico #local bico11 = (bico12+ponto12)/2; #local bico21 = (bico22+ponto22)/2; #local bico31 = (bico32+ponto32)/2; #local bico41 = (bico42+ponto42)/2; #local ponto11 = bico11; #local ponto21 = bico21; #local ponto31 = bico31; #local ponto41 = bico41; //ligacao corpo rabo #local rabo11 = (rabo12+ponto13)/2; #local rabo21 = (rabo22+ponto23)/2; #local rabo31 = (rabo32+ponto33)/2; #local rabo41 = (rabo42+ponto43)/2; #local ponto14 = rabo11; #local ponto24 = rabo21; #local ponto34 = rabo31; #local ponto44 = rabo41; #local raio = 0.01; // Aqui está a cena, finalmente: #include "eixos.inc" #include "retalho.inc" // Aqui está a cena union{ //eixos object{ eixos(3.00) } union{ object { retalho( ponto11, ponto12, ponto13, ponto14, ponto21, ponto22, ponto23, ponto24, ponto31, ponto32, ponto33, ponto34, ponto41, ponto42, ponto43, ponto44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( bico11, bico12, bico13, bico14, bico21, bico22, bico23, bico24, bico31, bico32, bico33, bico34, bico41, bico42, bico43, bico44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( rabo11, rabo12, rabo13, rabo14, rabo21, rabo22, rabo23, rabo24, rabo31, rabo32, rabo33, rabo34, rabo41, rabo42, rabo43, rabo44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } //asa object{ box{ <0,-1,0>,<4, 0, 0.2> } texture{tx_vermelho} } } //outro lado union{ object { retalho( ponto11, ponto12, ponto13, ponto14, ponto21, ponto22, ponto23, ponto24, ponto31, ponto32, ponto33, ponto34, ponto41, ponto42, ponto43, ponto44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( bico11, bico12, bico13, bico14, bico21, bico22, bico23, bico24, bico31, bico32, bico33, bico34, bico41, bico42, bico43, bico44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } object { retalho( rabo11, rabo12, rabo13, rabo14, rabo21, rabo22, rabo23, rabo24, rabo31, rabo32, rabo33, rabo34, rabo41, rabo42, rabo43, rabo44, raio, tx_amarelo, tx_vermelho ) scale 0.5 } //asa object{ box{ <0,-1,0>,<4, 0, 0.2> } texture{tx_vermelho} } scale -1 rotate 180*x } translate 3*z } #end //fim da macro // gera o quadro correspondente ao instante dado {clock}: quadro(clock)