PDA

View Full Version : animation sequence


pkhoosh
12-08-2005, 01:21 PM
Hello,

I am using timers to animate an object and I make it work by using different keys to initiate each different animation. I want to automate the playing of an animation sequence without having to press a key each time I want a different animation. I also want each animation to play for a minute.

Any ideas if about how to do this most elegeantly?

many thanks,

pete

farshizzo
12-09-2005, 10:37 AM
Hi,

What kind of animations are you performing? Could they be substituted with any existing vizact actions? If so, this would be the easiest and most elegant way to accomplish this.

If not, then you could use the following code as a guideline. It creates a different function for each animation. Then it uses a list to cycle through each animation. Let me know if it isn't clear enough.import viz
viz.go()


def update1():
print 'Update 1'

def update2():
print 'Update 2'

def update3():
print 'Update 3'

anim_seq = [update1,update2,update3] #List of animation functions
anim_time = 60 #Time remaining on current animation
anim_index = 0 #List index of current animation

def update_animation():
global anim_time, anim_index
anim_seq[anim_index]() #Call current animation function
anim_time -= viz.elapsed() #Update remaining time
if anim_time < 0: #Check if animation finished
anim_time = 60 #Reset animation time
anim_index = (anim_index + 1) % len(anim_seq) #Increment animation index

def ontimer(num):
update_animation()

viz.callback(viz.TIMER_EVENT,ontimer)
viz.starttimer(0,0,viz.FOREVER)

pkhoosh
01-23-2006, 08:03 AM
Thanks for the help. I couldn't use the vizact because I wanted to show a series of static images; vizact doesn't really accomplish this and is more than I needed, as far as I could tell. The skeleton code you gave helped me accomplish what I needed, to an extent.

The other thing I want to implement is an animation that repeats every minute. Whereas the other images being displayed were just static and changed every minute, the thing that is going to change now is an object that is continually rotating. This rotation is controlled by a timer that repeats very often (0.01 seconds). I was thinking of just making a 'wrapper' timer that fires every minute, in turn 'calling' the timer that controls the actual rotation.

When I try to use the same logic as that for the static images, I get a Python warning and my virtual world crashes.

Many thanks,

pete