googlevr / gvr-unity-sdk

Google VR SDK for Unity
http://developers.google.com/vr/unity/
Other
2.71k stars 1.09k forks source link

GetHeadPose is returning inaccurate values #401

Closed rawnsley closed 7 years ago

rawnsley commented 7 years ago

If I run DemoScene, I have to turn around almost twice before I can see the cube again. I've traced the source of the problem to GvrDevice::UpdateState and the call into GetHeadPose in the Google VR DLL. Basically the orientation value that is returned changes too slowly as you rotate.

The raw values returned by Unity's Input.gyro.attitude look correct so I can only assume something is going wrong inside GetHeadPose.

I know this function performs various integration and drift correction operations, but are there any more details available? Specifically is it based on any device parameters that might have been set incorrectly? (this Android device has a sort of custom ROM).

nathanmartz commented 7 years ago

What device are you using? The sensor quality varies dramatically across devices and there's only so much we can fix up in software.

rawnsley commented 7 years ago

@nathanmartz thanks for the super-speedy reply!

I'm using a pre-production Android-based all-in-one headset similar to these.

As far as I can tell the sensor quality is excellent, smooth and precise, and apps built against the Nibiru SDK (heavily based on the Cardboard SDK, but with a different native DLL) work fine.

Also the values reported by Input.gyro.attitude are good. In fact I wired them up directly in UpdateState to be sure, but that will only help me with my own Cardboard apps, not with those written by third-parties.

nathanmartz commented 7 years ago

I'm sorry but we can't provide support for devices that are neither Daydream or Works with Google Cardboard certified.