// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.5 // Desc: Basic Scene Example // Date: mm/dd/yy // Auth: ? // #version 3.5; #include "colors.inc" // general math functions and macros // #include "math.inc" global_settings { assumed_gamma 1.0 } /* light_source { <0, 0, 0> // light's position (translated below) color rgb <.8, .4, .3> // light's color translate <3,3, -5> }*/ // An area light (creates soft shadows) // WARNING: This special light can significantly slow down rendering times! light_source { 0*x // light's position (translated below) color rgb <.8, .4, .3> // light's color area_light <8, 0, 0> <0, 0, 8> // lights spread out across this distance (x * z) 4, 4 // total number of lights in grid (4x*4z = 16 lights) adaptive 0 // 0,1,2,3... //jitter // adds random softening of light circular // make the shape of the light circular //orient // orient light translate <10, 30, -50> // position of light } //the vectors #declare A=<0,2,-1>; #declare B=<0,1,2>; #declare C=<-2,0,0>; #declare Al=vlength(A); #declare Bl=vlength(B); #declare Cl=vlength(C); // ---------------------------------------- camera { location <0, 22, -3.5*15>*.65 direction 1.5*z right x*image_width/image_height look_at <0.0, .5, 0.0> angle 5 } // ---------------------------------------- #declare lclock=clock; #declare ta=0; #declare pa=05; #declare ma=85; #declare la=85; #declare ra=85; #declare palm_height = 1; #declare palm_width = .8; #declare palm_depth = .2; #declare pv=; //THUMB #declare ta1=0; //angle in degrees for first thumb joint manipulation strictly a rotation about vertical axis thru center of hand #declare tae1=45;//"extension angle" of thumb from vertical #declare ta2=ta; //bend in first external joint #declare tae2=35; //additional extension angle at first extension joint #declare ta3=ta; //bend in second external joint //lengths of thumb segments #declare tl1=sqrt(palm_width*palm_width+palm_height*palm_height)/2*1.2; #declare tl2=tl1*.45; #declare tl3=tl2*.6; //widths of thumb segments #declare tw1=palm_depth*.65; #declare tw2=tw1*.8; #declare tw3=tw2*1; #declare tp1=<0,0,0>; //base of first thumb segment ("imbeded" in palm) #declare tp2=vrotate(vrotate(tl1*y,-tae1*z),ta1*y); #declare tp1=.2*tp2; #declare tp3=vrotate(vrotate(tl2*y,-ta2*x),-tae2*z)+tl1*y; #declare tp3=vrotate(vrotate(tp3,-tae1*z),ta1*y); #declare tpend=vrotate(tl3*y,-ta3*x)+tl2*y; #declare tpend=vrotate(vrotate(tpend,-ta2*x),-tae2*z)+tl1*y; #declare tpend=vrotate(vrotate(tpend,-tae1*z),ta1*y); //Pointer #declare paa=pa; #declare pa1=pa; //first joint bend #declare pa2=paa; //2nd joint bend #declare pa3=paa; //3rd joint bend #declare pl1=palm_height/3; //length of first segment #declare pl2=pl1; //length of 2nd segment #declare pl3=pl2; //length of 3rd segment #declare pp1= palm_width*3/8*x+palm_height*y; #declare pp2= vrotate(pl1*y,-pa1*x)+pp1; #declare pp3= vrotate(pl2*y,-pa2*x)+pl1*y; #declare pp3= vrotate(pp3,-pa1*x)+pp1; #declare pp4= vrotate(pl3*y,-pa3*x)+pl2*y; #declare pp4= vrotate(pp4,-pa2*x)+pl1*y; #declare pp4= vrotate(pp4,-pa1*x)+pp1; #declare pw=palm_depth/2; //middle #declare ma1=ma; //first joint bend #declare ma2=0; //2nd joint bend #declare ma3=0; //3rd joint bend #declare ml1=palm_height/3*1.1; //length of first segment #declare ml2=ml1; //length of 2nd segment #declare ml3=ml2; //length of 3rd segment #declare mp1= palm_width*1/8*x+palm_height*y; #declare mp2= vrotate(ml1*y,-ma1*x)+mp1; #declare mp3= vrotate(ml2*y,-ma2*x)+ml1*y; #declare mp3= vrotate(mp3,-ma1*x)+mp1; #declare mp4= vrotate(ml3*y,-ma3*x)+ml2*y; #declare mp4= vrotate(mp4,-ma2*x)+ml1*y; #declare mp4= vrotate(mp4,-ma1*x)+mp1; #declare mw=palm_depth/2; //ring #declare ra1=ra; //first joint bend #declare ra2=ra; //2nd joint bend #declare ra3=ra; //3rd joint bend #declare rl1=palm_height/3*1; //length of first segrent #declare rl2=rl1; //length of 2nd segrent #declare rl3=rl2; //length of 3rd segrent #declare rp1= -palm_width*1/8*x+palm_height*y; #declare rp2= vrotate(rl1*y,-ra1*x)+rp1; #declare rp3= vrotate(rl2*y,-ra2*x)+rl1*y; #declare rp3= vrotate(rp3,-ra1*x)+rp1; #declare rp4= vrotate(rl3*y,-ra3*x)+rl2*y; #declare rp4= vrotate(rp4,-ra2*x)+rl1*y; #declare rp4= vrotate(rp4,-ra1*x)+rp1; #declare rw=palm_depth/2; //little (pinkie) #declare la1=la; //first joint bend #declare la2=la; //2nd joint bend #declare la3=la; //3rd joint bend #declare ll1=palm_height/3*.9; //length of first seglent #declare ll2=ll1; //length of 2nd seglent #declare ll3=ll2; //length of 3rd seglent #declare lp1= -3*palm_width*1/8*x+palm_height*y; #declare lp2= vrotate(ll1*y,-la1*x)+lp1; #declare lp3= vrotate(ll2*y,-la2*x)+ll1*y; #declare lp3= vrotate(lp3,-la1*x)+lp1; #declare lp4= vrotate(ll3*y,-la3*x)+ll2*y; #declare lp4= vrotate(lp4,-la2*x)+ll1*y; #declare lp4= vrotate(lp4,-la1*x)+lp1; #declare lw=palm_depth/2; union{ difference{ box{-pv/2,pv/2 translate y*palm_height/2 } //palm box{-x-z-0*y,+x+z-y rotate z*45} } cylinder{tp1, tp2, tw1 } //lower thumb cylinder{tp2, tp3, tw2 } //middle thumb cylinder{tp3, tpend, tw3 } //tip of thumb sphere{tpend,tw3} sphere{ tp1,tw1*1} sphere{ tp2,tw2*1.2} sphere{ tp3,tw3*1.2} cylinder{pp1, pp2, pw } //pointer 1 cylinder{pp2, pp3, pw } //pointer 2 cylinder{pp3, pp4, pw } //pointer 3 sphere{ pp1,pw*1.2} sphere{ pp2,pw*1.2} sphere{ pp3,pw*1.2} sphere{ pp4,pw*1} cylinder{mp1, mp2, mw } //middle 1 cylinder{mp2, mp3, mw } //middle 2 cylinder{mp3, mp4, mw } //middle 3 sphere{ mp1,mw*1.2} sphere{ mp2,mw*1.2} sphere{ mp3,mw*1.2} sphere{ mp4,mw*1} cylinder{rp1, rp2, rw } //ring 1 cylinder{rp2, rp3, rw } //ring 2 cylinder{rp3, rp4, rw } //ring 3 sphere{ rp1,rw*1.2} sphere{ rp2,rw*1.2} sphere{ rp3,rw*1.2} sphere{ rp4,rw*1} cylinder{lp1, lp2, lw } //little 1 cylinder{lp2, lp3, lw } //little 2 cylinder{lp3, lp4, lw } //little 3 sphere{ lp1,lw*1.2} sphere{ lp2,lw*1.2} sphere{ lp3,lw*1.2} sphere{ lp4,lw*1} pigment{Flesh} rotate 0*y rotate -00*x translate -.5*y }