Shadow Light Example Code


(set! time 0)

; loop for thirty frames
(while (< time 30)
  (begin

   ; create the world
   (world
    (camera "main" "perspective" 'from '(2.5 2 3.5) 
            'to '(0 1 0) 'fov 45)

    (xfm-separator
     (rotate (* (/ time 29) 360) '(0 1 0))

     (camera "lightcam" "perspective" 'from '(0 3 2)
	     'to '(0 1 0) 'fov 45)

     (light "shadowspot" 'intensity 6 'from '(0 3 2) 
	    'to '(0 1 0) 'coneangle 45
            'shadowname "shadow.shd")
     )
    (separator
     (color '(1 0 0))
     (rotate '90 '(1 0 0))
     (surface "plastic")
     (disk 'radius 20)
     )
    (translate '(0 1 0))
    (surface "matte")
    (read-det "skull.obj" "smooth")
   )

   ; render the shadow map
   ((render 'reset))
   ((render 'set-option!) '(ri-display "shadow.z" "zfile" "z"))
   ((render 'set-option!) '(ri-format 256 256 1))
   (render "lightcam")
   (system "txmake -shadow shadow.z shadow.shd")


   ; render the actual frame
   ((render 'reset))
   ((render 'set-option!) (ri-format 320 242 1))

   ((render 'to-file) (string-append "Frames/frame." 
                                     (number->string time)))
   ; render from the point of view of the light called "main"
   (render "main")

   ; increment the value of time by one
   (set! time (+ time 1))
   )
 )


Return to lights page
mrl