Как получить значения кватерниона на основе системы координат для другой системы координат?

У меня есть значения кватерниона из определенной системы координат, и мне нужно сопоставить это с системой координат Unity (в которой используется левая система координат). Используя (x, y, z) ось системы координат Unity, я хотел бы получить кватернион для системы координат Unity из значения кватерниона, сгенерированного с использованием системы координат (y, -x, -z) (см. ниже)

Как рассчитать новые значения кватерниона на основе новой системы координат, которая по-прежнему позволит правильно ориентировать объект (то есть то, что обращено вверх, останется лицом вверх в новой системе)?

введите здесь описание изображения


person Boon    schedule 12.07.2014    source источник
comment
Глядя на значения, это выглядит как простой поворот на 90 градусов вокруг оси z, класс кватернионов должен предоставлять конструктор оси-угла, который можно использовать для этого поворота с параметрами: 90 (-90, я не уверен) угол, (0, 0,1) ось   -  person Rychu    schedule 13.07.2014
comment
@Rychu Я приложил скриншот, чтобы лучше проиллюстрировать. ось z также перевернута.   -  person Boon    schedule 13.07.2014
comment
В таком случае это более проблематично - это вращение и флип, который я не думаю, что можно представить как просто вращение.   -  person Rychu    schedule 13.07.2014


Ответы (1)


Итак, вот мое предложение - поскольку есть вращение и отражение, и если я правильно понял, вам просто нужно представить объект, экспортированный из какого-либо приложения, в единстве, я бы сделал следующее:

Для каждого объекта вам нужно «исправить» установить преобразование на 90 (или -90, я никогда не уверен в направлении), вращение вокруг оси Z и масштабирование (1, 1, -1). Если вы хотите иметь возможность легко применять больше, вы можете инкапсулировать эти объекты в пустой GameObject (с голым преобразованием) для каждого и применять необходимые преобразования к этим игровым объектам.

person Rychu    schedule 13.07.2014