// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-12-08 11:09:21 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) object { 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,vv0,vv1) #local vv = (1-tt)*vv0 + tt*vv1; vv #end #macro robo_interpola(tt, p0, p1) #local p = array[16]; #local i = 0; #while (i < 16) #local p[i] = interpola1(tt,p0[i],p1[i]); #local i = i + 1; #end robo_vet(p) #end #macro quadro(tf) #local T0 = 0.00; #local P0 = array[16] {-30,0,-90,90,-15,0,0,0,-30,0,-90,90,-15,0,0,0} #local T1 = 0.25; #local P1 = array[16] {0,0,0,90,0,90,90,-90,0,0,0,90,0,90,90,-90} #local T2 = 0.50; #local P2 = array[16] {0,80,0,0,0,0,0,0,0,80,0,0,0,0,0,0} #local T3 = 0.75; #local P3 = array[16] {0,80,-90,0,0,0,0,0,0,80,-90,0,0,0,0,0} #local T4 = 1.00; #local P4 = P0 #if ( (T0 <= tf) & (tf <= T1) ) #local tt = (tf - T0)/(T1 - T0); #local qd = robo_interpola(tt, P0, P1); #elseif ( (T1 <= tf) & (tf <= T2) ) #local tt = (tf - T1)/(T2 - T1); #local qd = robo_interpola(tt, P1, P2); #elseif ( (T2 <= tf) & (tf <= T3) ) #local tt = (tf - T2)/(T3 - T2); #local qd = robo_interpola(tt, P2, P3); #elseif ( (T3 <= tf) & (tf <= T4) ) #local tt = (tf - T3)/(T4 - T3); #local qd = robo_interpola(tt, P3, P4); #end object { qd } #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ quadro(clock) } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 9.0; #declare dir_camera = < 8.00, 14.00, 6.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)