Как определить, перемещалась или вращалась базовая станция Vive (она же маяк) с момента последней «установки комнаты»? - PullRequest
0 голосов
/ 16 ноября 2018

Я разработал новый драйвер для платформы SteamVR. Водитель должен быть перекалиброван, если какая-либо базовая станция (она же маяк) переместилась или повернулась. Мой вопрос: как мы определяем, перемещалась / вращалась ли базовая станция между циклами питания (выключение / включение ПК) или во время игры?

Что я сделал до сих пор :

1- Используя только одну базовую станцию ​​для слежения, я переместил базовую станцию ​​на пару сантиметров (около 10 см), но SteamVR все еще дал мне ту же позицию, что означает, что получение позы базовой станции не является хорошим способом обнаружения был ли он перемещен или нет.

2- Я обрадовался, когда нашел в openvr_driver.h функцию, которая предположительно сообщает вам, была ли перемещена базовая станция:

/** Get the current state of Chaperone calibration. 
   This state can change at any time during a session due to physical base 
   station changes. 
**/
   virtual ChaperoneCalibrationState GetCalibrationState() = 0;

Если кто-то столкнулся с базовой станцией, эта функция, очевидно, должна вернуть:

ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved = 101,    // A base station thinks that it might have moved

Однако это не так! Если вы переместите его, он вернет только ошибку:

"ChaperoneCalibrationState_Error = 200"

на короткий промежуток времени, и он быстро возвращается к

"ChaperoneCalibrationState_OK = 1"

Я не знаю, что имели в виду разработчики SteamVR, но это не работает.

...