|
|
"Chris B" <c_b### [at] btconnectcomnospam> wrote in message
news:46b85db4@news.povray.org...
>
> "Simon" <povray@*NOSPAM*SOWare.co.uk> wrote in message
> news:46b82c5e$1@news.povray.org...
>> Hi all,
>>
>> wonder if someone can suggest some methods for dealing with this:
>>
>> Currently: Whenever I want to have multiple steps in a scene, I do
>> something like the following:
>>
>> #declare Steps = 10;
>> #declare Step = floor(Steps*clock);
>> #declare Clock = mod(clock*Steps,1);
>>
>> #if(Step=0)
>> //Some rules for step 0 of the animation
>> #else
>> //Some rules for after step 0, usually keeping an object stable
>> #end
>>
>> As you can imagine, this becomes cumbersome very quickly if an object is
>> doing different things in each step - and it means a lot of nested IFs.
>> In the demo above, the steps are all of even Length, but that is easily
>> resolved with a bit of logic and an array.
>>
>> An alternative that sprang to mind was just to copy/paste into multiple
>> scenes but that means that if I decide to change something in a previous,
>> I have to propogate my changes up and down the timeline - also
>> cumbersome.
>>
>> Any pointers would be greatly appreciated
>>
>> (whilst writing this I realised there should be a switch statement of
>> some kind and *tada* there is - but still, if anyone has any suggestions,
>> please let me know)
>
> Hi Simon,
>
> Lots of alternatives spring to mind.
>
> Basically anything that can return a number (or numbers) can be used to
> control an animation, so you could look at using functions, macros,
> splines etc. You may be able to avoid 'if' statements and 'switch'
> statements by using your 'step' variable as the index to an array. For
> example, you could set up an array from 0 to 10 with values such as
> 0,0,0,0.1,0.3,0.5,0.7,0.9,1,1 and then use the value of your 'step'
> variable to retrieve a value from the array. You could then use that value
> to retrieve the coordinates at that distance along a spline or along a
> sine wave or a normal at a point on a surface (trace) or a colour at a
> point in space in a pigment (eval_pigment) etc. etc.
>
> You can then do whatever you want with that
> number/coordinate/normal/colour. With the above example you could use the
> position along a spline to control a camera position, so that it stays
> still for the first 3 'steps', accelerates along the spline and stops for
> a while at the end, or, if the spline stays within a box from <0,0,0> to
> <1,1,1>, you could use the 'position' on the spline as the colour of an
> object.
>
> Hope this inspires some ideas but be careful not to get too wacked out on
> psychedelia.
>
> Regards,
> Chris B.
>
Thanks very much Chris, the array idea really appeals to me. I'll need to
sit and ponder how best to utilise it - what springs to mind is having an
array of stings that are evaluated in place based on the Step. I may end up
using a micture of this and the if/switch/etc... to come to some sort of
hybrid. I'll also look into using a function.
Thanks again for the input, it's greatly appreciated.
Simon
Post a reply to this message
|
|