background{ color rgb < 0.75, 0.80, 0.85 > } #include "eixos.inc" // Partes da cena: #declare cabeca = sphere { <0, 0, 0>, 1 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare orelha1 = cone { <0, 0, 0>, 0.25 <0, -0.1, 0.5>, 0 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare orelha2 = cone { <0, 0, 0>, 0.25 <0, 0.1, 0.5>, 0 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare iris = sphere { <0, 0, 0> 0.3 pigment{ color rgb<0, 1, 0> } } #declare olhos = sphere { <0, 0, 0> 0.1 } #declare nariz = cone { <0, 0, 0>, 0 <0, 0, 0.2>, 0.2 } #declare pontacorpo = sphere { <0, 0, 0>, 0.9 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare corpo = cylinder { <0, 0, 0>, <0, 0, 0.5>, 0.9 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare relogio = cylinder { <0, 0, 0>, <0.2, 0, 0>, 0.4 pigment{ color rgb<1, 1, 1> } } #declare ponteiro1 = cylinder { <0, 0, 0>, <0, 0.28, 0.28>, 0.05 pigment{ color rgb<0, 0, 0> } } #declare ponteiro2 = cylinder { <0, 0, 0>, <0, 0, 0.25>, 0.05 pigment{ color rgb<0, 0, 0> } } #declare cilin = cylinder { <0, 0, 0>, <0, 0, -0.6>, 0.15 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare cilin2 = cylinder { <0, 0, 0>, <0, 0, -1>, 0.15 pigment{ color rgb<0.8, 0.6, 0.3> } } #declare juncao = sphere { <0, 0, 0>, 0.15 pigment{ color rgb<0.8, 0.6, 0.3> } } //Movimentacao #macro braco(etapam) union{ object{ cilin pigment{ color rgb<0.8, 0.6, 0.3> } } object{ mao() rotate etapam*y translate<0, 0, -0.6>} object{ juncao translate<0, 0, -0.6>} } #end #macro mao() object{ cilin pigment{ color rgb<0.8, 0.6, 0.3> } } #end #macro perna(etapaantper, etapape) union{ object{ cilin2 pigment{ color rgb<0.8, 0.6, 0.3> } } object{ antperna(etapape) rotate etapaantper*y translate<0, 0, -1>} object{ juncao translate<0, 0, -1>} } #end #macro antperna(etapape) union{ object{ cilin2 pigment{ color rgb<0.8, 0.6, 0.3> } } object{ pe() rotate etapape*y translate<0, 0, -1>} object{ juncao translate<0, 0, -1>} } #end #macro pe() object{ cilin pigment{ color rgb<0.8, 0.6, 0.3> } } #end #macro gato(etapabE, etapamE, etapapernaE, etapaantperE, etapapeE, etapabD, etapamD, etapapernaD, etapaantperD, etapapeD, pont) union{ object{ cabeca translate<0, 3, 5>} object{ orelha2 translate<0, 3.4, 5.8> } object{ orelha1 translate<0, 2.6, 5.8> } object{ iris translate<0.6, 3.15, 5.4> } object{ iris translate<0.6, 2.85, 5.4> } object{ olhos translate<0.8, 3.2, 5.5> } object{ olhos translate<0.8, 2.8, 5.5> } object{ nariz translate<0.9, 3, 5> } object{ pontacorpo translate<0, 3, 3.5> } object{ pontacorpo translate<0, 3, 3> } object{ corpo translate<0, 3, 3> } object{ relogio translate<0.7, 3, 3.6> } object{ ponteiro1 rotate pont*x translate<0.9, 3, 3.7> } object{ ponteiro2 translate<0.9, 3, 3.7> } object{ braco(etapamE) rotate etapabE*y translate< 0, 4, 3.6>} object{ juncao translate<0, 4, 3.6>} object{ braco(etapamD) rotate etapabD*y translate< 0, 2, 3.6>} object{ juncao translate<0, 2, 3.6>} object{ perna(etapaantperE, etapapeE) rotate etapapernaE*y translate< 0, 3.5, 2.5>} object{ perna(etapaantperD, etapapeD) rotate etapapernaD*y translate< 0, 2.5, 2.5>} } #end #declare NQ=6; //Num de quadros chave #declare bracoesq = array[NQ]; #declare bracoesq[0] = 0; #declare bracoesq[1] = -20; #declare bracoesq[2] = 0; #declare bracoesq[3] = 0; #declare bracoesq[4] = -80; #declare bracoesq[5] = 0; #declare maoesq = array[NQ]; #declare maoesq[0] = 0; #declare maoesq[1] = -60; #declare maoesq[2] = 0; #declare maoesq[3] = 0; #declare maoesq[4] = -60; #declare maoesq[5] = 0; #declare pernaesq = array[NQ]; #declare pernaesq[0] = 0; #declare pernaesq[1] = 0; #declare pernaesq[2] = -50; #declare pernaesq[3] = 0; #declare pernaesq[4] = -90; #declare pernaesq[5] = 0; #declare antpernaesq = array[NQ]; #declare antpernaesq[0] = 0; #declare antpernaesq[1] = 0; #declare antpernaesq[2] = 50; #declare antpernaesq[3] = 0; #declare antpernaesq[4] = 80; #declare antpernaesq[5] = 0; #declare peesq = array[NQ]; #declare peesq[0] = -90; #declare peesq[1] = -90; #declare peesq[2] = -40; #declare peesq[3] = -90; #declare peesq[4] = -50; #declare peesq[5] = -90; #declare bracodir = array[NQ]; #declare bracodir[0] = 0; #declare bracodir[1] = 0; #declare bracodir[2] = -20; #declare bracodir[3] = 0; #declare bracodir[4] = -80; #declare bracodir[5] = 0; #declare maodir = array[NQ]; #declare maodir[0] = 0; #declare maodir[1] = 0; #declare maodir[2] = -60; #declare maodir[3] = 0; #declare maodir[4] = -60; #declare maodir[5] = 0; #declare pernadir = array[NQ]; #declare pernadir[0] = 0; #declare pernadir[1] = -50; #declare pernadir[2] = 0; #declare pernadir[3] = 0; #declare pernadir[4] = -90; #declare pernadir[5] = 0; #declare antpernadir = array[NQ]; #declare antpernadir[0] = 0; #declare antpernadir[1] = 50; #declare antpernadir[2] = 0; #declare antpernadir[3] = 0; #declare antpernadir[4] = 80; #declare antpernadir[5] = 0; #declare pedir = array[NQ]; #declare pedir[0] = -90; #declare pedir[1] = -40; #declare pedir[2] = -90; #declare pedir[3] = -90; #declare pedir[4] = -50; #declare pedir[5] = -90; #declare ponteiro = array[NQ]; #declare ponteiro[0] = -0; #declare ponteiro[1] = -72; #declare ponteiro[2] = -144; #declare ponteiro[3] = -216; #declare ponteiro[4] = -288; #declare ponteiro[5] = -360; #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; #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 resp = i; #end #local i=i+1; #end resp; #end //Camera #include "camlight.inc" #declare centro_cena = < 0.00, 12.00, 2.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 20.00, 9.00, 2.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)