Unity ARKit SetWorldOrigin - неправильное вращение - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь установить новую позицию и ориентацию как начало координат с помощью SetWorldOrigin

Я использую Unity 2018.3.0f2 и ARKit 2.0

Мое начальное выравнивание: "Unity AR AlignmentGravity And Heading "

В моей тестовой среде на открытом воздухе у меня есть известная точка с визуализированным северным направлением.Я могу поместить Gameobject (newOriginGO) в эту точку и повернуть его к визуализированному северному направлению.Проблема в том, что виртуальные объекты повернуты в неправильное положение.Я тестировал только с переводами, это сработало.Вот фрагмент кода:

GameObject translationToLastPosition = new GameObject();
GameObject rotateToNewRotation = new GameObject();
GameObject translationToNewPosition = new GameObject();

translationToLastPosition.transform.position = -lastOriginP;
rotateToNewRotation.transform.eulerAngles = lastOriginR - newOriginGO.transform.eulerAngles;
translationToNewPosition.transform.position = lastOriginP - newOriginGO.transform.position;

UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(translationToLastPosition.transform);
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(rotateToNewRotation.transform);
UnityARSessionNativeInterface.GetARSessionNativeInterface().SetWorldOrigin(translationToNewPosition.transform);

lastOriginP = newOriginGO.transform.position;
lastOriginR = newOriginGO.transform.eulerAngles;

Поскольку SetWorldOrigin требуется относительное преобразование, и я вращаю свой Gameobject вокруг последнего источника, с помощью transform.RotateAround(lastOriginP, Vector3.up, angle), я пыталсяпереведите WorldOrigin обратно к последнему источнику, поверните WorldOrigin и затем верните обратно в фактическую позицию.У меня ошибка мышления или я не совсем понимаю, как работает метод SetWorldOrigin?Как ARKit SetWorldOrigin влияет на систему координат Unity World Space?

1 Ответ

0 голосов
/ 29 марта 2019

Хорошо, наконец-то я нашел другое решение. Вместо того, чтобы менять WorldOrigin с помощью ARKit, я сделал все свои 3D-объекты дочерними объектами пустого GameObject. Затем я изменил этот GameObject со своими значениями коррекции (перевод и вращение).

...