// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // CORES E TEXTURAS //#include "textures.inc" background{ color rgb < 240/255, 243/255, 246/255 > } #declare tx_preto = texture{ pigment{ color rgb < 0.17, 0.17, 0.17 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare tx_vermelho = texture{ pigment{ color rgb < 0.80, 0.0, 0.17 > } finish{ diffuse 0.9 ambient 0.4 } scale 1.0 } #declare tx_grau1 = texture{ pigment{ color rgb < 0.17, 0.80, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare tx_grau2 = texture{ pigment{ color rgb < 0.80, 0.17, 1.00 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare tx_grau3 = texture{ pigment{ color rgb < 0.10, 1.00, 0.17 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare tx_grau4 = texture{ pigment{ color rgb < 1.00, 0.17, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } #declare tx_tubo = texture{ pigment{ color rgb < 0.20, 0.07, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.0 } // ====================================================================== // DESCRI��O DA CENA //-------------------------------------------------------------- #macro corpo(centro, raio) sphere{ centro, raio texture{ tx_preto } } #end //-------------------------------------------------------------- #macro cabeca() union{ cylinder{ <0,0,0>, <3, 0, 0>, 0.35 texture{ tx_grau4 } } sphere{ <3, 0, 0>, 1.2 texture{ tx_grau4 } } } #end #macro pescoco2(angulos) union{ cylinder{ <0, 0, 0>, <3, 0, 0>, 0.35 texture{ tx_grau3 } } object{ cabeca() rotate angulos[4]*y rotate angulos[5]*z translate <3, 0, 0> } } #end #macro pescoco1(angulos) union{ cylinder{ <0,0,0>, <2, 0, 0>, 0.35 texture{ tx_grau2 } } object{ pescoco2(angulos) rotate angulos[2]*y rotate angulos[3]*z translate <2, 0, 0> } } #end //-------------------------------------------------------------- #macro extremidade() cylinder{ <0,0,0>, <3, 0, 0>, 0.35 texture{ tx_grau4 } } #end #macro sub_membro(angulos) union{ cylinder{ <0, 0, 0>, <3, 0, 0>, 0.35 texture{ tx_grau1 } } object{ extremidade() rotate angulos[4]*y rotate angulos[5]*z translate <3, 0, 0> } } #end #macro membro(angulos) union{ cylinder{ <0,0,0>, <5, 0, 0>, 0.35 texture{ tx_grau2 } } object{ sub_membro(angulos) rotate angulos[2]*y rotate angulos[3]*z translate <5, 0, 0> } } #end //-------------------------------------------------------------- #macro robo(angulos_perna1, angulos_perna2, angulos_braco1, angulos_braco2, angulos_cabeca) #local centro_ROBO = <0, 0, 0>; #local raio_corpo = 2; #local centro_corpo_inferior = centro_ROBO - <0, 0, raio_corpo>; #local centro_corpo_superior = centro_ROBO + <0, 0, raio_corpo>; #local perna1 = centro_corpo_inferior + <0, raio_corpo, 0>; #local perna2 = centro_corpo_inferior - <0, raio_corpo, 0>; #local braco1 = centro_corpo_superior + <0, raio_corpo, 0>; #local braco2 = centro_corpo_superior - <0, raio_corpo, 0>; #local cabeca1 = centro_corpo_superior + <0, 0, raio_corpo>; union{ corpo(centro_corpo_inferior, raio_corpo) corpo(centro_corpo_superior, raio_corpo) object{ membro(angulos_perna1) rotate angulos_perna1[0]*y rotate angulos_perna1[1]*z translate perna1 } object{ membro(angulos_perna2) rotate angulos_perna2[0]*y rotate angulos_perna2[1]*z translate perna2 } object{ membro(angulos_braco1) rotate angulos_braco1[0]*y rotate angulos_braco1[1]*z translate braco1 } object{ membro(angulos_braco2) rotate angulos_braco2[0]*y rotate angulos_braco2[1]*z translate braco2 } object{ pescoco1(angulos_cabeca) rotate angulos_cabeca[0]*y rotate angulos_cabeca[1]*z translate cabeca1 } } #end #macro cena(tt) #local c = tt*2*radians(180); #local angulos_perna1 = array[6] {45*cos(c), cos(c), 30*cos(c), 30*cos(c), 180, 90} #local angulos_perna2 = array[6] {45*cos(c), 32*cos(c), 60*cos(c), 90*cos(c), 145*cos(c), 130} #local angulos_braco1 = array[6] {-23*cos(c), 32, 90*cos(c), 90*cos(c), 145*cos(c), 130*cos(c)} #local angulos_braco2 = array[6] {-65*cos(c), 0, 86*cos(c), 15*cos(c), 180*cos(c), 90} #local ang = 2*max(0.5,tt)*(min(-60*cos(c),0) + min(60*cos(c), 0)); #local angulos_cabeca = array[6] {ang, 30*cos(c), -30*cos(c), 30*cos(c), 15*cos(c), -65*cos(c)} robo(angulos_perna1, angulos_perna2, angulos_braco1, angulos_braco2, angulos_cabeca) #end union{ cena(clock) light_source { <0, 10, -3> color rgb < 200/255, 42/255, 222/255 > spotlight radius 100 falloff 30 tightness 10 point_at <0, 0, 0> } } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 3*9.0; #declare dir_camera = < 10.00, 4.00, 7.00 >; #declare dist_camera = raio_cena; #declare intens_luz = 0.80; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)