// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2020-09-30 19:57:13 by jstolfi // ====================================================================== // Declarações essenciais #include "retalho.inc" background{ color rgb < 0.75, 0.75, 0.85 > } #declare theSeed = seed(4200); // ====================================================================== // Texturas #declare tx_tubo = texture{ pigment{ color rgb < 0.50, 0.50, 0.50 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca_vermelha = texture{ pigment{ color rgb < 0.70, 0.10, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_verde = texture{ pigment{ color rgb < 0.10, 0.70, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_azul = texture{ pigment{ color rgb < 0.10, 0.10, 0.70 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_amarela = texture{ pigment{ color rgb < 0.70, 0.70, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_chao = texture{ pigment{ color rgb < 0.60, 0.40, 0.40 > } finish{ diffuse 0.9 ambient 0.1 } } // ====================================================================== // Formas #declare tanque1 = union{ sphere{<0,0,0.6>, 0.6 texture{tx_fosca_amarela}} cylinder{<0,0,0.6>, <0.9,0,0.6>, 0.1 texture{tx_tubo}} } #declare tanque2 = union{ sphere{<0,0,0.9>, 0.4 texture{tx_fosca_verde}} sphere{<0,0,0.4>, 0.5 texture{tx_fosca_verde}} cylinder{<0,0,0.4>, <0.7,0,0.4>, 0.1 texture{tx_tubo}} cylinder{<0,0,0.9>, <0.6,0,0.9>, 0.1 texture{tx_tubo}} } #declare tanque3 = union{ cone{<0,0,0>, 0.8, <0,0,0.3>, 0.6 texture{tx_fosca_vermelha}} cylinder{<0,0,0.3>, <0,0,1.5>, 0.6 texture{tx_fosca_vermelha}} cylinder{<-0.7,0,0.4>, <0.7,0,0.4>, 0.1 texture{tx_tubo}} cylinder{<0,0,0>, <0,0,1.8>, 0.1 texture{tx_tubo}} } #declare tanque4 = union{ cone{<0,0,0>,0.8 , <0,0,0.7>, 0.5 texture{tx_fosca_azul}} sphere{<0,0,0.7>, 0.5 texture{tx_fosca_azul}} cylinder{<-0.7,0,0.4>, <0.7,0,0.4>, 0.1 texture{tx_tubo}} cylinder{<0,-0.7,0.4>, <0,0.7,0.4>, 0.1 texture{tx_tubo}} } // ====================================================================== // Macros #macro interpola1(ta,t0,v0,t1,v1) #local fator = (ta-t0)/(t1-t0); #local valor = (fator * v1) + ((1-fator) * v0); valor #end #macro interpola2(p0,p1,num) union{ #local currentnum = num; #while(currentnum > 0) #local centro = interpola1(currentnum, 0, p0, num, p1); object{sphere{centro, 0.1} texture{tx_tubo}} #local currentnum = currentnum - 1; #end } #end #macro interpola3(ta,t0,tf,v0,v1,v2,v3) #local v01 = interpola1(ta,t0,v0,tf,v1); #local v12 = interpola1(ta,t0,v1,tf,v2); #local v23 = interpola1(ta,t0,v2,tf,v3); #local v012 = interpola1(ta,t0,v01,tf,v12); #local v123 = interpola1(ta,t0,v12,tf,v23); #local v0123 = interpola1(ta,t0,v012,tf,v123); v0123 #end #macro interpola4(p0,p1,p2,p3,num) union{ #local currentnum = num; #while(currentnum > 0) #local centro = interpola3(currentnum, 0, num, p0, p1, p2, p3); object{sphere{centro, 0.1} texture{tx_tubo}} #local currentnum = currentnum - 1; #end } #end #macro interpola3_multi(ta,tsize,p0,n,ar1,ar2,pf) #local k = int(ta); #if(k = 0) #local q0 = p0; #else #local q0 = (ar2[k-1] + ar1[k]) /2; #end #if(k = n-1) #local qf = pf; #else #local qf = (ar2[k] + ar1[k+1]) /2; #end #local pt = interpola3(ta, k, k+1,q0,ar1[k],ar2[k],qf); pt #end #macro interpola4_multi(p0,n,ar1,ar2,pf,num) union{ #local currentnum = (num*n)-1; #while(currentnum > 0) #local centro = interpola3_multi(currentnum/num, num, p0, n, ar1, ar2, pf); object{sphere{centro, 0.1} texture{tx_tubo}} #local currentnum = currentnum - 1; #end } #end #macro cadeira(raio, escalax, escalay, escalaz) #declare coord1 = array[4][4]; #declare coord1[0][0] = <0,0,3>; #declare coord1[0][1] = <1,0,3>; #declare coord1[0][2] = <2,0,3>; #declare coord1[0][3] = <3,0,3>; #declare coord1[1][0] = <0,3,1>; #declare coord1[1][1] = <1,3,1>; #declare coord1[1][2] = <2,2,3>; #declare coord1[1][3] = <3,2,3>; #declare coord1[2][0] = <0,0,-3>; #declare coord1[2][1] = <1,0,-3>; #declare coord1[2][2] = <2,0,-1>; #declare coord1[2][3] = <3,0,-1>; #declare coord1[3][0] = <0,2,-3>; #declare coord1[3][1] = <1,2,-3>; #declare coord1[3][2] = <2,2,-1>; #declare coord1[3][3] = <3,2,-1>; //############################## #declare coord2 = array[4][4]; #declare coord2[0][0] = <0,2,-3>; #declare coord2[0][1] = <1,2,-3>; #declare coord2[0][2] = <2,2,-1>; #declare coord2[0][3] = <3,2,-1>; #declare coord2[1][0] = <0,4,-3>; #declare coord2[1][1] = <1,4,-3>; #declare coord2[1][2] = <2,4,-1>; #declare coord2[1][3] = <3,4,-1>; #declare coord2[2][0] = <0,1,-5>; #declare coord2[2][1] = <1,1,-5>; #declare coord2[2][2] = <2,1,-3>; #declare coord2[2][3] = <3,1,-3>; #declare coord2[3][0] = <0,5,-6>; #declare coord2[3][1] = <1,5,-6>; #declare coord2[3][2] = <2,5,-6>; #declare coord2[3][3] = <3,5,-6>; //############################## #declare coord3 = array[4][4]; #declare coord3[0][0] = <3,0,3>; #declare coord3[0][1] = <4,0,3>; #declare coord3[0][2] = <5,0,3>; #declare coord3[0][3] = <6,0,3>; #declare coord3[1][0] = <3,2,3>; #declare coord3[1][1] = <4,2,3>; #declare coord3[1][2] = <5,2,3>; #declare coord3[1][3] = <6,2,3>; #declare coord3[2][0] = <3,0,-1>; #declare coord3[2][1] = <4,0,-1>; #declare coord3[2][2] = <5,2,0>; #declare coord3[2][3] = <6,4,1>; #declare coord3[3][0] = <3,2,-1>; #declare coord3[3][1] = <4,2,-1>; #declare coord3[3][2] = <5,4,0>; #declare coord3[3][3] = <6,4,1>; //############################## #declare coord4 = array[4][4]; #declare coord4[0][0] = <-0,0,3>; #declare coord4[0][1] = <-1,0,3>; #declare coord4[0][2] = <-2,0,3>; #declare coord4[0][3] = <-3,0,3>; #declare coord4[1][0] = <-0,3,1>; #declare coord4[1][1] = <-1,3,1>; #declare coord4[1][2] = <-2,2,3>; #declare coord4[1][3] = <-3,2,3>; #declare coord4[2][0] = <-0,0,-3>; #declare coord4[2][1] = <-1,0,-3>; #declare coord4[2][2] = <-2,0,-1>; #declare coord4[2][3] = <-3,0,-1>; #declare coord4[3][0] = <-0,2,-3>; #declare coord4[3][1] = <-1,2,-3>; #declare coord4[3][2] = <-2,2,-1>; #declare coord4[3][3] = <-3,2,-1>; //############################## #declare coord5 = array[4][4]; #declare coord5[0][0] = <-0,2,-3>; #declare coord5[0][1] = <-1,2,-3>; #declare coord5[0][2] = <-2,2,-1>; #declare coord5[0][3] = <-3,2,-1>; #declare coord5[1][0] = <-0,4,-3>; #declare coord5[1][1] = <-1,4,-3>; #declare coord5[1][2] = <-2,4,-1>; #declare coord5[1][3] = <-3,4,-1>; #declare coord5[2][0] = <-0,1,-5>; #declare coord5[2][1] = <-1,1,-5>; #declare coord5[2][2] = <-2,1,-3>; #declare coord5[2][3] = <-3,1,-3>; #declare coord5[3][0] = <-0,5,-6>; #declare coord5[3][1] = <-1,5,-6>; #declare coord5[3][2] = <-2,5,-6>; #declare coord5[3][3] = <-3,5,-6>; //############################## #declare coord6 = array[4][4]; #declare coord6[0][0] = <-3,0,3>; #declare coord6[0][1] = <-4,0,3>; #declare coord6[0][2] = <-5,0,3>; #declare coord6[0][3] = <-6,0,3>; #declare coord6[1][0] = <-3,2,3>; #declare coord6[1][1] = <-4,2,3>; #declare coord6[1][2] = <-5,2,3>; #declare coord6[1][3] = <-6,2,3>; #declare coord6[2][0] = <-3,0,-1>; #declare coord6[2][1] = <-4,0,-1>; #declare coord6[2][2] = <-5,2,0>; #declare coord6[2][3] = <-6,4,1>; #declare coord6[3][0] = <-3,2,-1>; #declare coord6[3][1] = <-4,2,-1>; #declare coord6[3][2] = <-5,4,0>; #declare coord6[3][3] = <-6,4,1>; union{ //Cadeira 1 union{ object{retalho(coord1,raio,tx_tubo,tx_fosca_verde,0,0,1,1)} object{retalho(coord2,raio,tx_tubo,tx_fosca_azul,0,0,1,1)} object{retalho(coord3,raio,tx_tubo,tx_fosca_vermelha,0,0,1,1)} object{retalho(coord4,raio,tx_tubo,tx_fosca_verde,0,0,1,1)} object{retalho(coord5,raio,tx_tubo,tx_fosca_azul,0,0,1,1)} object{retalho(coord6,raio,tx_tubo,tx_fosca_vermelha,0,0,1,1)} } //Cadeira 2 union{ object{retalho(coord1,raio,tx_tubo,tx_fosca_verde,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } object{retalho(coord2,raio,tx_tubo,tx_fosca_azul,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } object{retalho(coord3,raio,tx_tubo,tx_fosca_vermelha,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } object{retalho(coord4,raio,tx_tubo,tx_fosca_verde,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } object{retalho(coord5,raio,tx_tubo,tx_fosca_azul,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } object{retalho(coord6,raio,tx_tubo,tx_fosca_vermelha,0,0,1,1) scale translate <10 + escalax, escalay, escalaz> } } } #end // ====================================================================== //Render object{cadeira(0,2,2,2)} //object{box{<-100,-100,-1>,<100,100,0>} texture{tx_chao}} #include "camlight.inc" #declare centro_cena = < 15.00, 5.00, 1.00 >; #declare raio_cena = 15.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)