Я получаю кватернион от своего контроллера и на его основе устанавливаю вращение модели в своей программе. Если я хочу перекалибровать базовую точку контроллера, я могу зафиксировать текущее значение датчика как baseValue и установить модель в базовое положение следующим образом:
modelRotation = sensorData * inverseOf(baseValue);
Это прекрасно работает, и модель сбрасывается в исходное положение.
Проблема в том, что если я поверну контроллер по оси Y и перекалибрую, теперь вращение по оси X контроллера будет вести себя как вращение по оси Z модели.
Есть ли способ, чтобы модель всегда имитировала вращение контроллера?