Я передаю данные в нереальный двигатель от инерциального датчика. Он выводит ненормализованные КВАТЕРНИОННЫЕ данные в формате:Проблемы с поворотом кватерниона в двигателе Unreal
X = 6561.00000
Y = 6691.00000
Z = 2118.00000
W = 2078.00000
Я применяю это к актеру, в C++, используя:
this->SetActorRelativeRotation(rotsQ);
И это дает мне странные Gimbal вопросы.
Когда я поворачиваю шаг на 90 градусов, он вращается в шаге.
Я вращаюсь на 90 градусов по оси Y.
Когда я поворачиваю шаг на 90 градусов, он вращается в рулоне.
Я попытался преобразовать его в ФРОТАТОР и поворачивать оси, применяя оси по одному и переключая порядок вращения. Я попытался установить Актера на 0,0,0 каждый тик, а затем добавить значение поворота. Независимо от того, что я делаю, я вижу то же самое. Любая помощь здесь была бы очень признательна!
Это может быть проблема с рутинностью? Что я могу здесь попробовать?
Спасибо за ваш ответ. Значения представляют собой абсолютные вращения. Я пробовал использовать setActorRotation и вижу точно такие же результаты. Я понял, что использование кватернионов должно решить эту проблему, но, несмотря ни на что, я не могу избавиться от нее! – anti