sensics / OSVR-RenderManager

Apache License 2.0
64 stars 45 forks source link

Display is gray when localTimeOverride = false #294

Open rpavlik opened 7 years ago

rpavlik commented 7 years ago

I was attempting to bisect the settings that produce a judder, and considered that the override of timing data when VSYNC is on might be related. However, I discovered that while there is a "localTimeOverride" option in the RM config file, setting it to "false" and running the D3D Present demo result in a grey screen that flickers once every few seconds.

This was on a VS2015 build, so we had high-quality timing data all over, and the tracking was from the new tracker plugin which uses its model to "predict" to "now", immediately before reporting. (Judder/wobble is seen when RM prediction is enabled and not seen when it isn't.)

I would expect this to not happen :) If we can't use the transmitted timestamp directly, we should at least be using relative offsets to our internal timestamp.

russell-taylor commented 7 years ago

Cannot reproduce when using an HDK 2.0 for tracking with an extended-mode window-based output using the sensics-home-russ branch of RenderManager and the attached config file (you'll want to edit the starting position of the window) and the RenderManagerD3DPresentExample3D application.

Could verify that predictive tracking was happening by changing the prediction interval to 1600 and seeing large jumps due to tracker noise.

nondirectmode_window_nonlocaltime.json.zip

russell-taylor commented 7 years ago

Grey (0.3,0.3,0.3) is the clear color for the application and is what would be rendered if the head were outside of the 2-meter cube surrounding the center. My test used orientation-only tracking so would never produce that outcome. I did not notice any artifacts in the orientation other than those expected when the prediction interval was large.

It is possible that positional prediction has not worked, since I don't know that it has been tested.

russell-taylor commented 7 years ago

The translation-prediction code is pretty straightforward; it might be going in the wrong direction but it should not be shooting off very far unless either the time interval or the velocity is large. Line 1538 of RenderManagerBase.cpp provides a place to look for the interval and line 118 has the pose-prediction code that is called.

russell-taylor commented 7 years ago

Let me know if you want me to continue chasing this by adding positional tracking using a hand controller.