WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Jerky changes in view velocity when updating with timer (https://forum.worldviz.com/showthread.php?t=5836)

rroemmich29 08-31-2016 07:27 AM

Jerky changes in view velocity when updating with timer
 
1 Attachment(s)
Hi all,

We have created a visual flow environment where the velocity of the flow matches the velocity of a treadmill in our lab. The velocity of the treadmill changes from step to step based on the step length of the participant and the visual flow in turn updates to the same velocity.

I am having an issue where the visual flow transitions from one velocity to another appear to have some jitter and was wondering if anyone could give me some advice on how to eliminate it. Essentially, when the flow changes velocity, the screen appears to jitter back and forth very briefly (a matter of milliseconds) before settling on the new velocity.

When I run something like this, the view velocity updates very smoothly:

Code:

vel = 1.2
velcount = 1
view = viz.MainView
view.eyeheight(1.7)

def updatevel():
        global vel
        view.velocity([0,0,vel])
        print vel

def addvel():
        global vel
        global velcount
        if velcount == 1:
                vel=vel+1
                velcount = 2
        else:
                vel=vel-1
                velcount = 1

def updatefn():
        updatevel()
        addvel()
       
vizact.ontimer(1,updatefn)

I am unsure why my code differs from this and have attached it below in case anyone has any ideas. I am happy to provide further information if anything is unclear.

Thanks in advance!

Jeff 09-01-2016 04:47 AM

Can you verify that the frame rate is stable throughout? Is the velocity fluctuating during that period of time when there is jitter? You could try recording the velocity values every frame and look at the values to see if it changes when you expect.

rroemmich29 09-01-2016 05:49 AM

When I log the velocities inside the update function, I get the following (as sample data):

500
467
220
54
612
497
398
418
700
585
776
825
346
297
552
388
817
542
811

You'll notice that none of the velocities become negative, so I am still struggling to understand why the jitter occurs. Certainly the velocity magnitude should change, but I'm not sure why it momentarily changes direction.

Jeff 09-01-2016 05:49 AM

Can you verify the update function is only called once per timer period? Just want to make sure multiple timers are not inadvertently created.

You could also try updating the view position each frame instead of using the view.velocity command:

Code:

def UpdateView():
        view.setPosition([0, 0, velocity * viz.getFrameElapsed()], viz.REL_LOCAL)

vizact.ontimer(0, UpdateView)


rroemmich29 09-01-2016 06:00 AM

Thanks for the suggestion. Unfortunately, the same issue occurs when changing the position. I am running two timers in the current iteration of the code, but only one of the timers updates the view velocity. I have also run the code with only one timer and the issue persists.

Jeff 09-01-2016 06:20 AM

It's difficult to say without being able to run code that reproduces the issue. If the display frame rate is stable then it seems like something in the code is causing this. Both of these methods to move the viewpoint work fine in other examples. Are you able to run your code and perhaps simulate treadmill values rather than actually doing any IO operations?

rroemmich29 09-01-2016 06:26 AM

Sure, I understand. Thanks for the advice, I'll keep digging around.


All times are GMT -7. The time now is 10:09 PM.

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