[R] rgl: insert pauses in animation sequence / movie formats other than gif?

Duncan Murdoch murdoch.duncan at gmail.com
Tue Jun 7 18:36:16 CEST 2011


On 07/06/2011 12:22 PM, Michael Friendly wrote:
> On 6/7/2011 10:52 AM, Duncan Murdoch wrote:
> >
> >  Something like this works:
> >
> >  play3d(par3dinterp(times=c(0,5,6,11,12,17),
> >               userMatrix=list(m1,m1,m2,m2,m3,m3),
> >               method="linear"))
> >
> >  The "linear" says to use linear interpolation between time points, so
> >  it will stay exactly constant when the userMatrix doesn't change.  If
> >  you leave it out, it uses spline interpolation, and that gives some
> >  irritating overshooting.
> Thanks very much for this, Duncan.
>
> Something like this would make an excellent documentation example for
> play3d/movie3d, or perhaps better
> par3dinterp, even under \dontrun{}.
>
> I take it that the times are relative rather than absolute, and time is
> scaled according to duration and
> fps when the scene is play3d()'d.  Yes?  If so, the description for
> time= could also be clarified.

Definitely it should be clarified in the docs; they are absolute times, 
in units of seconds.  Things get a little complicated when you go past 
the last time (17 seconds):  there are a number of different 
extrapolation methods described in ?par3dinterp.

What the par3dinterp function returns is a function that takes a time 
(expressed in seconds) and computes the parameters (i.e. the userMatrix 
in the example) that should be in effect at that time.  It doesn't know 
anything about fps, that's used by play3d to choose what times to pass 
to that constructed function.  The function that play3d is given can do 
lots of things other than returning new viewpoint parameters; for 
example, the flag demo redraws the scene in every frame (using 
skipRedraw=TRUE to avoid showing partial versions).

Duncan



More information about the R-help mailing list