|
#1
|
|||
|
|||
Jerky changes in view velocity when updating with timer
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) Thanks in advance! |
#2
|
|||
|
|||
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.
|
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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) |
#5
|
|||
|
|||
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.
|
#6
|
|||
|
|||
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?
|
#7
|
|||
|
|||
Sure, I understand. Thanks for the advice, I'll keep digging around.
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
animation path problem - coordinates not resetting | jelly | Vizard | 7 | 04-26-2016 10:45 AM |
Using Oculus and Vicon for updating in pit | Qiliang He | Vizard | 1 | 09-06-2015 02:46 PM |
Prevent Oculus DK2 updating the view with accelerometer info | Notch | Vizard | 3 | 10-24-2014 11:06 AM |
View | nlfrnassimi | Vizard | 4 | 03-12-2009 05:25 AM |
problem with stereo mode | shivanangel | Vizard | 3 | 10-17-2006 09:58 AM |