Как определить, была ли базовая станция Vive (она же маяк) перемещена или повернута с момента последней "установки комнаты"?
Я разработал новый драйвер для платформы 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, но это не работает.