Получение абсолютного положения точки в ARKit

Когда я касаюсь определенной точки в сцене ARKit, я получаю координаты X, Y и Z точки относительно положения моего устройства (я прав?) Я хотел бы узнать абсолютное положение точки на Земля, а не только по отношению к моему устройству.

Пока что моя логика состоит в том, чтобы получить longitude, latitude, altitude, курс (направление по компасу) и положение (вращение) устройства и вычислить на их основе абсолютное положение точки.

Интересно, есть ли способ попроще.


person Coffee Bite    schedule 03.07.2017    source источник


Ответы (1)


ARKit не имеет никаких функций для отслеживания положения устройства или размещения контента в «абсолютных» геопространственных координатах. На самом деле делать это (и делать это хорошо) - своего рода сложная проблема ... но есть несколько вещей, которые помогут вам на вашем пути.

Сначала проверьте настройку ARSessionConfiguration worldAlignment. С параметром по умолчанию gravity направления x и z относятся к исходному заголовку устройства на момент начала сеанса. Добраться оттуда к геопространственным координатам практически невозможно.

Но с параметром gravityAndHeading оси фиксируются на севере / юг и восток / запад - положение начала координат системы ARKit по-прежнему относительно того, где находится устройство в начале сеанса, но направления являются абсолютными. Это дает вам основу для преобразования в / из геопространственных координат.

Но все еще остается вопрос точности. Гусеницы ARKit расположены на расстоянии до нескольких метров с точностью до пары миллиметров. Core Location отслеживает устройство с точностью до нескольких метров. Итак, если у вас есть реальная функция, и вы хотите разместить поверх нее виртуальный контент ... вы можете преобразовать широту / долготу в позицию в пространстве ARKit, но тогда вы, вероятно, обнаружите, что ваш контент не не выстраиваюсь достаточно близко.

Это не неразрешимая проблема, но и непростая. Удачи!

person rickster    schedule 03.07.2017