// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-12-08 11:07:38 by jstolfi #version 3.6; // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_cinza = texture{ pigment{ color rgb < 0.60, 0.60, 0.60 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA #declare raio = 1; // Partes da cena: #declare bola = sphere{ < 0.00, 0.00, 0.00 >, raio } #macro dedo() cylinder { <0,0,0>, <0.5,0,0>, 0.2 texture { tx_cinza } } #end #macro mao(angDedo1,angDedo2,angDedo3) union{ box { <1, -0.5, -0.25>, <0, 0.5, 0.25> texture { tx_cinza } } object {bola scale <0.2,0.2,0.2> translate <1,-0.2,0> texture { tx_cinza } } object { dedo() rotate <0,angDedo1,0> translate <1,-0.2,0> } object {bola scale <0.2,0.2,0.2> translate <1,0.2,0> texture { tx_cinza } } object { dedo() rotate <0,angDedo2,0> translate <1,0.2,0> } object {bola scale <0.2,0.2,0.2> translate <0.2,0.5,0> texture { tx_cinza } } object { dedo() rotate <0,0,90> rotate translate <0.2,0.5,0> } } #end #macro antebraco(ang1Mao,ang2Mao,angDedo1,angDedo2,angDedo3) union{ cylinder { <0,0,0>, <2,0,0>, 0.3 texture { tx_cinza } } object {bola scale <0.4,0.4,0.4> translate <2,0,0> texture { tx_cinza } } object { mao(angDedo1,angDedo2,angDedo3) rotate translate<2,0,0> } } #end #macro braco(angAB,ang1Mao,ang2Mao,angDedo1,angDedo2,angDedo3) union{ cylinder { <0,0,0>, <2,0,0>, 0.3 texture { tx_cinza } } object {bola scale <0.4,0.4,0.4> translate <2,0,0> texture { tx_cinza } } object { antebraco(ang1Mao,ang2Mao,angDedo1,angDedo2,angDedo3) rotate <0,angAB,0> translate<2,0,0> } } #end #macro robo(ang1Braco1,ang2Braco1,angAB1,ang1Mao1,ang2Mao1,angDedo11,angDedo21,angDedo31,ang1Braco2,ang2Braco2,angAB2,ang1Mao2,ang2Mao2, angDedo12,angDedo22,angDedo32) union{ box { <1, -1, -1.5>, <-1, 1, 1.5> texture { tx_cinza } } //Bracos object {bola scale <0.4,0.4,0.4> translate <1,0,1> texture { tx_cinza } } object { braco(angAB1,ang1Mao1,ang2Mao1,angDedo11,angDedo21,angDedo31) rotate <0,ang1Braco1,ang2Braco1> translate<1,0,1> } object {bola scale <0.4,0.4,0.4> translate <-1,0,1> texture { tx_cinza } } object { braco(angAB2,ang1Mao2,ang2Mao2,angDedo12,angDedo22,angDedo32) rotate <0,ang1Braco2,ang2Braco2> translate<1,0,1> scale <-1,+1,+1>} //Cabeca object {bola translate <0,0,2.5> texture { tx_cinza }} //Pernas object {bola scale <0.5,0.5,0.5> translate <0.5,0,-2> texture { tx_cinza }} object {bola scale <0.5,0.5,0.5> translate <-0.5,0,-2> texture { tx_cinza }} } #end #macro robo_vet(p) robo(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]) #end #macro interpola1(tt,tt0,tt1,vv0,vv1) #local rr = (tt-tt0)/(tt1-tt0); #local vv = (1-rr)*vv0 + rr*vv1; vv #end #macro robo_mov(tt) #local p0 = array[16] {10,0,-15,90,0,0,0,0,30,40,30,-25,15,0,0,0}; //Pos inicial #local p1 = array[16] {60,0,-70,90,0,0,0,0,-30,40,-0,-70,15,0,0,0}; //Pos final #local p = array[16]; #local i = 0; #while (i < 16) #local p[i] = interpola1(tt,0,1,p0[i],p1[i]); #local i = i + 1; #end robo_vet(p) #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ eixos(4.00) } #local kk = 0; #local nn = 12; #while (kk < nn) #local tt = kk/nn; #local ang = (0.8*tt + 0.6)*pi; object {robo_mov(tt) rotate -90*z translate 30 * < cos(ang), sin(ang), 0 > } #local kk = kk+1; #end } #include "camlight.inc" #declare centro_cena = < -18.00, 0.00, 0.00 >; #declare raio_cena = 35.0; #declare dir_camera = < 8.00, -2, 11.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)