Какой метод следует использовать для достижения наиболее точного мирового опыта отслеживания 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 клиент будет использовать с этим приложением, убедитесь, что оно имеет лидар. По моему опыту, это приводит к более быстрому и последовательному отслеживанию, особенно в условиях низкой освещенности.

Другие вопросы по тегам