// Fabio de Souza Azevedo - RA 952215 // 2021-09-01 // // TP03 // 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_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.80, 0.10 > } finish{ diffuse 0.9 ambient 0.1 } } #declare tx_espelho = texture{ pigment{ color rgb < 1.00, 0.85, 0.30 > } finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 } } #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 } } #declare tx_verde_escuro = texture{ pigment { color rgb <0, 0.5, 0> } //finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_verde_claro = texture{ pigment { color rgb <0, 1.0, 0> } //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 2.0 } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare s1 = seed(0); #declare s2 = seed(235); #declare s3 = seed(728); #declare fator = 0.8; #macro folha(p) sphere { p, 0.15} texture { tx_verde_claro } #end #macro galho(p, vd, L, r) // {p} = Um ponto, o centro da base do galho. // {vd} = Vetor de comprimento unitário, que dá a direção do galho. // {L} = Comprimento do galho. // {r} = Raio do galho. union { cylinder { p, p+(vd*L), r } // subgalho 1 #local p1 = p+(vd*L); #if (r > 0.05) #local x1 = rand(s1); #local y1 = rand(s2); #local z1 = rand(s3); #local vd1 = vd + ; #local L1 = L*fator; #local r1 = r*fator; object { galho (p1, vnormalize(vd1), L1, r1) } #else object { folha(p1) } #end // subgalho 2 #local p2 = p+(vd*L); #if (r > 0.05) #local x2 = rand(s1); #local y2 = rand(s2); #local z2 = rand(s3); #local vd2 = vd + ; #local L2 = L*fator; #local r2 = r*fator; object { galho (p2, vnormalize(vd2), L2, r2) } #else object { folha(p2) } #end texture { tx_verde_escuro } } #end #macro arvore(P,A,K) object { galho(P, z, A, 0.5) } #end #declare meio_lado_quadrado = 10.0; #declare s4 = seed(952215); // Meu RA 8-) #declare altura = 3.0; #macro plantacao(N,A,K) #local i = 0; #while (i < N) #if (sin(15*i*i) > 0.7) #local qq = s4*meio_lado_quadrado; object { arvore(, A, K) } // Nao estou usando K. #end #local i = i+1; #end #end #include "eixos.inc" // Aqui está a cena, finalmente: #declare lins_aliens = 3;//30; #declare cols_aliens = 2;//20; #declare lins_terra = 2;//25; #declare cols_terra = 2;//25; object { eixos(8.0) } //object { galho(<0.0, 0.0, 0.0>, <0.0, 0.0, 1.0>, 3, 0.5) } object { arvore(0, 2, 0) } //object { plantacao(2,altura,0) } #include "camlight.inc" #declare centro_cena = <2*lins_aliens, 1.2*cols_aliens, 5.0>; // < 0.00, 3.00, 1.00 >; #declare raio_cena = 3.0*sqrt(lins_terra*lins_terra + cols_terra*cols_terra); // 20.0; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 5*raio_cena; #declare intens_luz = 1.20; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)