// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2017-05-07 20:10:09 by stolfilocal // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.65, 0.60, 0.35 > } #declare tx_blue = texture{ pigment{ color rgb < 0.00, 0.00, 0.30 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_silver = texture{ pigment{ color rgb < 0.80, 0.80, 0.80 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_black = texture{ pigment{ color rgb < 0.10, 0.10, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare n = 5; #declare m = 3; #declare roleta = seed(25); #include "eixos.inc" #macro robo(braco_graux, braco_grauy, braco_grauz, ante_grauy, mao_graux, mao_grauy, mao_grauz, polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz braco2_graux, braco2_grauy, braco2_grauz, ante2_grauy, mao2_graux, mao2_grauy, mao2_grauz, polegar2_grauz, garrap2_grauz, dedo12_grauy, garra12_grauz, dedo22_grauy, garra22_grauz) union{ //body cylinder{ <0.00, 0.00, 0.00> <0.00, 0.00, 4.00> 1.00 texture{ tx_blue } } //head cylinder{ <0.00, 0.00, 0.00> <0.00, 0.00, 4.55> 0.60 texture{ tx_blue } } //axle cylinder{ <0.00, -1.20, 0.40> <0.00, 1.20, 0.40> 0.10 texture{ tx_silver } } //wheel 1 cylinder{ <0.00, -1.20, 0.40> <0.00, -1.40, 0.40> 0.60 texture{ tx_blue } } //wheel 2 cylinder{ <0.00, 1.20, 0.40> <0.00, 1.40, 0.40> 0.60 texture{ tx_blue } } object{ braco(ante_grauy, mao_graux, mao_grauy, mao_grauz, polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) rotate translate<0.00, -1.25, 3.50> } object{ braco(ante2_grauy, mao2_graux, mao2_grauy, mao2_grauz, polegar2_grauz, garrap2_grauz, dedo12_grauy, garra12_grauz, dedo22_grauy, garra22_grauz) rotate translate<0.00, -1.25, 3.50> scale<1.00, -1.00, 1.00> } } #end #macro braco(ante_grauy, mao_graux, mao_grauy, mao_grauz, polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) union{ sphere{ <0.00, 0.00, 0.00>, 0.30 texture{ tx_black } } cylinder{ <0.00, 0.00, 0.00> <0.00, 0.00, 1.50> 0.10 texture{ tx_silver } } object{ antebraco(mao_graux, mao_grauy, mao_grauz, polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) rotate<0.00, ante_grauy, 0.00> translate<0.00, 0.00, 1.50> } } #end #macro antebraco(mao_graux, mao_grauy, mao_grauz, polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) union{ cylinder{ <0.00, 0.00, 0.00> <0.00, 0.00, 1.50> 0.10 texture{ tx_silver } } object { mao(polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) rotate translate<0.00, 0.00, 1.50> } } #end #macro mao(polegar_grauz, garrap_grauz, dedo1_grauy, garra1_grauz, dedo2_grauy, garra2_grauz) union{ sphere{ <0.00, 0.00, 0.00>, 0.22 texture{ tx_black } } object{ dedo(garrap_grauz) rotate<0.00, 0.00, polegar_grauz> translate<0.00, 0.18, 0.00> } object{ dedo(garra1_grauz) rotate<90.00, dedo1_grauy, 0.00> translate<0.00, 0.16, 0.16> } object{ dedo(garra2_grauz) rotate<90.00, dedo2_grauy> translate<0.00, -0.16, 0.16> } } #end #macro dedo(garra_grauz) union{ box{ <0.00, 0.00, -0.11>, <0.15, 0.40, 0.11> texture{ tx_silver } } object{ dedogarra() rotate<0.00, 0.00, garra_grauz> translate <0.00, 0.40, 0.00> } } #end #macro dedogarra() union{ box{ <0.00, 0.00, -0.11>, <0.15, 0.40, 0.11> texture{ tx_silver } } } #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_vet(vet) robo(vet[0], vet[1], vet[2], vet[3], vet[4], vet[5], vet[6], vet[7], vet[8], vet[9], vet[10], vet[11], vet[12] vet[13], vet[14], vet[15], vet[16], vet[17], vet[18], vet[19], vet[20], vet[21], vet[22], vet[23], vet[24], vet[25]) #end #macro robo_mov(tt) #local pp0 = array[26]; #local pp1 = array[26]; #local pp = array[26]; //posicao 0 //braco 1 #local pp0[0] = 0.00; #local pp0[1] = -40.00; #local pp0[2] = 90.00; //ante e mao 1 #local pp0[3] = 40.00; #local pp0[4] = 0.00; #local pp0[5] = -90.00; #local pp0[6] = 0.00; //dedos 1 #local pp0[7] = -20.00; #local pp0[8] = -20.00; #local pp0[9] = 0.00; #local pp0[10] = 0.00; #local pp0[11] = 0.00; #local pp0[12] = -10.00; //braco 2 #local pp0[13] = 10.00; #local pp0[14] = -130.00; #local pp0[15] = 0.00; //ante e mao 2 #local pp0[16] = -90.00; #local pp0[17] = -10.00; #local pp0[18] = -20.00; #local pp0[19] = 0.00; //dedos 2 #local pp0[20] = 0.00; #local pp0[21] = -45.00; #local pp0[22] = -45.00; #local pp0[23] = -45.00; #local pp0[24] = -45.00; #local pp0[25] = -45.00; //posicao 1 //braco 1 #local pp1[0] = 0.00; #local pp1[1] = 170.00; #local pp1[2] = 0.00; //ante e mao 1 #local pp1[3] = -90.00; #local pp1[4] = 0.00; #local pp1[5] = 0.00; #local pp1[6] = 90.00; //dedos 1 #local pp1[7] = 0.00; #local pp1[8] = 0.00; #local pp1[9] = 0.00; #local pp1[10] = -90.00; #local pp1[11] = 0.00; #local pp1[12] = -90.00; //braco 2 #local pp1[13] = 10.00; #local pp1[14] = -130.00; #local pp1[15] = 0.00; //ante e mao 2 #local pp1[16] = -90.00; #local pp1[17] = -10.00; #local pp1[18] = -20.00; #local pp1[19] = 0.00; //dedos 2 #local pp1[20] = 0.00; #local pp1[21] = -45.00; #local pp1[22] = -45.00; #local pp1[23] = -45.00; #local pp1[24] = -45.00; #local pp1[25] = -45.00; //posicao generica #local i = 0; #while (i < 26) #local pp[i] = interpola1(tt, 0, 1, pp0[i], pp1[i]) #local i = i + 1; #end object { robo_vet(pp) } #end // Aqui está a cena, finalmente: union{ object{ eixos(3.00) } //object { assento(false) translate <7.00, 0.00, 0.00> } //auditorio(m,n) //object {auditorio(m,n) translate<0.00, -(n+1.00), 0.00>} //object { palco pigment{ color<0.50, 0.20, 0.00>} } //polegar() //maogarra() object {robo_mov(0) translate <0.00, -5.00, 0.00>} robo_mov(0.7) object {robo_mov(1) translate <0.00, 5.00, 0.00>} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 3.00 >; #declare raio_cena = 9.0; #declare dir_camera = < 10.00, -7.00, 1.00 >; #declare dist_camera = 12*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)