Я пытаюсь установить новую позицию и ориентацию как начало координат с помощью 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?