// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // Declarações essenciais background{ color rgb < 0.75, 0.75, 0.85 > } // ====================================================================== //Parâmetros #declare NP = 19; // ====================================================================== // Texturas #declare tx_cinza = texture{ pigment{ color rgb < 0.80, 0.80, 0.80 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_xadrez = texture{ pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > } finish{ diffuse 0.9 ambient 0.1 } scale 1.5 } #declare tx_vidro = texture{ pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 } finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 } } // ====================================================================== // Formas // ====================================================================== // Macros #macro robo(P1,P2,P3,E11,E12,E13,E14,D11,D12,D13,D14,E21,E22,E23,E24,D21,D22,D23,D24) union{ object{cylinder{<0,0,0>,<0,6,0>, 1 texture{tx_cinza}}} object{pesco(P1,P2,P3) translate<0,6,0>} object{braco(E21,E22,E23,E24) translate<1,0.5,0>} object{braco(E11,E12,E13,E14) translate<1,5.5,0>} object{braco(D21,D22,D23,D24) translate<1,0.5,0> scale<-1,1,1>} object{braco(D11,D12,D13,D14) translate<1,5.5,0> scale<-1,1,1>} } #end #macro braco(A1,A2,A3,A4) union{ object{subbraco(A2, A3) translate <3, 0, 0>} object{cylinder{<0,0,0>,<3,0,0>, 0.5 texture{tx_cinza}}} rotate<0,A1,A4> } #end #macro subbraco(A2,A3) union{ object{mao(A3) translate <2.5, 0, 0>} object{cylinder{<0,0,0>,<2,0,0>, 0.5 texture{tx_cinza}}} rotate<0,A2,0> } #end #macro mao(A3) union{ sphere{<0,0,0>, 0.5 texture{tx_cinza}} cylinder{<0,-0.4,0>,<2,-0.5,0>, 0.1 texture{tx_cinza}} cylinder{<0,0.00,0>,<2,0.00,0>, 0.1 texture{tx_cinza}} cylinder{<0,+0.4,0>,<2,+0.5,0>, 0.1 texture{tx_cinza}} rotate <0, A3, 0> // } #end #macro pesco(P1,P2,P3) union{ object{subpesco(P2,P3) translate <0, 2, 0>} object{cylinder{<0,0,0>,<0,2,0>, 0.3 texture{tx_cinza}}} rotate<0,0,P1> } #end #macro subpesco(P2,P3) union{ object{cabeca(P3) translate <0, 2, 0>} object{cylinder{<0,0,0>,<0,2,0>, 0.3 texture{tx_cinza}}} rotate<0,0,P2> } #end #macro cabeca(P3) object{box{<-1,0,-0.25>, <+1,+0.5,+0.25> texture{tx_cinza}} rotate <0,0,P3>} #end #macro empacota(P1,P2,P3,E11,E12,E13,E14,D11,D12,D13,D14,E21,E22,E23,E24,D21,D22,D23,D24) #local P = array[NP]; #local P[0] = P1; #local P[1] = P2; #local P[2] = P3; #local P[3] = E11; #local P[4] = E12; #local P[5] = E13; #local P[6] = E14; #local P[7] = D11; #local P[8] = D12; #local P[9] = D13; #local P[10] = D14; #local P[11] = E21; #local P[12] = E22; #local P[13] = E23; #local P[14] = E24; #local P[15] = D21; #local P[16] = D22; #local P[17] = D23; #local P[18] = D24; P #end #macro acha_quadro(tt) #switch(tt) #range(0.0,0.1) #local k = 0; #break #range(0.1,0.4) #local k = 1; #break #range(0.4,0.5) #local k = 2; #break #range(0.5,0.6) #local k = 3; #break #range(0.6,0.9) #local k = 4; #break #range(0.9,1.0) #local k = 5; #break #end k; #end #macro interpola_quadros(tt, ta, Pa, tb, Pb,P1,P2,P3,E11,E12,E13,E14,D11,D12,D13,D14,E21,E22,E23,E24,D21,D22,D23,D24) #local s = (tt-ta)/(tb-ta); #declare P1 = (1-s)*Pa[0] + s*Pb[0]; #declare P2 = (1-s)*Pa[1] + s*Pb[1]; #declare P3 = (1-s)*Pa[2] + s*Pb[2]; #declare E11 = (1-s)*Pa[3] + s*Pb[3]; #declare E12 = (1-s)*Pa[4] + s*Pb[4]; #declare E13 = (1-s)*Pa[5] + s*Pb[5]; #declare E14 = (1-s)*Pa[6] + s*Pb[6]; #declare D11 = (1-s)*Pa[7] + s*Pb[7]; #declare D12 = (1-s)*Pa[8] + s*Pb[8]; #declare D13 = (1-s)*Pa[9] + s*Pb[9]; #declare D14 = (1-s)*Pa[10] + s*Pb[10]; #declare E21 = (1-s)*Pa[11] + s*Pb[11]; #declare E22 = (1-s)*Pa[12] + s*Pb[12]; #declare E23 = (1-s)*Pa[13] + s*Pb[13]; #declare E24 = (1-s)*Pa[14] + s*Pb[14]; #declare D21 = (1-s)*Pa[15] + s*Pb[15]; #declare D22 = (1-s)*Pa[16] + s*Pb[16]; #declare D23 = (1-s)*Pa[17] + s*Pb[17]; #declare D24 = (1-s)*Pa[18] + s*Pb[18]; #end #macro cena(tt) #local NQ = 6; #local TQ = array[NQ+1]; #local PQ = array[NQ+1]; #local TQ[0] = 0.0; #local TQ[1] = 0.1; #local TQ[2] = 0.4; #local TQ[3] = 0.5; #local TQ[4] = 0.6; #local TQ[5] = 0.9; #local TQ[6] = 1.0; #local PQ[0] = empacota(+30,-45,15, -60,-45,-60,-45, -60,-45,-60,+45, -60,-45,-60,+45, -60,-45,-60,-45) #local PQ[1] = empacota(+30,-45,15, -60,-45,-60,-45, -60,-20,-00,+45, -60,-20,-00,+45, -60,-45,-60,-45) #local PQ[2] = empacota(+30,-45,15, -60,-45,-60,+45, -60,-20,-00,-45, -60,-20,-00,-45, -60,-45,-60,+45) #local PQ[3] = empacota(+30,-45,15, -60,-45,-60,+45, -60,-45,-60,-45, -60,-45,-60,-45, -60,-45,-60,+45) #local PQ[4] = empacota(+30,-45,15, -60,-20,-00,+45, -60,-45,-60,-45, -60,-45,-60,-45, -60,-20,-00,+45) #local PQ[5] = empacota(+30,-45,15, -60,-20,-00,-45, -60,-45,-60,+45, -60,-45,-60,+45, -60,-20,-00,-45) #local PQ[6] = empacota(+30,-45,15, -60,-45,-60,-45, -60,-45,-60,+45, -60,-45,-60,+45, -60,-45,-60,-45) #local k = acha_quadro(tt) #local P1 = 0.0;#local P2 = 0.0;#local P3 = 0.0; #local E11 = 0.0;#local E12 = 0.0;#local E13 = 0.0;#local E14 = 0.0;#local D11 = 0.0;#local D12 = 0.0;#local D13 = 0.0;#local D14 = 0.0; #local E21 = 0.0;#local E22 = 0.0;#local E23 = 0.0;#local E24 = 0.0;#local D21 = 0.0;#local D22 = 0.0;#local D23 = 0.0;#local D24 = 0.0; interpola_quadros(tt, TQ[k], PQ[k], TQ[k+1], PQ[k+1], P1,P2,P3,E11,E12,E13,E14,D11,D12,D13,D14,E21,E22,E23,E24,D21,D22,D23,D24) #switch(clock) #range(0.0,0.1) #local auxtrans = 0.5; #break #range(0.1,0.4) #local auxtrans = clock*5; #break #range(0.4,0.5) #local auxtrans = 2; #break #range(0.5,0.6) #local auxtrans = 2; #break #range(0.6,0.9) #local auxtrans = clock*5 - 1; #break #range(0.9,1.0) #local auxtrans = 3.5; #break #end #local rob = object{robo(P1,P2,P3,E11,E12,E13,E14,D11,D12,D13,D14,E21,E22,E23,E24,D21,D22,D23,D24) translate<0,auxtrans,0>} rob #end // ====================================================================== //Render object{cena(clock)} //object{robo(-45,+45,30,30,30,30,60,30,30,30,0,30,30,30,-0,30,30,30,-60)} object{box{<-100,-100,-10>,<100,100,-5>} texture{tx_xadrez}} object{cylinder{<0,-100,+4.5>,<0,100,+4.5>, 1}texture{tx_vidro}} #include "camlight.inc" #declare centro_cena = < 0.00, +3*clock, 1.00 >; #declare raio_cena = 20.0; #declare dir_camera = < 10.00, 10.00, 10.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)