// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_fosca_amarela = texture{ pigment{ color rgb < 1.00, 0.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // MACROS #macro robo(tamanho_robo,ang_perna1,ang_pant1,ang_pe1,ang_ombro1,angulo_braco1,angulo_garra1,ang_ponta_garra1,ang_perna2,ang_pant2,ang_pe2,ang_ombro2,angulo_braco2,angulo_garra2,ang_ponta_garra2) #local espessura_robo = tamanho_robo*0.3; union{ cylinder{ <0,0,0>, <0,0,tamanho_robo>, espessura_robo texture{ tx_fosca_amarela }} sphere{ <0,0,tamanho_robo*1.1>, espessura_robo*0.6 texture{ tx_fosca_amarela } } object{ braco(tamanho_robo*0.3,angulo_braco1,angulo_garra1,ang_ponta_garra1) rotate ang_ombro1*x translate <0,-espessura_robo,tamanho_robo*0.8> } object{ braco(tamanho_robo*0.3,angulo_braco2,angulo_garra2,ang_ponta_garra2) rotate ang_ombro2*x translate <0,espessura_robo,tamanho_robo*0.8> } object{ perna(tamanho_robo*0.3,ang_pant1,ang_pe1) rotate ang_perna1*x translate <0,-espessura_robo*0.5,-tamanho_robo*0.45> } object{ perna(tamanho_robo*0.3,ang_pant2,ang_pe2) rotate ang_perna2*x translate <0,espessura_robo*0.5,-tamanho_robo*0.45> } } #end #macro perna(tamanho_perna,ang_pant,ang_pe) union{ #local espessura_perna = tamanho_perna*0.3; sphere{ <0,0,tamanho_perna*1.1>, espessura_perna*0.8 texture{ tx_fosca_amarela }} cylinder{ <0,0,0>, <0,0,tamanho_perna>, espessura_perna texture{ tx_fosca_amarela }} sphere{ <0,0,-espessura_perna*0.9>, espessura_perna*0.8 texture{ tx_fosca_amarela }} object{ panturrilha(tamanho_perna*0.8,ang_pe) translate -tamanho_perna*z rotate ang_pant*y } } #end #macro panturrilha(tamanho_pant,ang_pe) union{ #local espessura_pant = tamanho_pant*0.3; cylinder{ <0,0,0>, <0,0,tamanho_pant>, espessura_pant texture{ tx_fosca_amarela }} object{ pe(espessura_pant*0.7) rotate ang_pe*y translate -espessura_pant*z } } #end #macro pe(tamanho_pe) union{ box{ <0,-2.5*tamanho_pe,-0.5*tamanho_pe>, <5*tamanho_pe,2.5*tamanho_pe,0.5*tamanho_pe> texture{ tx_fosca_amarela } } sphere{ <0,0,tamanho_pe>, tamanho_pe*1.10 texture{ tx_fosca_amarela } } } #end #macro braco(tamanho_braco,angulo_braco,angulo_garra,ang_ponta_garra) union{ #local espessura_braco = tamanho_braco*0.3; sphere{ <0,0,-espessura_braco*0.2>, espessura_braco*0.8 texture{ tx_fosca_amarela }} cylinder{ <0,0,0>, <0,0,tamanho_braco>, espessura_braco texture{ tx_fosca_amarela }} sphere{ <0,0,tamanho_braco*1.10>, espessura_braco texture{ tx_fosca_amarela } } object { antebraco(tamanho_braco*0.80,espessura_braco,angulo_garra,ang_ponta_garra) rotate angulo_braco*x translate tamanho_braco*z } } #end #macro antebraco(tamanho_ante,espessura_ante,angulo_garra,ang_ponta_garra) union{ cylinder{ <0,0,0>, <0,0,tamanho_ante>, espessura_ante texture{ tx_fosca_amarela }} object { mao(espessura_ante*1.3,angulo_garra,ang_ponta_garra) translate tamanho_ante*z } } #end #macro mao(raio_mao,angulo_garra,ang_ponta_garra) union{ sphere{ <0,0,0>, raio_mao texture{ tx_fosca_amarela } } object { garra(-ang_ponta_garra,raio_mao*0.70) translate raio_mao*0.8*z rotate angulo_garra*x } object { garra(ang_ponta_garra,raio_mao*0.70) translate raio_mao*0.8*z rotate -angulo_garra*x } } #end #macro garra(ang_ponta_garra,tamanho_falange) union{ //#local tamanho_falange = 1.00; cylinder{ <0,0,0>, <0,0,tamanho_falange>, tamanho_falange*0.50 texture{ tx_fosca_amarela } } sphere{ <0,0,tamanho_falange*1.10>, tamanho_falange*0.50 texture{ tx_fosca_amarela } } object{ ponta_garra(tamanho_falange*1.20) rotate ang_ponta_garra*x translate <0,0,tamanho_falange*1.10> } } #end #macro ponta_garra(tamanho_ponta) cone{ <0,0,0>, tamanho_ponta*0.5, <0,0,tamanho_ponta>, 0.00 texture{ tx_fosca_amarela } } #end // Aqui est� a cena, finalmente: #declare angle_ponta_gar = 45; //#declare size_mao = 1.00; //#declare size_antebraco = 4.00; #declare size_braco = 4.00; #declare angle_braco = 30 ; #declare angle_gar = 50 ; //#declare esp_ante = 0.5 ; //#declare size_falange = 1.00 ; #declare size_pe = 1.00; #declare size_pant = 1.00; #declare ang_foot = 10; #declare size_perna = 1.00; #declare angle_pant = 30; #declare tamanho_robo = 1.00; #declare ang_perna1 = 20; #declare ang_pant1 = 30; #declare ang_pe1 = -15; #declare ang_ombro1 = 30; #declare angulo_braco1 = -45; #declare angulo_garra1 = 50; #declare ang_ponta_garra1 = 20; #declare ang_perna2 = 10; #declare ang_pant2 = 40; #declare ang_pe2 = 50; #declare ang_ombro2 = -30; #declare angulo_braco2 = 70; #declare angulo_garra2 = 40; #declare ang_ponta_garra2 = 20; union{ //object { garra(angle_ponta_gar,size_falange) } //object { mao(size_mao,angle_gar,angle_ponta_gar) } // object { antebraco(size_antebraco,esp_ante,angle_gar,angle_ponta_gar) } //object { braco(size_braco,angle_braco,angle_gar,angle_ponta_gar) } //object { pe(size_pe) } //object { panturrilha(size_pant,ang_foot) } //object{ perna(size_perna,angle_pant,ang_foot) } object{ robo(tamanho_robo,ang_perna1,ang_pant1,ang_pe1,ang_ombro1,angulo_braco1,angulo_garra1,ang_ponta_garra1,ang_perna2,ang_pant2,ang_pe2,ang_ombro2,angulo_braco2,angulo_garra2,ang_ponta_garra2)} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 5.0; #declare dir_camera = < 14.00, 7.00, 10.00 >; #declare dist_camera = 2*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)