2016-08-21 2 views
2

Я передаю данные в нереальный двигатель от инерциального датчика. Он выводит ненормализованные КВАТЕРНИОННЫЕ данные в формате:Проблемы с поворотом кватерниона в двигателе 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 каждый тик, а затем добавить значение поворота. Независимо от того, что я делаю, я вижу то же самое. Любая помощь здесь была бы очень признательна!

Это может быть проблема с рутинностью? Что я могу здесь попробовать?

ответ

0

Непонятно, если ваши входные данные от датчика показывают изменение вращения или его абсолютное значение. Если это абсолютная величина, попробуйте использовать SetActorRotation вместо SetActorRelativeRotation.

Если входные данные представляют собой дельта-поворот, попробуйте AddActorLocalRotation или AddActorWorldRotation.

+0

Спасибо за ваш ответ. Значения представляют собой абсолютные вращения. Я пробовал использовать setActorRotation и вижу точно такие же результаты. Я понял, что использование кватернионов должно решить эту проблему, но, несмотря ни на что, я не могу избавиться от нее! – anti

Смежные вопросы