В чем разница между «реальным объектом», поверхностью, якорями дополненной реальности?

Ищу технический ответ на вопрос:

В чем разница между «реальным объектом», поверхностью, якорями AR в ARkit?

Я верю, и насколько я могу сказать: 1) ARkit предлагает 3 различных метода для поиска «реальных объектов», поверхностей, якорей AR.

Я понимаю, что для поиска содержимого SceneKit / SpriteKit, отображаемого в представлении, необходимо использовать различные методы hitTest.

Я просто не могу понять, что такое «реальный объект» против поверхности и привязки AR?

Мое лучшее предположение:

Реальный объект: - Не знаю? Поверхность: - featurePoints - EstimatedHorizontalPlane -estimatedVerticalPlane Якоря AR: ARImageAnchor ARFaceAnchor ARPlaneAnchor

Думаю, вы поняли… что такое «объект реального мира» в ARKit?

Любая помощь была бы замечательной. Документация, кажется, действительно подчеркивает разницу между «реальным объектом или поверхностью».

Спасибо, Smartdog. Мы все учимся, делясь тем, что знаем.


person smartdog    schedule 11.02.2018    source источник


Ответы (1)


Моя интуиция такова, что тот, кто писал документы Apple, оставил вещи неоднозначными, потому что а) вы можете использовать эти методы для нескольких видов тестов попадания, и б) ARKit не действительно знает, на что он смотрит.

Если вы проводите проверку попадания для любого из типов, связанных с плоскостями (existingPlane, estimatedHorizontalPlane и т. Д.), Вам нужны реальные плоские поверхности. Или, скорее, вы ищете вещи, которые, по мнению ARKit, выглядят как плоские горизонтальные (или вертикальные в iOS 11.3 и новее) поверхности. Они могут или не могут точно отражать форму реального мира в любой момент, но это лучшее предположение ARKit. От того, какой из типов, связанных с самолетами, вы будете искать, зависит, получите ли вы существующий ARAnchor.

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

Если вы выполняете featurePoint проверку попадания, вы проводите тестирование с использованием разреженной карты среды пользователя ARKit. Если вы включите опцию showFeaturePoints в ARSCNView, вы увидите эту карту - в каждом кадре видео она находит от десятков до небольших-сотен точек, которые визуально достаточно интересны (ну, «интересны» с точки зрения конкретного алгоритма), которые он может соотносить их 2D-положения между кадрами и использовать разницу параллаксов для оценки их расстояний от камеры и положения в 3D-пространстве. (В свою очередь, это дает представление ARKit о том, где находится само устройство в трехмерном пространстве.)

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

Итак, в самом общем смысле, тестирование попадания в ARKit ищет «объекты» какого-то типа в «реальном мире» (как это воспринимается ARKit), но если вы не ищете плоскости (поверхности), это действительно невозможно. более конкретно о том, что это за «объекты».

person rickster    schedule 13.02.2018
comment
Спасибо, что нашли время ответить на этот вопрос. @rickster, вы заявили: ‹h1› Мне кажется, что тот, кто писал документы Apple, оставил вещи неоднозначными, потому что а) вы можете использовать эти методы для нескольких видов тестов попадания, и б) ARKit действительно не знает, на что он смотрит. ‹/ h1 ›Я чувствовал то же самое и причину, по которой я задаю вопрос :-) Спасибо за четкий анализ проблемы. - person smartdog; 14.02.2018
comment
добавление к моему комментарию сверху: @rickster вы заявили: ‹h1› Итак, в самом общем смысле, тестирование попадания ARKit ищет «объекты» какого-то типа в «реальном мире» (как это воспринимается ARKit), но если вы ищете плоскости (поверхности), невозможно более точно определить, что это за «объекты». ‹/h1› Это точно такой же вывод, к которому я пришел. Может быть, у Apple что-то есть в рукаве :-)) Smartdog Мы все учимся, делясь тем, что знаем. - person smartdog; 14.02.2018