// Last edited on DATE TIME by USER // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_tronco = texture{ pigment{ color rgb < 0.65, 0.16, 0.16 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_chao = texture{ pigment{ color rgb < 0.15, 0.16, 0.16 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_branco = texture{ pigment{ color rgb < 0.8, 0.8, 0.8 > } finish{ diffuse 0.9 ambient 0.8 } } #declare tx_vermelha = texture{ pigment{ color rgb < 0.89, 0.15, 0.13 > } finish{ diffuse 0.9 ambient 0.8 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0, 0, 0 >, color rgb < 1, 1, 1 >} finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare altura_inicial = 40; #declare profundidade = 4; #declare chao = box{ <-50,-50,-1>, <+50,+50,0> texture{ tx_chao } } #macro esfera(raio) sphere { <0, 0, 0>, raio } #end #macro meu_cilindro(tamanho) union { object { esfera(1.0) translate<0, 0, 0>} cylinder { <0, 0, 0>, <0, 0, tamanho>, 1.0 } object { esfera(1.0) translate<0, 0, tamanho>} } #end #macro pe(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // pe #end #macro batata(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // batata #end #macro coxa(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // coxa #end #macro mao(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // mao #end #macro antebraco(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // antebraco #end #macro braco(tamanho) object { meu_cilindro(tamanho) texture { tx_xadrez } } // braco #end #macro batata_coelho(angulo_joelho, c) #local tamanho_pe = 3; #local tamanho_batata = 4; #local angulo_calcanhar = c - 180; union { object {batata(tamanho_batata)} object {pe(tamanho_pe) rotate<-angulo_calcanhar, 0, 0> translate<0, 0, tamanho_batata>} rotate } #end #macro perna_coelho(a, angulo_joelho, angulo_pe) #local tamanho_coxa = 4; #local angulo_bacia = 180 - a; union { object {coxa(tamanho_coxa)} object {batata_coelho(angulo_joelho, angulo_pe)} translate<0, 0, -tamanho_coxa> rotate translate<0, 0, tamanho_coxa> } #end #macro antebraco_coelho (angulo_cotovelo) #local tamanho_mao = 2; #local tamanho_antebraco = 4; union { object {antebraco(tamanho_antebraco)} rotate } #end #macro braco_coelho (a, angulo_cotovelo) #local tamanho_braco = 4; #local angulo_ombro = 180 - a; union { object {braco(tamanho_braco)} object {antebraco_coelho(angulo_cotovelo)} translate<0, 0, -tamanho_braco> rotate translate<0, 0, tamanho_braco> } #end #macro orelha() union { object{ esfera(1.0) } scale<1, 1.5, 4.2> } #end #macro cabeca(raio) union { object{ esfera(raio) } object{ orelha() translate<-2, 0, raio/2 + 1> } object{ orelha() translate<2, 0, raio/2 + 1> } texture{ tx_xadrez } } #end #macro corpo(altura_corpo) union { object{ cabeca(3) translate<0, 0, altura_corpo + 3 - 1> } object{ esfera(1) scale<6, 5, altura_corpo> texture{ tx_xadrez } } // corpo object{ esfera(2.5) translate<0, -4, -4> texture{ tx_xadrez } } } #end #macro coelho(pda, pdb, pdc, pea, peb, pec, bda, bdb, bea, beb) union { #local altura_corpo = 8; object{ corpo(altura_corpo) } object{ perna_coelho( pea, peb, pec) translate<-4, 0, -1.3 * altura_corpo> } object{ perna_coelho( pda, pdb, pdc) translate<+4, 0, -1.3 * altura_corpo> } object{ braco_coelho( bea, beb) translate<-6, 0, 0> } object{ braco_coelho( bda, bdb) translate<+6, 0, 0> } } #end #macro coelho_dancando(FASE) union{ #local i = quadro_anterior(FASE); #local bc = interpola(fq[i],P1[i],fq[i+1],P1[i+1],FASE); #local jo = interpola(fq[i],P2[i],fq[i+1],P2[i+1],FASE); #local cl = interpola(fq[i],P3[i],fq[i+1],P3[i+1],FASE); #local ob = interpola(fq[i],B1[i],fq[i+1],B1[i+1],FASE); #local ct = interpola(fq[i],B2[i],fq[i+1],B2[i+1],FASE); object{coelho(bc, jo, cl, bc, jo, cl, ob, ct, ob, ct)} } #end #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 #include "eixos.inc" #declare NQ = 6; // Numero de quadros #declare P1 = array[NQ]; #declare P1[0] = 180; #declare P1[1] = 150; #declare P1[2] = 120; #declare P1[3] = 120; #declare P1[4] = 150; #declare P1[5] = 180; #declare P2 = array[NQ]; #declare P2[0] = 180; #declare P2[1] = 120; #declare P2[2] = 90; #declare P2[3] = 90; #declare P2[4] = 120; #declare P2[5] = 180; #declare P3 = array[NQ]; #declare P3[0] = 90; #declare P3[1] = 60; #declare P3[2] = 60; #declare P3[3] = 60; #declare P3[4] = 60; #declare P3[5] = 90; #declare B1 = array[NQ]; #declare B1[0] = 90; #declare B1[1] = 120; #declare B1[2] = 150; #declare B1[3] = 150; #declare B1[4] = 120; #declare B1[5] = 90; #declare B2 = array[NQ]; #declare B2[0] = 180; #declare B2[1] = 250; #declare B2[2] = 280; #declare B2[3] = 280; #declare B2[4] = 250; #declare B2[5] = 180; #declare fq = array[NQ]; #declare fq[0] = 0.0; #declare fq[1] = 0.2; #declare fq[2] = 0.4; #declare fq[3] = 0.6; #declare fq[4] = 0.8; #declare fq[5] = 1.0; union{ object { eixos(10.0) } object {coelho_dancando(clock)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 50.0; #declare dir_camera = < 50.00, 50.00, 1.00 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)