// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.5 ambient 0.5 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } // ====================================================================== // DESCRIÇÃO DA CENA #declare raio = 2.000; #declare NQ=9; #declare angOmbros = array[NQ]; #declare angOmbros[0] = 3; #declare angOmbros[1] = -3; #declare angOmbros[2] = -6; #declare angOmbros[3] = -3; #declare angOmbros[4] = 3; #declare angOmbros[5] = -3; #declare angOmbros[6] = -6; #declare angOmbros[7] = -3; #declare angOmbros[8] = 3; #declare angCotovs = array[NQ]; #declare angCotovs[0] = 12; #declare angCotovs[1] = 14; #declare angCotovs[2] = 9; #declare angCotovs[3] = 12; #declare angCotovs[4] = 7; #declare angCotovs[5] = 12; #declare angCotovs[6] = 9; #declare angCotovs[7] = 14; #declare angCotovs[8] = 14; #declare angBacDir = array[NQ]; #declare angBacDir[0] = 7; #declare angBacDir[1] = 5; #declare angBacDir[2] = 2; #declare angBacDir[3] = 4; #declare angBacDir[4] = 6; #declare angBacDir[5] = 4; #declare angBacDir[6] = 2; #declare angBacDir[7] = 4; #declare angBacDir[8] = 7; #declare angBacEsq = array[NQ]; #declare angBacEsq[0] = 6; #declare angBacEsq[1] = 4; #declare angBacEsq[2] = 2; #declare angBacEsq[3] = 5; #declare angBacEsq[4] = 7; #declare angBacEsq[5] = 5; #declare angBacEsq[6] = 2; #declare angBacEsq[7] = 4; #declare angBacEsq[8] = 6; #declare angJoeDir = array[NQ]; #declare angJoeDir[0] = 2; #declare angJoeDir[1] = 4; #declare angJoeDir[2] = 6; #declare angJoeDir[3] = 9; #declare angJoeDir[4] = 12; #declare angJoeDir[5] = 9; #declare angJoeDir[6] = 6; #declare angJoeDir[7] = 4; #declare angJoeDir[8] = 2; #declare angJoeEsq = array[NQ]; #declare angJoeEsq[0] = 12; #declare angJoeEsq[1] = 9; #declare angJoeEsq[2] = 6; #declare angJoeEsq[3] = 4; #declare angJoeEsq[4] = 2; #declare angJoeEsq[5] = 4; #declare angJoeEsq[6] = 6; #declare angJoeEsq[7] = 9; #declare angJoeEsq[8] = 12; #declare angPeDir = array[NQ]; #declare angPeDir[0] = 1; #declare angPeDir[1] = 4; #declare angPeDir[2] = 7; #declare angPeDir[3] = 10; #declare angPeDir[4] = 15; #declare angPeDir[5] = 10; #declare angPeDir[6] = 7; #declare angPeDir[7] = 4; #declare angPeDir[8] = 1; #declare angPeEsq = array[NQ]; #declare angPeEsq[0] = 15; #declare angPeEsq[1] = 10; #declare angPeEsq[2] = 7; #declare angPeEsq[3] = 4; #declare angPeEsq[4] = 1; #declare angPeEsq[5] = 4; #declare angPeEsq[6] = 7; #declare angPeEsq[7] = 10; #declare angPeEsq[8] = 15; declare fq = array[NQ]; #declare fq[0] = 0.000; #declare fq[1] = 0.125; #declare fq[2] = 0.250; #declare fq[3] = 0.375; #declare fq[4] = 0.500; #declare fq[5] = 0.625; #declare fq[6] = 0.750; #declare fq[7] = 0.875; #declare fq[8] = 1.000; #macro interpola (f0,v0,f1,v1,f) #local ss = (f-f0)/(f1-f0); #local rr = 1 - ss; (rr*v0+ss*v1) #end #macro quadro_anterior (FASE) #local i=0; #while (i=FASE)) #local quad=i; #end #local i=i+1; #end quad #end // Partes da cena: //modelando a parte estatica #macro orelha () union{ box{<-0.5,0,0>, <0.5,0.1,3> texture{tx_fosca}} cylinder{<0,0,3>, <0,0.1,3>, 0.5 texture{tx_fosca}} } #end #macro cabeca () union{ sphere{<0,0,0>, 1 texture{tx_fosca}} object{orelha() rotate<0,30,0>} object{orelha() rotate<0,-30,0>} } #end #macro corpo () union{ sphere{<0,0,0>, 1.5 texture{tx_fosca}} sphere{<0,0,1>, 1.5 texture{tx_fosca}} cylinder{<0,0,0>, <0,0,1>, 1.5 texture{tx_fosca}} object{cabeca() translate<0,0,3>} } #end //modelando os membros superiores #macro maozinha () union{ cone{<0,0,0>, 0.35, <0,0,1.4>, 0.4 texture{tx_fosca}} sphere{<0,0,1.4>, 0.45 texture{tx_fosca}} } #end #macro bracinho (COTOVELO) union{ sphere{<0,0,0>, 0.35 texture{tx_fosca}} cylinder{<0,0,0>, <0,0,1.6>, 0.35 texture{tx_fosca}} sphere{<0,0,1.6>, 0.35 texture{tx_fosca}} object{maozinha() rotate<-10*COTOVELO,0,0> translate<0,0,1.6>} } #end //modelando os membros inferiores //pezinhos com botas #macro pezinho () union{ cone{<0,0,0>, 0.45, <0,0,1.5>, 0.6 texture{tx_fosca}} sphere{<0,0,0>, 0.45 texture{tx_fosca}} cylinder{<0,0,0.6>, <0,0,1.9>, 0.61 texture{tx_plastico}} sphere{<0,0,1.9>, 0.61 texture{tx_plastico}} } #end #macro perninha (TORNOZELO) union{ cone{<0,0,0>, 0.35 <0,0,1.4>, 0.45 texture{tx_fosca}} sphere{<0,0,0>, 0.35 texture{tx_fosca}} object{pezinho() rotate<-10*TORNOZELO,0,0> translate<0,0,1.6>} } #end #macro coxinha (JOELHO,TORNOZELO) union{ cylinder{<0,0,0>, <0,0,1.3>, 0.35 texture{tx_fosca}} sphere{<0,0,0>, 0.35 texture{tx_fosca}} object{perninha(TORNOZELO) rotate<(10*JOELHO),0,0> translate<0,0,1.3>} } #end //AGORA MONTAREMOS O COELHO COMPLETO #macro coelho_de_botas (OMBRO_DIR, COTOVELO_DIR, OMBRO_ESQ, COTOVELO_ESQ, BACIA_DIR, JOELHO_DIR, TORNOZELO_DIR, BACIA_ESQ, JOELHO_ESQ, TORNOZELO_ESQ) union{ object{corpo()} object{bracinho(COTOVELO_DIR) scale<0,0,-1> rotate<(-10*OMBRO_DIR),-10,0> translate<1.5,0,1.7>} object{bracinho(COTOVELO_ESQ) scale<0,0,-1> rotate<(-10*OMBRO_ESQ),10,0> translate<-1.5,0,1.7>} object{coxinha(JOELHO_DIR,TORNOZELO_DIR) scale<0,0,-1> rotate<(10*BACIA_DIR),-10,0> translate<1,0,-0.5>} object{coxinha(JOELHO_ESQ,TORNOZELO_ESQ) scale<0,0,-1> rotate<(10*BACIA_ESQ),10,0> translate<-1,0,-0.5>} } #end //Agora, uma macro para montagem do coelho em poses ao longo da danca #macro coelho_cancan (FASE) // FASE varia de 0.0 a 1.0 union{ } #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ //(OMBRO_DIR, COTOVELO_DIR, OMBRO_ESQ, COTOVELO_ESQ, BACIA_DIR, JOELHO_DIR, TORNOZELO_DIR, BACIA_ESQ, JOELHO_ESQ, TORNOZELO_ESQ) object{coelho_de_botas(3,12,3,12,7,2,2,6,12,12) translate<10,-1,0>} object{coelho_de_botas(-3,14,-3,14,5,4,4,4,9,9) translate<6,0,0>} object{coelho_de_botas(-6,9,-6,9,2,6,6,2,6,6) translate<2,1,0>} object{coelho_de_botas(-3,14,-3,14,4,9,9,5,4,4) translate<-2,2,0>} object{coelho_de_botas(3,7,3,7,6,12,12,7,2,2) translate<-6,3,0>} object{coelho_de_botas(-3,14,-3,14,4,9,9,5,4,4) translate<-10,4.5,0>} object{coelho_de_botas(-6,9,-6,9,2,6,6,2,6,6) translate<-14,6,0>} object{coelho_de_botas(-3,14,-3,14,5,4,4,4,9,9) translate<-20,8,0>} object{coelho_de_botas(3,12,3,12,7,2,2,6,12,12) translate<-25,10,0>} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.50 >; #declare raio_cena = 20; #declare dir_camera = < 5.00, 2.50, 2.50 >; #declare dist_camera = 20; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)