// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS background{ color rgb < 0.75, 0.80, 0.85 > } #declare tx_texto = texture{ pigment{ color rgb < 1, 0.75, 0.85 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_pedestal = texture{ pigment{ color rgb < 1, 1, 1 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_tapete = texture{ pigment{ color rgb < 1, 0, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_red = texture{ pigment{ color rgb < 1, 0, 0 > } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_bandeira = texture{ uv_mapping pigment{ image_map { jpeg "Inglaterra.jpg"} } finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 } } #declare tx_piso = 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 } #declare tx_anuncio = texture{ pigment{ image_map { jpeg "spfc.jpg"} scale (2.5) rotate 90*z translate <1.25,1.3,0>} finish{ diffuse 0.9 ambient 0.1 } scale 2.0 } #declare tx_vidro = texture{ pigment{ color rgb < 1, 1, 1.00 > filter 1} finish{ diffuse 0.03 reflection 0.0 ambient 0.02 specular 0.25 roughness 0.005 } } // ====================================================================== // DESCRIÇÃO DA CENA #declare raio = 1.000; // Partes da cena: #macro interpola4 (ta, A,B,C,D,td, tt) #local AB = interpola2(ta,A,td,B,tt); #local BC = interpola2(ta,B,td,C,tt); #local CD = interpola2(ta,C,td,D,tt); #local ABC = interpola2(ta,AB,td,BC,tt); #local BCD = interpola2(ta,BC,td,CD,tt); #local ABCD = interpola2(ta,ABC,td,BCD,tt); ABCD #end #macro interpola2 (ta, A, tb, B, tt) #local r = (tt - ta)/(tb-ta); ((1-r)*A + (r)*B) #end #macro predio () union { box {<4,4,0>, <-4,-4,15>} } #end #macro janela (dy, h) union { box {<5.5,1,0>, <-5.5,-1,1>} translate <0,dy,h> } #end #macro haste (dx, dy, h) union { box {<0.15,0.15,-1>, <-0.15,-0.15,3>} translate texture {tx_red} } #end #macro anuncio (dx, dy, h) union { box {<3,3,0.05>, <-3,-3,-0.05>} texture {tx_anuncio} rotate 90*y translate <4,0,5> } #end // Aqui está a cena, finalmente: #macro aviao(tt) //grade de um lado das partes do aviao #local traseira12 = <0,0-2.4,0.9>; #local traseira13 = <0,0-2.4,0.15>; #local traseira11 = <0,traseira12.y, traseira12.z >; #local traseira14 = <0,traseira13.y, traseira13.z >; #local traseira22 = <0.5,0.25-2.4,2.25>; #local traseira23 = <0.5,0.25-2.4,0.25>; #local traseira21 = <0,traseira22.y, traseira22.z >; #local traseira24 = <0,traseira23.y, traseira23.z >; #local traseira32 = <0.5,0.5-2.4,0.7>; #local traseira33 = <0.5,0.5-2.4,0.25>; #local traseira31 = <0,traseira32.y, traseira32.z >; #local traseira34 = <0,traseira33.y, traseira33.z >; #local meio22 = <1,2.5-2.4,1.25>; #local meio23 = <1,2.5-2.4,0.0>; #local meio21 = <0,meio22.y, meio22.z>; #local meio24 = <0,meio23.y, meio23.z>; #local meio32 = <0.75,3.25-2.4,1.3>; #local meio33 = <0.75,3.25-2.4,-0.05>; #local meio31 = <0,meio32.y, meio32.z>; #local meio34 = <0,meio33.y, meio33.z>; #local frente22 = <0.5,4.25-2.4,0.7>; #local frente23 = <0.5,4.25-2.4,0.15>; #local frente21 = <0,frente22.y,frente22.z>; #local frente24 = <0,frente23.y,frente23.z>; #local frente32 = <0.25,4.5-2.4,0.55>; #local frente33 = <0.25,4.5-2.4,0.2>; #local frente31 = <0,frente32.y,frente32.z>; #local frente34 = <0,frente33.y,frente33.z>; #local frente42 = <0,4.8-2.4,0.375>; #local frente43 = <0,4.8-2.4,0.275>; #local frente41 = <0,frente42.y,frente42.z>; #local frente44 = <0,frente43.y,frente43.z>; #local frente11 = (meio31+frente21)/2; #local frente12 = (meio32+frente22)/2; #local frente13 = (meio33+frente23)/2; #local frente14 = (meio34+frente24)/2; #local meio41 = frente11; #local meio42 = frente12; #local meio43 = frente13; #local meio44 = frente14; #local traseira41 = (traseira31+meio21)/2; #local traseira42 = (traseira32+meio22)/2; #local traseira43 = (traseira33+meio23)/2; #local traseira44 = (traseira34+meio24)/2; #local meio11 = traseira41; #local meio12 = traseira42; #local meio13 = traseira43; #local meio14 = traseira44; //grade das partes do outro lado do aviao #local traseirad12 = <0,0-2.4,0.9>; #local traseirad13 = <0,0-2.4,0.15>; #local traseirad11 = <0,traseirad12.y, traseirad12.z >; #local traseirad14 = <0,traseirad13.y, traseirad13.z >; #local traseirad22 = <-0.5,0.25-2.4,2.25>; #local traseirad23 = <-0.5,0.25-2.4,0.25>; #local traseirad21 = <0,traseirad22.y, traseirad22.z >; #local traseirad24 = <0,traseirad23.y, traseirad23.z >; #local traseirad32 = <-0.5,0.5-2.4,0.7>; #local traseirad33 = <-0.5,0.5-2.4,0.25>; #local traseirad31 = <0,traseirad32.y, traseirad32.z >; #local traseirad34 = <0,traseirad33.y, traseirad33.z >; #local meiod22 = <-1,2.5-2.4,1.25>; #local meiod23 = <-1,2.5-2.4,0.0>; #local meiod21 = <0,meiod22.y, meiod22.z>; #local meiod24 = <0,meiod23.y, meiod23.z>; #local meiod32 = <-0.75,3.25-2.4,1.3>; #local meiod33 = <-0.75,3.25-2.4,-0.05>; #local meiod31 = <0,meiod32.y, meiod32.z>; #local meiod34 = <0,meiod33.y, meiod33.z>; #local frented22 = <-0.5,4.25-2.4,0.7>; #local frented23 = <-0.5,4.25-2.4,0.15>; #local frented21 = <0,frented22.y,frented22.z>; #local frented24 = <0,frented23.y,frented23.z>; #local frented32 = <-0.25,4.5-2.4,0.55>; #local frented33 = <-0.25,4.5-2.4,0.2>; #local frented31 = <0,frented32.y,frented32.z>; #local frented34 = <0,frented33.y,frented33.z>; #local frented42 = <0,4.8-2.4,0.375>; #local frented43 = <0,4.8-2.4,0.275>; #local frented41 = <0,frented42.y,frented42.z>; #local frented44 = <0,frented43.y,frented43.z>; #local frented11 = (meiod31+frented21)/2; #local frented12 = (meiod32+frented22)/2; #local frented13 = (meiod33+frented23)/2; #local frented14 = (meiod34+frented24)/2; #local meiod41 = frented11; #local meiod42 = frented12; #local meiod43 = frented13; #local meiod44 = frented14; #local traseirad41 = (traseirad31+meiod21)/2; #local traseirad42 = (traseirad32+meiod22)/2; #local traseirad43 = (traseirad33+meiod23)/2; #local traseirad44 = (traseirad34+meiod24)/2; #local meiod11 = traseirad41; #local meiod12 = traseirad42; #local meiod13 = traseirad43; #local meiod14 = traseirad44; //Instanciando as partes do aviao union { //lado 1 retalho( traseira11,traseira12,traseira13,traseira14, traseira21,traseira22,traseira23,traseira24, traseira31,traseira32,traseira33,traseira34, traseira41,traseira42,traseira43,traseira44, 0.01, tx_vidro,tx_pedestal) retalho( meio11,meio12,meio13,meio14, meio21,meio22,meio23,meio24, meio31,meio32,meio33,meio34, meio41,meio42,meio43,meio44, 0.01, tx_vidro,tx_pedestal) retalho( frente11,frente12,frente13,frente14, frente21,frente22,frente23,frente24, frente31,frente32,frente33,frente34, frente41,frente42,frente43,frente44, 0.01, tx_vidro,tx_pedestal) //lado 2 retalho( traseirad11,traseirad12,traseira13,traseirad14, traseirad21,traseirad22,traseirad23,traseirad24, traseirad31,traseirad32,traseirad33,traseirad34, traseirad41,traseirad42,traseirad43,traseirad44, 0.01, tx_vidro,tx_pedestal) retalho( meiod11,meiod12,meiod13,meiod14, meiod21,meiod22,meiod23,meiod24, meiod31,meiod32,meiod33,meiod34, meiod41,meiod42,meiod43,meiod44, 0.01, tx_vidro,tx_pedestal) retalho( frented11,frented12,frented13,frented14, frented21,frented22,frented23,frented24, frented31,frented32,frented33,frented34, frented41,frented42,frented43,frented44, 0.01, tx_vidro,tx_pedestal) //asa union { object { cylinder{ < -3.00, +2.750-2.4, +0.5 >, < +3.00, +2.750-2.4, +0.5 >, 0.15 texture{ tx_pedestal } } } object { cylinder{ < -3.00, +2.250-2.4, +0.5 >, < +3.00, +2.250-2.4, +0.5 >, 0.15 texture{ tx_pedestal } } } object { box{ < -3.0, +2.250-2.4, +0.35 >, < +3.0, +2.750-2.4, +0.65 > texture{ tx_pedestal } } } } //ajeita a escala e a localizacao da cena scale (0.75) //translate <0,-3,0> } #end #include "eixos.inc" #include "retalho.inc" #declare t0 = 0.000; #declare t1 = 0.25; #declare t2 = 0.5; #declare t3 = 0.750; #declare t4 = 1.000; #macro quadro(tt) union { #declare B1 = <0.95,0.95,-0.75>; #declare C1 = <1.25,1.25,-1.5>; #declare B2 = <2,2,-3.5>; #declare C2 = <2.5,2.5,-2>; #declare B3 = <2.25,2.25,0.75>; #declare C3 = <1.75,1.75,1.5>; #declare B4 = <1.25,1.25,3.5>; #declare C4 = <0.95,0.95,2>; #declare D4 = (C4+B1)/2; #declare A1 = D4; #declare D1 = (C1+B2)/2; #declare A2 = D1; #declare D2 = (C2+B3)/2; #declare A3 = D2; #declare D3 = (C3+B4)/2; #declare A4 = D3; #if ((tt >= t0) & (tt < t1)) #declare fase = -45*((tt-t0)/(t1-t0)); #declare ponto = interpola4(t0,A1,B1,C1,D1,t1,tt); #end #if ((tt >= t1) & (tt < t2)) #declare fase = -45+ 135*((tt-t1)/(t2-t1)); #declare ponto = interpola4(t1,A2,B2,C2,D2,t2,tt); #end #if ((tt >= t2) & (tt < t3)) #declare fase = 90+90*((tt-t2)/(t3-t2)); #declare ponto = interpola4(t2,A3,B3,C3,D3,t3,tt); #end #if ((tt >= t3) & (tt <= t4)) #declare fase = 180+ 180*((tt-t3)/(t4-t3)); #declare ponto = interpola4(t3,A4,B4,C4,D4,t4,tt); #end object{ eixos(3.00) } object{aviao (tt) rotate fase*x translate ponto} } #end #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 1.00 >; #declare raio_cena = 10.0; #declare dir_camera = <11.00,7.00, 4.00 >; #declare dist_camera = 16.0; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz) quadro(clock)