// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS #include "colors.inc" background{ color rgb < 0.75, 0.80, 0.85 > } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare mao = sphere { <0,0,0>, 0.7 pigment { color Grey } } #declare rosto = sphere { <0,0,0>, 2 pigment { color Grey } } #declare bigode = box { <0,0,0>, <1.3,0,0.1> pigment { color Black } } #declare boca = cone { <0,0,0>, 0.2 <0,0,0.15>, 0.3 pigment { color Red } } #declare nariz = cone { <0,0,0>, 0.1 <0,0,0.5>, 0.3 pigment { color Black } } #declare olho = sphere { <0,0,0>, 0.5 pigment { color Green } } #declare orelha = cone { <0,0,0>, 0.7 <0,0,1.4>, 0 pigment { color Grey } } #macro cabeca() union { object { rosto } object { olho translate <0.6,1.4,0.7> } object { olho translate <-0.6,1.4,0.7> } object { nariz translate <0,1.8,-0.6> } object { boca translate <0,1.5,-1.3> } object { bigode translate <0.2,1.9,-0.4> } object { bigode translate <-1.7,1.9,-0.4> } object { bigode translate <0.2,1.9,-0.25> rotate -5*y } object { bigode translate <-1.7,1.9,-0.25> rotate 5*y } object { bigode translate <0.2,1.9,-0.55> rotate 5*y } object { bigode translate <-1.7,1.9,-0.55> rotate -5*y } object { orelha translate <-0.3,0,1.7> rotate -20*y } object { orelha translate <0.3,0,1.7> rotate 20*y} } #end #macro pe() difference { object { cone { <0,0,0>, 0.8 <0,0,1>, 0.5 pigment { color Grey } } } object { box { <0,-1,-1.3>, <-1,1,1.3> pigment { color Grey } } } } rotate <0,-90,0> #end #macro canela() cone { <0,0,-2>, 0.55 <0,0,0>, 0.65 pigment { color Grey } } #end #macro coxa() union { cone { <0,0,-2>, 0.65 <0,0,0>, 0.75 pigment { color Grey } } object { sphere { <0,0,0>, 0.65 pigment { color Grey } } translate <0,0,-1.8> } } #end #macro anteperna(b) union{ object { canela() } object { pe() translate <-0.53,0,-2> rotate -b*z } } #end #macro perna(a, b) union{ object { coxa() } object { anteperna(b) rotate -a*y translate <0,0,-1.8> } } #end #macro antebraco() union{ object { cone { <0,0,-2>, 0.5 <0,0,0>, 0.65 pigment { color Grey } } } object { mao translate <0,0,-2>} } #end #macro biceps() union { object { sphere { <0,0,0>, 0.65 pigment { color Grey } } translate <0,0,-1.8> } object { cone { <0,0,-2>, 0.65 <0,0,0>, 0.75 pigment { color Grey } } } } #end #macro braco(a) union{ object { biceps() } object { antebraco() rotate -a*y translate <0,0,-1.8> } } #end #macro corpo() sphere { <0,0,0>, 2.5 pigment { color Grey } } #end #macro gato(al,bl,cl, a,b,c, d, e, dl, el) union{ object { cabeca() translate <0,0,4.3>} object { corpo() } object { perna(a,b) rotate c*y translate <-1,0,-1.8>} object { perna(al,bl) rotate -cl*y translate <1,0,-1.8> } object { braco(d) rotate e*y translate <-1.6,0,0.8> } object { braco(dl) rotate -el*y translate <1.6,0,0.8> } } #end #declare NQ = 6; // NUm quadros #declare argA = array[NQ]; #declare argA[0] = 0; #declare argA[1] = 45; #declare argA[2] = 45; #declare argA[3] = 45; #declare argA[4] = 0; #declare argA[5] = 75; #declare argAL = array[NQ]; #declare argAL[0] = 0; #declare argAL[1] = -45; #declare argAL[2] = 0; #declare argAL[3] = -45; #declare argAL[4] = -45; #declare argAL[5] = -75; #declare argC = array[NQ]; #declare argC[0] = 10; #declare argC[1] = 35; #declare argC[2] = 35; #declare argC[3] = 35; #declare argC[4] = 40; #declare argC[5] = 35; #declare argCL = array[NQ]; #declare argCL[0] = 10; #declare argCL[1] = 35; #declare argCL[2] = 40; #declare argCL[3] = 35; #declare argCL[4] = 35; #declare argCL[5] = 35; #declare argDL = array[NQ]; #declare argDL[0] =-90; #declare argDL[1] = 60; #declare argDL[2] = 0; #declare argDL[3] = 90; #declare argDL[4] = 0; #declare argDL[5] = 60; #declare argD = array[NQ]; #declare argD[0] = 90; #declare argD[1] = -60; #declare argD[2] = 0; #declare argD[3] = -90; #declare argD[4] = 0; #declare argD[5] = -60; #declare argE = array[NQ]; #declare argE[0] = 65; #declare argE[1] = 65; #declare argE[2] = 120; #declare argE[3] = 120; #declare argE[4] = 120; #declare argE[5] = 65; #declare argEL = array[NQ]; #declare argEL[0] = 65; #declare argEL[1] = 65; #declare argEL[2] = 120; #declare argEL[3] = 120; #declare argEL[4] = 120; #declare argEL[5] = 65; #declare b = 0; #declare bl = 180; #declare tempo = array[NQ]; #declare tempo[0] = 0; #declare tempo[1] = 0.2; #declare tempo[2] = 0.4; #declare tempo[3] = 0.6; #declare tempo[4] = 0.8; #declare tempo[5] = 1; #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 #macro boneco_dancando(fase) object { gato(argAL[fase],bl,argCL[fase],argA[fase],b,argC[fase],argD[fase],argE[fase],argDL[fase],argEL[fase]) } #local ant = quadro_anterior(fase); #end #include "eixos.inc" #declare b = 0; #declare bl = 180; // Aqui está a cena, finalmente: #declare a = 80; #declare al = -80; #declare d = -90; #declare dl = 90; #declare e = 120; #declare el = 120; #declare c = 35; #declare cl = 35; union{ // object { gato(-60,180,10,60,0,10,-40,60,45,60)}// translate <-15,0,0>} // object { gato(al,bl,cl, a,b,c, d, e, dl, el) } //object { gato(0,0,10,0,0,10,0,60,0,60) } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 15.0; #declare dir_camera = <0,1,0>;//< 14.00, 7.00, 4.00 >; #declare dist_camera = 50.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)