Какой метод следует использовать для достижения наиболее точного мирового опыта отслеживания ARKit?
Моя компания разрабатывает приложение дополненной реальности для клиента с использованием ARKit, и они хотят получить лучший опыт отслеживания мира на iOS. Мы сказали им, что это не точная наука и что небольшие вариации совершенно нормальны, но они хотят, чтобы мы делали все возможное, чтобы минимизировать ошибки, отклонения и движения от голограмм.
Мы проверили некоторые ARHitTestResult
примеры на Unity и некоторых других, которые используют ARImageAnchor
, но мы не можем определиться, какой из них лучший. Кажется, что с помощью ARImageAnchor
улучшает отслеживание, но я не уверен, так ли это на самом деле или это просто обман зрения.
Что лучше - ARImageAnchor
против равнины ARAnchor
?
Пожалуйста, сообщите или поделитесь любой документацией Unity/Apple по этому вопросу.
Благодарю.
2 ответа
Любой якорь в ARKit (ARFaceAnchor
, ARImageAnchor
, ARPlaneAnchor
и т. д.) наследуется от ARAnchor
класс и, в некоторых случаях, из ARTrackable
протокол.
Каждый якорь в ARKit имеет свое специальное назначение (например, ARPlaneAnchor
это специальная версия ARAnchor, предназначенная для процесса обнаружения самолетов). Я не думаю, что один якорь точнее другого.
Таким образом, все, что вам нужно для получения надежного результата отслеживания, это хорошее состояние освещения, различимые трехмерные поверхности и высококонтрастные текстуры на них. Также предварительно сохранены ARWorldMap
это хороший момент для постоянного опыта AR.
Не используйте повторяющиеся текстуры / шаблоны объектов и поверхности со сплошными цветами при отслеживании вашей сцены. Кроме того, для лучших результатов отслеживания не отслеживайте даже слегка движущиеся объекты. Вам нужна только статическая среда.
И я должен сказать, что все устройства Apple хорошо откалиброваны для надежного и точного AR опыта.
PS
Несколько советов о ARWorldTrackingConfiguration() и ARImageTrackingConfiguration ().
Если вы включите опцию распознавания изображений в 6 DOF ARWorldTrackingConfiguration()
ты получишь ARImageAnchor
объекты (для каждого обнаруженного изображения) - это просто информация о положении и ориентации изображений, обнаруженных в сеансе AR отслеживания мира. Это не повышает точность отслеживания мира, но значительно замедляет скорость обработки.
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "ARGroup",
bundle: nil) else {
fatalError("Missing expected resources.")
}
let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = referenceImages
configuration.maximumNumberOfTrackedImages = 3
session.run(configuration, options: [.resetTracking,
.removeExistingAnchors])
world-tracking session
при включенном отслеживании изображений можно одновременно отслеживать только небольшое количество изображений. Вы можете отслеживать больше изображений с ARImageTrackingConfiguration
, Но точность и производительность обнаружения изображений значительно снижаются при увеличении количества изображений обнаружения. Для достижения наилучших результатов используйте не более 20-25 изображений в наборе.
ARImageTrackingConfiguration ():
С
ARImageTrackingConfiguration
ARKit создает трехмерное пространство не путем отслеживания движения устройства относительно мира, а исключительно путем обнаружения и отслеживания движения известных 2D-изображений в поле зрения камеры.Image-only tracking
позволяет привязывать виртуальный контент к известным изображениям только тогда, когда эти изображения находятся в поле зрения камеры.World tracking with image detection
позволяет использовать известные изображения для добавления виртуального контента в трехмерный мир и продолжает отслеживать положение этого контента в мировом пространстве даже после того, как изображение больше не отображается.World tracking
лучше всего работает в стабильной, неподвижной среде. Вы можете использовать отслеживание только по изображениям, чтобы добавить виртуальный контент к известным изображениям в других ситуациях, например, в рекламе внутри вагона метро.
Вывод: используя ARImageAnchors
в вашей сцене не добавляется дополнительный уровень качества для World Tracking Results. Проверьте Распознавание изображений в статье AR Experience для получения подробной информации.
Надеюсь это поможет.
Добавление к тому, что опубликовал @andy-jazz: ИспользуйтеARAnchor
Вы должны использовать толькоARImageAnchor
когда вы действительно хотите вызвать впечатление от изображения. В противном случае их использование может быть даже вредным, поскольку первоначально распознанное положение и вращение могут немного отличаться, особенно при экстремальных углах обзора. Это будет скорректировано, когда вы будете смотреть на свое изображение более прямо, что приведет к дрейфу вашего контента, если он связан с этим изображением.
Использование привязки к изображению также приводит к ограничению удобства использования пользователями, которые должны иметь изображение для использования вашего приложения.
Совет: если вы имеете какое-либо влияние на то, какое устройство iOS клиент будет использовать с этим приложением, убедитесь, что оно имеет лидар. По моему опыту, это приводит к более быстрому и последовательному отслеживанию, особенно в условиях низкой освещенности.