// Last edited on 2007-07-23 23:31:29 by stolfi // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #declare raio = 2.000; #declare pele = texture { pigment { color rgb < 0.64, 0.34, 0.00 > } finish { diffuse 0.60 specular 0.10 reflection 0.10 ambient 0.20 } } #declare vermelho = texture { pigment { color rgb < 0.95, 0.00, 0.05 > } finish { diffuse 0.60 specular 0.10 reflection 0.10 ambient 0.20 } } #declare verde = texture { pigment { color rgb < 0.00, 1.00, 0.00 > filter 1.0 } finish { diffuse 0.60 specular 0.10 reflection 0.10 roughness 0.20 } } #declare garra = texture { pigment { color rgb < 0.70, 0.70, 0.70 > } finish { diffuse 0.60 specular 0.10 reflection 0.10 ambient 0.20 } } #declare azul = texture { pigment { color rgb < 0.10, 0.10, 0.80 > } finish { diffuse 0.60 specular 0.10 reflection 0.10 ambient 0.20 } } #declare plano = plane { z,0 translate -36*z texture{ pigment{ checker color rgb < 1.00, 1.00, 1.00 >, color rgb < 0.00, 0.00, 0.00 > } } } #declare cabeca = sphere { < 0.00, 0.00, +5.00 >, 2.00 texture { pele } } #declare olho = sphere { < +1.90, +0.60, +5.50>, 0.30 texture { verde } interior { ior 1.4 } } #declare eixo = cylinder { < 0.00, 0.00, +3.20 >, < 0.00, 0.00, -3.00 >, 1.00 texture { pele } } #declare tronco = cylinder { < 0.00, 0.00, +3.00 >, < 0.00, 0.00, -14.00 >, 1.00 texture { pele } } #declare dedo_mao = cone { < -0.80, 0.00, -2.00 >, 0.2 < -0.80, 0.00, -3.50 >, 0 texture { garra } } #declare dedo_pe = cone { < +3.00, -0.80, 0.00 >, 0.2 < +4.00, -0.80, 0.00 >, 0 texture { garra } } #declare cabo = cylinder { < 0.00, 0.00, -2.00 >, < 0.00, 0.00, +12.00 >, 0.5 texture { azul } } #macro inicio_rabo() union { cylinder { < 0.00, 0.00, -0.50 >, < 0.00, 0.00, +3.00 >, 0.60 texture { pele } } sphere { < 0.00, 0.00, +3.00 >, 0.60 texture { pele } } } #end #macro meio_rabo() union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, +9.00 >, 0.60 texture { pele } } sphere { < 0.00, 0.00, +9.00 >, 0.60 texture { pele } } } #end #macro rabo() union { object { inicio_rabo() rotate -60*y } object { meio_rabo() rotate -10*y translate -2.7*x translate +1.7*z } } #end #macro orelha() difference { cylinder { < 0.00, 0.00, +0.10 >, < 0.00, 0.00, -0.10 >, 1.00 texture { pele } } sphere { < 0.00, 0.00, +0.56 >, 0.60 texture { garra } } } #end #macro nariz() union { cone { < 0.00, 0.00, 0.00 >, 0.7 < +1.50, 0.00, 0.00 >, 0.3 texture { pele } } sphere { < +1.7, 0.00, 0.00 >, 0.5 texture { vermelho } } } #end #macro mao() union { box { < -1.00, -0.50, 0.00 >, < +1.00, +0.50, -2.00 > texture { pele } } object { dedo_mao } object { dedo_mao translate 0.8*x } object { dedo_mao translate 1.6*x } sphere { < 0.00, 0.00, 0.00 >, 1.20 texture { pele } } object { cabo rotate 90*y translate 0.6*y translate -1.5*z } } #end #macro antebraco(alfa) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -4.00 >, 1.00 texture { pele } } object { mao() rotate alfa*x translate -4*z } sphere { < 0.00, 0.00, 0.00 >, 1.20 texture { pele } } } #end #macro braco(alfa,beta) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -6.00 >, 1.00 texture { pele } } object { antebraco(alfa) rotate -beta*y translate -6*z } sphere { < 0.00, 0.00, 0.00 >, 1.20 texture { pele } } } #end #macro pe() union { box { < 0.00, -1.00, -0.50 >, < +3.00, +1.00, +0.50 > texture { pele } } object { dedo_pe } object { dedo_pe translate 0.8*y } object { dedo_pe translate 1.6*y } sphere { < 0.00, 0.00, 0.00 >, 1.10 texture { pele } } } #end #macro canela(alfa) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -10.00 >, 1.00 texture { pele } } object { pe() rotate alfa*y translate -11*z } sphere { < 0.00, 0.00, 0.00 >, 1.20 texture { pele } } } #end #macro perna(alfa,beta) union { cylinder { < 0.00, 0.00, 0.00 >, < 0.00, 0.00, -12.00 >, 1.00 texture { pele } } object { canela(alfa) rotate beta*y translate -12*z } sphere { < 0.00, 0.00, 0.00 >, 1.20 texture { pele } } } #end #macro corpo(alfa1,beta1,delta1,gama1,alfa2,beta2,delta2,gama2,alfa3,beta3,delta3,gama3,alfa4,beta4,delta4,gama4) union { object { cabeca } object { orelha() rotate 90*y translate 6.5*z translate 1.7*y } object { orelha() rotate 90*y translate 6.5*z translate -1.7*y } object { olho } object { olho translate -1.2*y } object { nariz() rotate 15*y translate 1.7*x translate 4.4*z } object { eixo rotate 90*x translate 1*z } object { tronco } object { eixo rotate 90*x translate -14*z } object { rabo() translate -13*z } object { braco(alfa1,beta1) rotate -delta1*x rotate -gama1*y translate -4*y translate +1*z } object { braco(alfa2,beta2) rotate -delta2*x rotate -gama2*y translate -4*y translate +1*z scale <1,-1,1> } object { perna(alfa3,beta3) rotate -delta3*x rotate -gama3*y translate -4*y translate -14*z } object { perna(alfa4,beta4) rotate -delta4*x rotate -gama4*y translate -4*y translate -14*z scale <1,-1,1> } } #end #macro interpola(T1,V1,T2,V2) (V1)+(clock-T1)*(V2-V1)/(T2-T1) #end #declare A3=10+100*clock; #if(clock<=0.5) #declare A1=60+(clock/0.5)*(100-60); #declare A2=10+(clock/0.5)*(110-10); #declare A4=-40+(clock/0.5)*(40-10); #declare A5=20+(clock/0.5)*(40-20); #declare A6=-30+(clock/0.5)*(30+30); #declare A7=-10+(clock/0.5)*(10-40); #declare A8=40+(clock/0.5)*(20-40); #declare A9=30+(clock/0.5)*(-30-30); #end #if(clock>0.5) #declare A1=100+((clock-0.5)/0.5)*(5-100); #declare A2=110+((clock-0.5)/0.5)*(5-110); #declare A4=-10+((clock-0.5)/0.5)*(10-40); #declare A5=40+((clock-0.5)/0.5)*(20-40); #declare A6=30+((clock-0.5)/0.5)*(-30-30); #declare A7=-40+((clock-0.5)/0.5)*(40-10); #declare A8=20+((clock-0.5)/0.5)*(40-20); #declare A9=-30+((clock-0.5)/0.5)*(30+30); #end // object { plano } object { corpo(65,A1,10,A2,40,20,5,A3,A4,A5,0,A6,A7,A8,0,A9) } // Original camera parameters: // #local cam_ctr = <0.00,0.00,-10.00> // #local cam_vec = ((1.5* <+0.00,+20.00,+6.00>)-<0.00,0.00,-10.00>) // #local cam_sky = z #include "camlight.inc" // camlight(<0.00,0.00,-10.00>,<10,10,10>,20.0,z,1.0) camlight(<0.00,0.00,-12.00>,<10,-7,5>,65.0,z,1.0)