Исправить систему координат устройства независимо от ориентации устройства?

Я успешно конвертирую координаты (широта, долгота) в координаты (восток, север) и пытаюсь найти способ точно разместить координаты (восток, север) в мире дополненной реальности.

Пример моей текущей проблемы:

Система координат устройства:

Система координат устройства с положительными и отрицательными осями x, y и z, с исходной камерой, расположенной на  положительная сторона оси z.

Преобразование из координаты (широта, долгота) дает мне координаты (восток, север),

(+x, 0, +z) where x=East, z=North

Теперь, если я смотрю на север, координата EN будет размещена позади меня, так как ось, обращенная вперед, будет -z. Если я смотрю на юг, координата EN снова будет размещена позади меня, потому что это зависит от ориентации моего устройства.

Мой вопрос:

Можно ли в ARCore исправить систему координат устройства независимо от его ориентации? Или есть алгоритм, который учитывает ориентацию устройства и позволяет статическое размещение якорей?

РЕДАКТИРОВАТЬ:

Я разместил этот же вопрос на ARCore-Sceneform GitHub и получил следующие ответы:

Тема вопросов GitHub


person nbazos    schedule 15.10.2018    source источник


Ответы (1)


Сначала давайте посмотрим, что говорят инженеры Google ARCore о мировых координатах:

Мировое пространство координат

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

Эти изменения означают, что каждый кадр следует рассматривать как находящийся в совершенно уникальном мировом координатном пространстве. Числовые координаты якорей и камеры никогда не должны использоваться за пределами кадра рендеринга, во время которого они были получены. Если позицию нужно рассматривать за пределами области единственного кадра рендеринга, следует либо создать привязку, либо использовать позицию относительно ближайшей существующей привязки.

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

Но!

Я твердо верю, что смартфон со своей камерой и сенсорами начинает свой путь (в ArSession) из относительного центра координатного пространства (для нас он относительный, для ARCore, конечно, абсолютный):

// X, Y, Z coordinates must be counted from zero, mustn't they?

(x: 0.0, y: 0.0, z: 0.0)

Тогда, при определенных обстоятельствах, мировое координатное пространство может быть изменено.

person Andy Fedoroff    schedule 23.04.2019