WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   scheduled animation paths: jumps (https://forum.worldviz.com/showthread.php?t=2506)

ursi 02-08-2010 05:00 PM

scheduled animation paths: jumps
 
3 Attachment(s)
Hi

Three animation paths should be scheduled one after another.

The path speed should be 100 steps/sec
Code:

pathFW.speed(100) # default: 1/sec?
I thought the waiting time should be devided by 100 as well>
Code:

yield viztask.waitTime(len(BW_Pos)/100)
My schedule looks like that, but in the animation there is a jump at the end of the first animation path... I guess, there is a timing problem and the system starts with the second path (pathStopp) before the 1st path (pathFW) is finished.

Code:

def onkeydown(key):
        PATH()
        if key == 't':
                ###+++++++++++++++++++++++++++
                ### SCHEDULE the room movement, sound and the output voltage
                def ScheduleOutputs():
                                song.play()
                                d.eAnalogOut(3.0, 0.0) #(AO0, AO1)
                                pathFW.play()
                                yield viztask.waitTime(((len(FW_Pos))/100))
                                d.eAnalogOut(1.0, 0.0)
                                pathStopp.play()
                                yield viztask.waitTime(((len(Stopp_Pos))/100))
                                d.eAnalogOut(3.0, 0.0)
                                pathBW.play()
                                yield viztask.waitTime(((len(BW_Pos))/100))
                                d.eAnalogOut(1.0, 0.0)
                                song.stop()
                               
                viztask.schedule(ScheduleOutputs())               
###+++++++++++++++++++++++++++
viz.callback(viz.KEYDOWN_EVENT,onkeydown)

So, how can I manage that timing problem?

bloswald 03-11-2010 02:51 PM

viztask.schedule only once?
 
I think I have a similar problem. Maybe I just don't understand viztask very well, but it seems that you are unable to schedule a function more than once. Can I have someone with authority agree or disagree with this? Here is some code demonstrating what I am talking about.

Code:

def print_this():
        print "this"
        yield viztask.waitTime( 0.1 )
vizact.onkeydown( 'p', viztask.schedule, print_this() )

If I wanted to call print_this() multiple times, how would I go about doing that?

In my application I am assembling/disassembling a model (also with animation paths). When I typed vizact.onkeydown( viz.KEY_DOWN, disassemble_all ), my program would only call the function the first time I pressed the key. I want the parts to disassemble one at a time rather than all at once.

-
bloswald :)

bloswald 03-11-2010 03:03 PM

Oops. I meant to say: vizact.onkeydown( viz.KEY_DOWN, viztask.schedule, disassemble_all() )

-
bloswald :)

bloswald 04-27-2010 12:12 PM

Solved
 
Since my last post, I have learned that tasks require a different way of thinking.

The following code worked for my purposes, and viztask.schedule is only called once.

Code:

def print_this():
    while True:
        yield viztask.waitKeyDown( 'p' )

        print "this"
        yield viztask.waitTime( 1 )

viztask.schedule( print_this() )

Sometimes you have to forget about the problem for a while, then the solution shows itself. ;)

-
bloswald :)

bloswald 06-17-2010 11:17 AM

Better solution
 
Here is an even better solution.

Code:

import viztask
import vizact
import viz
viz.go()

def print_this():
        yield viztask.waitTime( 0.1 )
        print "this"

def intermediate_function():
        viztask.schedule(print_this())

vizact.onkeydown( 'p', intermediate_function )


-
bloswald :)


All times are GMT -7. The time now is 10:24 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC