// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-12-08 11:05:28 by jstolfi #version 3.6; // ====================================================================== // 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) union{ cylinder{ <0.00, 0.00, 0.00> <0.00, 0.00, 3.00> 1.00 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, 2.50> } } #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 diagrama(N, S, A, B, T) #local pacientes = 0; #while (pacientes < N) #local paciX = rand(roleta) * T/3; #local paciY = rand(roleta) * T/3; arvore(, S, A, B, T) #local pacientes = pacientes + 1; #end #end */ // Aqui está a cena, finalmente: #local sep = 5.0; // Deslocamento entre robos. union{ // object{ eixos(3.00) } //polegar() //maogarra() object{ robo(20.00, -10.00, 60.00, 100.00, 20.00, -60.00, 30.00, -20.00, +10.00, 30.00, -30.00, 0.00, -10.00) translate -sep*<1,1,0> } object{ robo(0.00, -40.00, 90.00, 40.00, 0.00, -90.00, 0.00, -40.00, -10.00, 10.00, -30.00, 0.00, -10.00) } object{ robo(60.00, +40.00, 20.00, 60.00, 0.00, +60.00, 30.00, -40.00, -90.00, 10.00, -30.00, 60.00, -10.00) translate +sep*<1,1,0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 2.00 >; #declare raio_cena = 8.5; #declare dir_camera = < 10.00, 1.00, 3.00 >; #declare dist_camera = 12*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)