// Last edited on 2007-07-23 23:31:51 by stolfi // Processed by remove-cam-lights #declare ang_rot_antebracoE = 25+65*clock; #declare ang_rot_antebracoD = 25+25*clock; #declare ang_rot_bracoEx = 180*(1-clock); #declare ang_rot_bracoEy = -20*(1-clock); #declare ang_rot_bracoEz = 0; #declare ang_rot_bracoDx = 320*(1-clock); #declare ang_rot_bracoDy = 20*(1-clock); #declare ang_rot_bracoDz = 0; #declare ang_rot_canelaD = -30*sin(clock*2*pi)-30; #declare ang_rot_canelaE = -30*sin(clock*2*pi)-30; #declare ang_rot_pernaD = -60*sin(clock*2*pi); #declare ang_rot_pernaE = 60*sin(clock*2*pi); #declare ang_rot_peE = 30*sin(clock*2*pi); #declare ang_rot_peD = 30*sin(clock*2*pi); #declare ang_rot_cabecaX = 0; #declare ang_rot_cabecaY = 0; #declare ang_rot_cabecaZ = 0; #declare ang_rot_cauda = 0; #declare PEX = 0.5*sin(180-ang_rot_pernaE) + 0.25*sin(180-ang_rot_canelaE); #declare PEY = 0.5*cos(180-ang_rot_pernaE) + 0.25*cos(180-ang_rot_canelaE); #declare PDX = 0.5*sin(180-ang_rot_pernaD) + 0.25*sin(180-ang_rot_canelaD); #declare PDY = 0.5*cos(180-ang_rot_pernaD) + 0.25*cos(180-ang_rot_canelaD); #declare TTX=-PEX; #declare TTY=-PEY; background{ color rgb < 0.55, 0.60, 0.85 > } #declare cor_pelo = texture { pigment { color rgb < 0.55, 0.3, 0.1 > } } #declare cor_nariz = texture { pigment { color rgb < 0.00, 0.00, 0.00 > } finish { ambient 0.6 diffuse 0.8 phong 1 reflection 0.2 brilliance 1 } } #declare cor_orelha = texture { pigment { color rgb < 1.00, 1.00, 1.00 > } finish { ambient 0.1 diffuse 0.1 phong 0.8 reflection 0.05 roughness 0.05 } } #declare orelha = difference { sphere { <0,0,0>,1 texture { cor_pelo } } sphere { <0,1,0>,1.5 texture { cor_orelha } } } #declare cabeca = union { sphere { <0,0,0>,2 texture { cor_pelo } } cone { <0,0,0>,1.5,<0,4.5,-0.25>,0 texture { cor_pelo } } sphere { <0,4.5,-0.25>,0.3 texture { cor_nariz } } sphere { <-1,1.3,1.40>,0.3 texture { cor_nariz } } sphere { <1,1.3,1.40>,0.3 texture { cor_nariz } } object { orelha translate <-1,0,1.75> } object { orelha translate <1,0,1.75> } } #declare pescoco = cylinder { <0,0,-1.20>, <0,0,-2>, 0.7 texture { cor_pelo } } #declare tronco = cylinder { <0,0,-2>, <0,0,-5>, 1.80 texture { cor_pelo } } #declare corpo = union { object { tronco } sphere { <-1.9,0,-2.1>,0.6 texture { cor_pelo } } sphere { <+1.9,0,-2.1>,0.6 texture { cor_pelo } } sphere { <-1.2,0,-5.75>,0.8 texture { cor_pelo } } sphere { <+1.2,0,-5.75>,0.8 texture { cor_pelo } } } #declare espada = cone { <0,0,0>,0.85 <1,1,7.7>,0 texture { pigment { color rgb <0,0,0> } finish { ambient 0.6 diffuse 0.8 phong 1} } } #macro antebraco (esqdir) union { cylinder { <0,0,0>,<0,0,-1.7>,0.5 texture { cor_pelo } } sphere { <0,0,-1.7>,0.85 texture { cor_pelo } } object { espada translate <-0.65,-0.65,-1.7> } } #end #macro braco (ang_ante,esqdir) union { cylinder { <0,0,0>,<0,0,-1.7>,0.5 texture { cor_pelo } } sphere { <0,0,-1.7>,0.6 texture { cor_pelo } } object { antebraco(esqdir) rotate ang_ante*x translate <0,0,-1.7> } } #end #declare pe = cylinder { <0,0,0>,<0,2.5,0>,1 texture {cor_pelo} } #macro canela(ang_pe) union { cylinder { <0,0,0>,<0,0,-2.25>,0.65 texture { cor_pelo } } sphere { <0,0,-2.25>,1 texture { cor_pelo } } object { pe rotate ang_pe*x translate <0,0,-2.55> } } #end #declare cauda = cylinder { <0,0,0>,<-8,-6,0>,0.5 texture { cor_pelo } } #macro perna(ang_canela,angulo_pe) union { cylinder { <0,0,0>,<0,0,-2.5>,0.65 texture {cor_pelo} } sphere { <0,0,-2.5>,0.8 texture {cor_pelo} } object { canela(angulo_pe) rotate ang_canela*x translate <0,0,-2.5> } } #end #macro rato (ang_bracoEx, ang_bracoEy, ang_bracoEz, ang_antebracoE, ang_pernaE, ang_canelaE, ang_bracoDx, ang_bracoDy, ang_bracoDz, ang_antebracoD, ang_pernaD, ang_canelaD, ang_cabecaX, ang_cabecaZ, ang_cabecaY,angCauda,ang_peE,ang_peD) union { object { cabeca rotate ang_cabecaX*x rotate ang_cabecaY*y rotate ang_cabecaZ*z scale 0.7 translate <0,0,0>} object { pescoco } object { corpo } object { cauda rotate angCauda*y translate <0,0,-4.5> } object { perna(ang_canelaD,ang_peD) rotate ang_pernaD*x translate <-1.2,0,-5.75>} object { perna(ang_canelaE,ang_peE) rotate ang_pernaE*x translate <1.2,0,-5.75> } object { braco(ang_antebracoD,-1) rotate ang_bracoDx*x rotate ang_bracoDy*y rotate ang_bracoDz*z translate <-1.9,0,-2.1> } object { braco(ang_antebracoE,1) rotate ang_bracoEx*x rotate ang_bracoEy*y rotate ang_bracoEz*z translate <1.9,0,-2.1> } } #end object { rato(ang_rot_bracoEx, ang_rot_bracoEy, ang_rot_bracoEz, ang_rot_antebracoE, ang_rot_pernaE, ang_rot_canelaE, ang_rot_bracoDx, ang_rot_bracoDy, ang_rot_bracoDz, ang_rot_antebracoD, ang_rot_pernaD, ang_rot_canelaD, ang_rot_cabecaX, ang_rot_cabecaZ, ang_rot_cabecaY,ang_rot_cauda,ang_rot_peE,ang_rot_peD) translate } // plane { // z, -11.75 // pigment { // checker color rgb <0,0,0> color rgb <1,1,1> // } // } // Original camera parameters: // #local cam_ctr = <0.00,0.00,-3.00> // #local cam_vec = (<20.00,0.0,0.00>-<0.00,0.00,-3.00>) // #local cam_sky = z #include "camlight.inc" // camlight(<0.00,0.00,-3.00>,<10,10,10>,20.0,z,1.0) camlight(<0.00,0.00,-3.00>,<8,10,4>,20.0,z,1.0)