// 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.90, 0.80, 0.85 > } #declare tx_plastico = texture{ pigment{ color rgb < 0.10, 0.80, 1.00 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_fosca = texture{ pigment{ color rgb < 1.00, 0.5, 0.5 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_preta = texture{ pigment{ color rgb < 0.1, 0.1, 0.1 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_fosca_cinza = texture{ pigment{ color rgb < 0.9, 0.9, 0.9 > } finish{ diffuse 0.9 ambient 0.6 } } #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 2.0 } // ====================================================================== // DESCRI��O DA CENA #declare raio = 2.000; // A principio pode-se usar declare ou local // Partes da cena: // Dando nome para o objeto não coloca ponto e virgula // Declara ponto ou valor usar ponto e virgula #declare coneChao = cone { <0, 0, 0>, 1.5 // , center & radius of one end <0, 0, 1>, 0.5 // , center & radius of the other end } #declare banco = box { <-1.5, -1.5, 1>, <1.5, 1.5, 2> // near lower left corner, far upper right corner } #declare coneEncostoSuperior = cone { <-1.5, 0, 4>, 1.0 // , center & radius of one end <-1.5, 0, 2>, 0.25 // , center & radius of the other end } #declare coneEncostoInferior = cone { <-1.5, 0, 2>, 1.0 // , center & radius of one end <-1.5, 0, 4>, 0.25 // , center & radius of the other end } #declare encostoCabeca = box { <-0.8, -0.8, 4>, <-0.8, 0.8, 4.5> // near lower left corner, far upper right corner } #declare encostoBracoDireito = cylinder { <-1, 1.5, 3>, <1, 1.5, 3>, 0.2 // center of one end, center of other end, radius } #declare chao = box{ <-20,-20,-1>, <+20,+20,0> } #include "eixos.inc" // Last edited on 2014-06-11 21:03:45 by stolfilocal #macro retalho_barra(p,q,r,txg) // Cria uma barra de {p} para {q} com raio {r}; omite se {p} muito perto de {q}. #if ((r > 0) & (vlength(p - q) > 0.01*r)) cylinder{p,q,r texture{txg}} #end #end #macro retalho (p,rad,txg,txr,xmin,ymin,xmax,ymax) // Cria um retalho de Bezier com pontos de controle {p[0..3,0..3]} // com textura {txr}.. // Se {rad} é positivo, também mostra a grade de pontos de controle, // com barras de raio {rad} e textura {txg}. union{ #local r = rad; // Raio das varetas. #local R = 2*r; // Raio das bolas. // O retalho propriamente dito: bicubic_patch{ type 1 u_steps 8 v_steps 8 uv_vectors , , , p[3][0],p[3][1],p[3][2],p[3][3], p[2][0],p[2][1],p[2][2],p[2][3], p[1][0],p[1][1],p[1][2],p[1][3], p[0][0],p[0][1],p[0][2],p[0][3] texture {txr} } #if (rad > 0) // Bolas da grade de controle sphere{p[0][0],R texture{txg}} sphere{p[0][1],R texture{txg}} sphere{p[0][2],R texture{txg}} sphere{p[0][3],R texture{txg}} sphere{p[1][0],R texture{txg}} sphere{p[1][1],R texture{txg}} sphere{p[1][2],R texture{txg}} sphere{p[1][3],R texture{txg}} sphere{p[2][0],R texture{txg}} sphere{p[2][1],R texture{txg}} sphere{p[2][2],R texture{txg}} sphere{p[2][3],R texture{txg}} sphere{p[3][0],R texture{txg}} sphere{p[3][1],R texture{txg}} sphere{p[3][2],R texture{txg}} sphere{p[3][3],R texture{txg}} // Barras da grade de controle retalho_barra(p[0][0],p[0][1],r,txg) retalho_barra(p[0][1],p[0][2],r,txg) retalho_barra(p[0][2],p[0][3],r,txg) retalho_barra(p[0][0],p[1][0],r,txg) retalho_barra(p[0][1],p[1][1],r,txg) retalho_barra(p[0][2],p[1][2],r,txg) retalho_barra(p[0][3],p[1][3],r,txg) retalho_barra(p[1][0],p[1][1],r,txg) retalho_barra(p[1][1],p[1][2],r,txg) retalho_barra(p[1][2],p[1][3],r,txg) retalho_barra(p[1][0],p[2][0],r,txg) retalho_barra(p[1][1],p[2][1],r,txg) retalho_barra(p[1][2],p[2][2],r,txg) retalho_barra(p[1][3],p[2][3],r,txg) retalho_barra(p[2][0],p[2][1],r,txg) retalho_barra(p[2][1],p[2][2],r,txg) retalho_barra(p[2][2],p[2][3],r,txg) retalho_barra(p[2][0],p[3][0],r,txg) retalho_barra(p[2][1],p[3][1],r,txg) retalho_barra(p[2][2],p[3][2],r,txg) retalho_barra(p[2][3],p[3][3],r,txg) retalho_barra(p[3][0],p[3][1],r,txg) retalho_barra(p[3][1],p[3][2],r,txg) retalho_barra(p[3][2],p[3][3],r,txg) #end } #end #macro poltronaGamer() union { #local cabeca = array[4][4]; #local encosto = array[4][4]; #local pes_pessoa = array[4][4]; #local pe1_cadeira = array[4][4]; #local pe2_cadeira = array[4][4]; #local apoio = array[4][4]; #local cabeca[0][0] = <0,0,3>; #local cabeca[0][1] = <0,1,3>; #local cabeca[0][2] = <0,2,3>; #local cabeca[0][3] = <0,3,3>; #local cabeca[1][0] = <1,0,6>; #local cabeca[1][1] = <1,1,6>; #local cabeca[1][2] = <1,2,6>; #local cabeca[1][3] = <1,3,6>; #local cabeca[2][0] = <2,0,0>; #local cabeca[2][1] = <2,1,0>; #local cabeca[2][2] = <2,2,0>; #local cabeca[2][3] = <2,3,0>; #local cabeca[3][0] = <4,0,2.5>; #local cabeca[3][1] = <4,1,2.5>; #local cabeca[3][2] = <4,2,2.5>; #local cabeca[3][3] = <4,3,2.5>; #local encosto[0][0] = <4,0,2.5>; #local encosto[0][1] = <4,1,2.5>; #local encosto[0][2] = <4,2,2.5>; #local encosto[0][3] = <4,3,2.5>; #local encosto[1][0] = <5,0,3.5>; #local encosto[1][1] = <5,1,3.5>; #local encosto[1][2] = <5,2,3.5>; #local encosto[1][3] = <5,3,3.5>; #local encosto[2][0] = <6,0,2>; #local encosto[2][1] = <6,1,2>; #local encosto[2][2] = <6,2,2>; #local encosto[2][3] = <6,3,2>; #local encosto[3][0] = <7,0,1.5>; #local encosto[3][1] = <7,1,1.5>; #local encosto[3][2] = <7,2,1.5>; #local encosto[3][3] = <7,3,1.5>; #local pes_pessoa[0][0] = <7,0,1.5>; #local pes_pessoa[0][1] = <7,1,1.5>; #local pes_pessoa[0][2] = <7,2,1.5>; #local pes_pessoa[0][3] = <7,3,1.5>; #local pes_pessoa[1][0] = <7.5,0,1>; #local pes_pessoa[1][1] = <7.5,1,1>; #local pes_pessoa[1][2] = <7.5,2,1>; #local pes_pessoa[1][3] = <7.5,3,1>; #local pes_pessoa[2][0] = <7,0,0.5>; #local pes_pessoa[2][1] = <7,1,0.5>; #local pes_pessoa[2][2] = <7,2,0.5>; #local pes_pessoa[2][3] = <7,3,0.5>; #local pes_pessoa[3][0] = <6.5,0,0.25>; #local pes_pessoa[3][1] = <6.5,1,0.25>; #local pes_pessoa[3][2] = <6.5,2,0.25>; #local pes_pessoa[3][3] = <6.5,3,0.25>; #local pe1_cadeira[0][0] = <6.5,0,0.25>; #local pe1_cadeira[0][1] = <6.5,1,0.25>; #local pe1_cadeira[0][2] = <6.5,2,0.25>; #local pe1_cadeira[0][3] = <6.5,3,0.25>; #local pe1_cadeira[1][0] = <6,0,0.15>; #local pe1_cadeira[1][1] = <6,1,0.15>; #local pe1_cadeira[1][2] = <6,2,0.15>; #local pe1_cadeira[1][3] = <6,3,0.15>; #local pe1_cadeira[2][0] = <5.5,0,0.05>; #local pe1_cadeira[2][1] = <5.5,1,0.05>; #local pe1_cadeira[2][2] = <5.5,2,0.05>; #local pe1_cadeira[2][3] = <5.5,3,0.05>; #local pe1_cadeira[3][0] = <5,0,0>; #local pe1_cadeira[3][1] = <5,1,0>; #local pe1_cadeira[3][2] = <5,2,0>; #local pe1_cadeira[3][3] = <5,3,0>; #local pe2_cadeira[0][0] = <5,0,0>; #local pe2_cadeira[0][1] = <5,1,0>; #local pe2_cadeira[0][2] = <5,2,0>; #local pe2_cadeira[0][3] = <5,3,0>; #local pe2_cadeira[1][0] = <4,0,0>; #local pe2_cadeira[1][1] = <4,1,0>; #local pe2_cadeira[1][2] = <4,2,0>; #local pe2_cadeira[1][3] = <4,3,0>; #local pe2_cadeira[2][0] = <3,0,0>; #local pe2_cadeira[2][1] = <3,1,0>; #local pe2_cadeira[2][2] = <3,2,0>; #local pe2_cadeira[2][3] = <3,3,0>; #local pe2_cadeira[3][0] = <2,0,0>; #local pe2_cadeira[3][1] = <2,1,0>; #local pe2_cadeira[3][2] = <2,2,0>; #local pe2_cadeira[3][3] = <2,3,0>; #local apoio[0][0] = <2,0,0>; #local apoio[0][1] = <2,1,0>; #local apoio[0][2] = <2,2,0>; #local apoio[0][3] = <2,3,0>; #local apoio[1][0] = <0.5,0,0.5>; #local apoio[1][1] = <0.5,1,0.5>; #local apoio[1][2] = <0.5,2,0.5>; #local apoio[1][3] = <0.5,3,0.5>; #local apoio[2][0] = <0.25,0,1>; #local apoio[2][1] = <0.25,1,1>; #local apoio[2][2] = <0.25,2,1>; #local apoio[2][3] = <0.25,3,1>; #local apoio[3][0] = <0,0,3>; #local apoio[3][1] = <0,1,3>; #local apoio[3][2] = <0,2,3>; #local apoio[3][3] = <0,3,3>; object{retalho (cabeca,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} object{retalho (encosto,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} object{retalho (pes_pessoa,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} object{retalho (pe1_cadeira,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} object{retalho (pe2_cadeira,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} object{retalho (apoio,0.01,tx_fosca_cinza,tx_fosca_preta,0,0,1,1)} } #end union{ object{ eixos(2.00) } object{poltronaGamer()} object{poltronaGamer() scale<+1,-1,+1>} } #include "camlight.inc" #declare centro_cena = < 5.00, 0.00, 2.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; // #declare dir_camera = < 0.00, 250.00, 0.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)