|
|
> HelveticaFanatic wrote:
>
>> How can I ensure that a camera moving along a spline for an animation
>> will
>> go at the correct speed? I'm using natural splines and can't seem to get
>> spacing right. I wrote a script to check the spline between different
>> clock points and divide the difference, but then then I wanted it to
>> return the midpoints which are really off from the actual midpoints. What
>> can I do? Thanks.
I'd suggest taking small bites along the spline, use vlength() on the
difference between two successing points and keep a cumulative total of the
distance travelled from the start of the spline. Use that distance in your
camera speed calculations.
For example, to get a constant speed
// +kfi0 +kff10
camera {location <0,0,-10> look_at 0 }
light_source {<-10,20,50>, rgb 4}
#declare MySpline = spline {
cubic_spline
-.25, <-1, 0, 0>
0.00, < 3, 0, 0>
0.10, < 3, 3, 0>
0.50, <-3, 3, 0>
0.75, <-2,-1,-3>
1.00, < 2,-1,-3>
1.25, < 0, 0, 1>
}
#declare FinalFrameDistance = 25;
#declare ThisFrameDistance = clock * FinalFrameDistance;
// Initialise some working variables
#declare CumulativeDistance = 0;
#declare SplineIndex = 0;
#declare ThisPoint = MySpline(0);
#declare LastPoint = MySpline(0);
// Loop round till we're the right distance through the spline
#while (CumulativeDistance<ThisFrameDistance & SplineIndex<=1)
#declare ThisPoint = MySpline(SplineIndex);
// Add the length of this little bite of the spline
#declare CumulativeDistance = CumulativeDistance +
vlength(ThisPoint-LastPoint);
#declare LastPoint = ThisPoint;
#declare SplineIndex = SplineIndex + 0.001;
#end
sphere {ThisPoint,0.2 pigment {rgb <1,0,0>}}
or, for a constant acceleration:
#declare Acceleration = 40;
#declare AverageSpeed = Acceleration*clock/2;
#declare ThisFrameDistance = AverageSpeed*clock;
Regards,
Chris B.
Post a reply to this message
|
|