POV-Ray : Newsgroups : povray.animations : Shed version 2 : Re: Shed version 2 Server Time
29 Apr 2024 06:47:59 EDT (-0400)
  Re: Shed version 2  
From: dick balaska
Date: 13 Feb 2017 14:58:19
Message: <58a20fdb$1@news.povray.org>
Am 2017-02-13 12:42, also sprach Bald Eagle:
> "Klewlis" <nomail@nomail> wrote:
>> using windows Movie Maker, because I can't afford to buy anything at this time.
>
> I use VideoMach - seems to work well enough for what I want to do most of the
> time.

ffmpeg. It's great. It's the best encoder. Other encoders are losers!  Sad!

> One thing I've done for some step-wise animations is to set up my scene file in
> a Switch-Range-Break block - the main animation clock drives the whole scene and
> determines which range block gets rendered, and then each range section has a
> sub-clock that does its own 0-1.

Yes! To me, this is the secret of animation. Everything gets broken down 
to a movement of 0-1.  Opening a door is 0-1 (0 degrees - 110 degrees) 
and then scaled to fit the scene.  So,

#declare FirstMoveStart = 0.0;
#declare FirstMoveEnd   = 0.1;

#switch (clock)
    #range (FirstMoveStart, FirstMoveEnd)
       #declare I = AniSegment(FirstMoveStart, FirstMoveEnd);
       ...
       #break
#end

#macro AniSegment(_start, _end)
    ((clock-_start)/(_end-_start))
#end

so I becomes 0-1 in that range block

Another helper is
///////////////////////////////////////////////////////
// Move a Vector from, to, increment
#macro MoveV(_from, _to, __i)
	<_from.x+((_to.x-_from.x)*__i),
	 _from.y+((_to.y-_from.y)*__i),
	 _from.z+((_to.z-_from.z)*__i)>
#end

And then, given a starting and end vector, I move between them.
#local V = MoveV(<0,0,0>, <1,1,1>, I)

And one more thing. :)
I always apply acceleration/deceleration to a move. So,
#declare I = AniSegment(FirstMoveStart, FirstMoveEnd);
#declare F = 0.5-(cos(I/2*pi2)/2);

(which is the top left curve here
http://www.buckosoft.com/~dick/pov/curves/ )

This gives a more natural feel to movement.

>
> So 0 to 0.1 will be Clock1, which goes from Clock*10 = 0 to Clock*10 = 1
> Then the next range block gets rendered from 0.11 to 0.2
> (Clock-0.1)*10 = 0 to (Clock-0.1)*10 = 1
>
> Just an idea - I honestly haven't played with Chris Colefax's ClockMod macros,
> so I can't say if that's any easier / better.

I played with them years ago and rejected them. Once you start with them 
you're kind of tied in to that system and I needed more flexibility.

One other thing, I don't actually use clock directly.  I use
#declare myclock = clock * SceneDurationInSeconds;
which gives me more natural timestamps for cues, and I can vary the 
frame rate (number of frames in the scene) independently of the action.

-- 
dik


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.