On Mon, 2010-01-11 at 13:42 +0100, gabor papp wrote: > > Would this be the right way to go about it? > i'm not sure if i would chose the text storyboard. fluxus scripts are > the same, aren't they? > > something like this would be similar to your storyboard: > > (define (render) > (let ([t (time)]) > (cond [(<= 0 t 1) > (draw-cube)] > > [(<= 1 t 2) > (colour #(1 0 0)) > (draw-cube)] > > [(<= 2 t 3) > (colour #(0 1 0)) > (draw-cube)]))) > > (every-frame (render))
I agree with gabor - but you could even make a score like this: ( ((0 2) "first-script.scm") ((2 6) "second-script.scm") ((6 10) "third-script.scm") ((10 17) "fourth-script.scm") ) And then use another script like the one above to change scripts at the right time - no need for eval-string, (load scriptfilename) should do the job. If your top level script changing program uses a task rather than every-frame, the process won't get overwritten by the other scripts. > > > > > If so, > > * how do you execute code from within code? > as far as i know scheme bricks uses (eval-string) to do this. > > > * I'm assuming that (process) doesn't care how long a frame takes to > > render, so even if the code-timing service took a while to respond the > > end result would still be smooth? > ideally yes. maybe it's my fault, but i always had sync issues with > longer audio tracks. One issue with using process - (time) still returns the real time. I always override it when doing things like this, eg: (define t 0) (define dt 0.04) ; 1/25fps (define (time) t) (define (delta) dt) (define (update-time) (set! t (+ t dt)) If you call (update-time) in your every-frame loop everything will be timed correctly when you make the frames into a movie at 25fps. cheers, dave
