// Exemplo de arquivo de descricao de cena para POV-ray // Last edited on 2010-03-04 15:44:01 by stolfi // ====================================================================== // CORES E TEXTURAS #include "colors.inc" #include "textures.inc" #include "woods.inc" #include "stones.inc" background{ color rgb <1, 1, 1 > } #declare tx = texture{ pigment { color Red } finish { phong 1 } } // ====================================================================== // DESCRIÇÃO DA CENA // Partes da cena: #declare raioEsfera = 0.5; #declare alturaCone = 2; #declare raioMaiorCone = 1; #declare larguraPerna = 0.2; #declare alturaCoxa = 2; #declare alturaCanela = 2; #declare comprPe = 0.5; #declare larguraPe = 0.2; #declare chao = box{ <-10,-10,-10>, <+20,+20,-8>} #declare bolinha = sphere { <0, 0, 0>, raioEsfera} #declare corpo = cone{<0.00, 0.00, 0>, raioMaiorCone, <0.00, 0.00, alturaCone>, raioEsfera/4} #declare canela = cylinder{ < 0.00, 0.00, 0>, < 0.00, 0, -alturaCanela>, larguraPerna } #declare coxa = cylinder{ < 0.00, 0.00, 0>, < 0.00, 0, -alturaCoxa>, larguraPerna } #macro pe() object { cylinder{ < 0.00, 0.00, 0>, < comprPe, 0, 0>, larguraPe } } #end #macro anteperna(angPe) union { object {canela} object {pe() rotate y*-angPe translate <0,0,-alturaCanela> } } #end #macro perna(angAntePerna, angPe) union { object {coxa} object {anteperna(angPe) rotate y*angAntePerna translate <0,0,-alturaCoxa>} } #end #macro saltopode(angPerna, angAntePerna, angPe) union { object {bolinha translate <0,0,alturaCone>} object {corpo} object {perna(angAntePerna, angPe) rotate y*-angPerna} } #end #macro interpola(ta, va, tb, vb, tt) #local s = (tt-ta)/(tb-ta); ((1-s)*va + s*vb) #end #declare t0 = 0; #declare t1 = 0.3; #declare t2 = 0.6; #declare t3 = 0.9; #declare t4 = 1; #declare angPe0 = 0; #declare angPe1 = 30; #declare angPe2 = 45; #declare angPe3 = 30; #declare angPerna0 = 60; #declare angPerna1 = 80; #declare angPerna2 = 0; #declare angPerna3 = 30; #declare angCanela0 = 70; #declare angCanela1 = 50; #declare angCanela2 = 0; #declare angCanela3 = 20; #if ((clock >= t0) & (clock <= t1)) #declare angPerna = interpola(t0, angPerna0, t1, angPerna1, clock); #declare angPe = interpola(t0, angPe0, t1, angPe1, clock); #declare angCanela = interpola(t0, angCanela0, t1, angCanela1, clock); #end #if ((clock >= t1) & (clock <= t2)) #declare angPerna = interpola(t1, angPerna1, t2, angPerna2, clock); #declare angPe = interpola(t1, angPe1, t2, angPe2, clock); #declare angCanela = interpola(t1, angCanela1, t2, angCanela2, clock); #end #if ((clock >= t2) & (clock <= t3)) #declare angPerna = interpola(t2, angPerna2, t3, angPerna3, clock); #declare angPe = interpola(t2, angPe2, t3, angPe3, clock); #declare angCanela = interpola(t2, angCanela2, t3, angCanela3, clock); #end #if (clock >= t3) #declare angPerna = interpola(t3, angPerna3, t4, angPerna0, clock); #declare angPe = interpola(t3, angPe3, t4, angPe0, clock); #declare angCanela = interpola(t3, angCanela3, t4, angCanela0, clock); #end #include "eixos.inc" // Aqui está a cena, finalmente: union{ object{ eixos(3.00) } object{ chao texture{Silver_Metal}} object{ object{ saltopode(angPerna, angCanela, angPe) texture{tx}}} } #include "camlight.inc" #declare centro_cena = < 0.00, 0.00, 0.00 >; #declare raio_cena = 10.0; #declare dir_camera = < 3.50, 3.00, 1 >; #declare dist_camera = 10.0; #declare intens_luz = 2.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)