Slightly more motion every 0.8 seconds

Hi HF community! I have a question to ask that may lead me down arcane paths into the codebase, but I thought I’d start.

I’m collecting tracking data from 3 people interacting in High Fidelity. Each participant’s VR setup has a tracking script to dump off the data to a server I’ve set up. I’m running some analysis on this data, and I’ve found there’s a slight bump in the amount of motion every 0.8 seconds or so, and it’s synchronized among all people on the server. It’s nowhere near enough of an effect to notice while in VR; it only comes out afterwards, in the data analysis. Do any of you have ideas as to what might be happening at this frequency? Bonus points if there’s a hypothesis that connects to this effect.

Mark

If you are recording absolute positions of moving entities or avatars from JavaScript, you could be seeing subtle timing issues between the “update” thread and the “script” threads. For performance reasons we throttle the update rate of running scripts, we also run them on background threads so they cannot interrupt or stall the main “update” thread, which does simulation and animation.

We limit the update rate of a script to 60 times a second. When you are running in VR the “update” thread is running at 90 times a second. This can show up as a “beat frequency” where occasionally you might see a position move twice as far as previous frames. Or if the “update” thread is under load, the object position might not move at all between script updates.

I’m not sure why you would seeing this be synchronized between clients, though.

The frequency I was collecting at was 20Hz, so it would be an alternating 4 updates / 5 updates pattern. I wouldn’t expect a beat at 0.8Hz. I’ll check the thread-under-load part and see if it’s that.

Does the server do anything in terms of updating position, in particular, head position as gathered by HMD.position? Or does it merely convey the positions between participants?

It doesn’t seem to be a Vive thing, as a different set of tracking data collected in a different application did not have that same 1.25 Hz peak in its Fourier transform. But it might be, who knows.

Thats interesting. I noticed this stuttering effect allready some time ago and posted it on canny. This seems be the root of the issues I had. It is not possible to make any dynamical game if the movement is not smooth. I understand the reason why you do it, but is there a way to minimize these effects?