Существуют ли какие-либо ограничения в Vuforia по сравнению с ARCore и ARKit?

Я новичок в области дополненной реальности, работая над приложениями, которые создают планы зданий (план этажа, план комнаты и т.д. С точными измерениями) с помощью смартфона. Поэтому я изучаю лучший AR SDK, который можно использовать для этого. Существует не так много статей, которые пишут Vuforia против ARCore и ARKit.

Пожалуйста, предложите лучший SDK для использования, плюсы и минусы каждого.

Ответ 1

Обновление: 05 октября 2019 года.

TL; DR

Google ARCore позволяет создавать приложения для Android и iOS, с помощью Apple ARKit вы можете создавать приложения для iOS и iPadOS, и был создан старый, старый PTC Vuforia приложения для Android и iOS.

Важной особенностью Vuforia является то, что она использует технологию ARCore/ARKit, если аппаратное обеспечение, на котором она работает, поддерживает ее, в противном случае она использует свою собственную технологию AR и механизм, известный как программное решение без зависимого оборудования.

Однако при разработке для смартфонов Android OEM вы можете столкнуться с неприятной проблемой: устройства разных производителей нуждаются в калибровке датчиков для того, чтобы получить одинаковый опыт AR. К счастью, гаджеты Apple не имеют такого недостатка, поскольку все используемые там датчики были откалиброваны в одинаковых условиях.

Но чтобы ответить на этот вопрос, давайте на первом месте.

enter image description here enter image description here

ARCore 1.12

ARCore основан на трех основных концепциях fundamental concepts: Motion Tracking, Environmental Understanding и Light Estimation. Таким образом, ARCore позволяет поддерживаемому мобильному устройству отслеживать его положение и ориентацию относительно мира с 6 степенями свободы (6DOF), используя специальную технику, называемую Параллельная одометрия и картирование. COM также помогает нам определять размер и расположение горизонтальных, вертикальных и наклонных гусеничных поверхностей (таких как земля, столы, скамейки, стены, склоны и т.д.). Отслеживание движения работает надежно благодаря оптическим данным, поступающим с камеры при 60 к/с, в сочетании с инерционными данными, поступающими с гироскопа и акселерометра при 1000 к/с. Естественно, ARKit и Vuforia работают примерно одинаково.

Когда вы перемещаете свой телефон в реальной среде, ARCore отслеживает окружающее пространство, чтобы понять, где находится смартфон, относительно мировых координат. На этапе отслеживания ARCore "сеет" так называемые feature points, которые образуют облако разреженных точек, и это облако живет, пока активен сеанс отслеживания. Эти характерные точки видны через заднюю RGB-камеру, и ARCore использует их для вычисления местоположения телефона. Затем визуальная информация должна быть объединена с измерениями от акселерометра и гироскопа (Inertial Measurement Unit), чтобы оценить положение и ориентацию ArCamera во времени. ARCore ищет группы характерных точек, которые кажутся лежащими на горизонтальных, вертикальных или наклонных поверхностях, и делает эти поверхности доступными для вашего приложения в качестве плоскостей (мы называем эту технику как обнаружение плоскостей). Итак, теперь вы можете использовать эти плоскости для размещения 3D-объектов в вашей сцене. После этого виртуальная геометрия с назначенными шейдерами будет отображаться компаньоном ARCore - Sceneform (с поддержкой ресурсов OBJ, FBX и glTF), который использует физический рендеринг в реальном времени Двигатель (он же PBR) - нить Filament.

Понимание окружающей среды ARCore позволяет размещать 3D-объекты и 2D-аннотации таким образом, чтобы они интегрировались в реальный мир. Например, вы можете поместить виртуальную чашку кофе в angular вашего реального стола, используя ArAnchor.

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

Предыдущие крупные обновления принесли в ARCore такие важные API, как Оценка освещения с Environmental HDR mode, Augmented Faces, Augmented Images, Sceneform Animations, Cloud Anchors и Multiplayer support. Основным преимуществом ARCore в Android Studio над ARKit в Xcode является Android Emulator, позволяющий запускать и отлаживать приложения AR с помощью виртуального устройства.

ARCore старше, чем ARKit. Вы помните Project Tango, выпущенный в 2014 году? Грубо говоря, ARCore - это просто переписанный Tango SDK без глубокой камеры. Но мудрое приобретение FlyBy и MetaIO помогло Apple наверстать упущенное. Я полагаю, это очень хорошо для AR-индустрии.

Последняя версия ARCore требует Android 7.0 Nougat или более поздней версии, поддерживает ускорение OpenGL ES 3.1 и интегрируется с Unity, Unreal и веб-приложениями. На данный момент наиболее мощными и энергоэффективными чипсетами для AR на платформе Android являются Kirin 980 (7 нм), Snapdragon 855 Plus (7 нм) и Exynos 9825 (7нм).

ARCore цена: БЕСПЛАТНО.

|-----------------------------------|-----------------------------------|
|            ARCore PROS            |            ARCore CONS            | 
|-----------------------------------|-----------------------------------|
| //  Quick Plane Detection         |  Cloud Anchors are hosted online  |
|-----------------------------------|-----------------------------------|
| //  Long-distance-accuracy        |  Lack of rendering technologies   |
|-----------------------------------|-----------------------------------|
| //  Sloping Surfaces Detection    |  Poor developer documentation     | 
|-----------------------------------|-----------------------------------|
| //  High-quality Lighting API     |  No external camera support       |
|-----------------------------------|-----------------------------------|
| //  A lot of supported devices    |  No Z-Depth compositing for model |
|-----------------------------------|-----------------------------------|

Вот фрагмент кода ARCore, написанный на Kotlin:

private fun addNodeToScene(fragment: ArFragment, anchor: Anchor, renderable: Renderable) {

    val anchorNode = AnchorNode(anchor)
    anchorNode.setParent(fragment.arSceneView.scene)

    val modelNode = TransformableNode(fragment.transformationSystem)
    modelNode.setParent(anchorNode)
    modelNode.setRenderable(renderable)
    modelNode.localPosition = Vector3(0.0f, 0.0f, -3.0f)
    fragment.arSceneView.scene.addChild(anchorNode)

    modelNode.select()
}

enter image description here enter image description here

ARKit 3.0

Как и его конкурент, ARKit также использует специальную технику, называемую Visual Inertial Odometry, чтобы очень точно отслеживать мир вокруг вашего телефона. VIO в достаточной степени похож на COM, найденный в ARCore. В ARKit также есть три схожие фундаментальные концепции: World Tracking, Scene Understanding (которая включает в себя три этапа: Обнаружение самолета, Тестирование попадания и Оценка освещенности), и Rendering с помощью помощников ARKit - SceneKit, который фактически является движком 3D-игры, RealityKit, специально созданный для AR, и SpriteKit с 2D-движком.

VIO объединяет данные датчика RGB при 60 к/с с данными Core-Motion (IMU) при 1000 к/с. В дополнение к этому SceneKit, например, может отображать всю трехмерную геометрию со скоростью 30/60/120 кадров в секунду. Поэтому в таких обстоятельствах, я думаю, следует отметить, что из-за очень сильного энергетического воздействия (из-за огромной нагрузки на процессор и графический процессор) батарея вашего iPhone будет разряжаться довольно быстро.

ARKit имеет несколько полезных методов для надежного отслеживания и точных измерений. В его арсенале вы найдете простую в использовании функциональность для сохранения и извлечения ARWorldMaps. Карта мира является незаменимым "порталом" для многопользовательских AR Persistent и Multiuser AR experience, который позволяет вам вернуться в ту же среду, заполненную тем же выбранным 3D-контентом, незадолго до того, как ваше приложение стало неактивный. Поддержка одновременного захвата камеры front и back и поддержка collaborative sessions, которая позволяет нам делиться картами мира, также великолепны.

Хорошие новости для геймеров: до 6 человек одновременно могут играть в одну и ту же игру AR. Для трехмерной геометрии вы можете использовать совершенно новый формат файла USDZ, разработанный и поддерживаемый Pixar, который является хорошим выбором для сложных виртуальных моделей с большим количеством шейдеров PBR. Также вы можете использовать следующих 3D форматов для ARKit.

ARKit не только поможет вам отслеживать положение и ориентацию вашего устройства относительно мира в 6DOF, но также поможет вам выполнять технику Окклюзия людей (основанную на альфа и глубине depth сегментация каналов), Motion Capture tracking, 2D tracking, vertical and horizontal Planes detection, Image detection, 3D Object detection и 3D Object scanning. С помощью инструмента "Окклюзия людей" ваш контент AR реалистично передается и оказывается перед людьми в реальном мире, что делает опыт AR еще более захватывающим. Кроме того, теперь доступны Realistic reflections, использующие алгоритмы машинного обучения, и Face-based AR experience, который позволяет отслеживать до 3 лиц одновременно.

Используя iBeacons вместе с ARKit, вы помогаете приложению, поддерживающему iBeacon, узнать, в какой комнате он находится, и показать правильный 3D/2D контент, выбранный для этой комнаты. Работая с ARKit, вы должны интенсивно использовать класс ARAnchor и все его подклассы так же, как вы использовали его в ARCore.

Для создания AR-приложений, созданных на основе последней версии ARKit 3.0 (включая все поддерживаемые нововведения), вам понадобятся MacOS 10.15 Catalina, Xcode 11 и iPhone под управлением iOS 13. Печальная новость - все топовые функции ARKit 3.0 ограничены на устройства с процессорами Apple A12 и A13. Также ARKit 3.0 является достойным кандидатом на вступление в брак с Metal Framework для ускорения GPU. И не забывайте: ARKit тесно интегрируется с Unity и Unreal. На данный момент наиболее мощными и энергоэффективными чипсетами для AR на платформах iOS и iPadOS являются A13 (7 нм) и A12 Bionic (7 нм).

Цена ARKit: БЕСПЛАТНО.

|-----------------------------------|-----------------------------------|
|             ARKit PROS            |            ARKit CONS             | 
|-----------------------------------|-----------------------------------|
| //  Stable 6DoF World Tracking    |  No angled-surface detection      |
|-----------------------------------|-----------------------------------|
| //  Collaborative Sessions        |  ARKit 3 restrictions (A12, A13)  |
|-----------------------------------|-----------------------------------|
| //  World Maps, iBeacon-awareness |  No macOS Simulator for ARKit     |
|-----------------------------------|-----------------------------------|
| //  4 rendering technologies      |  No external camera support       |
|-----------------------------------|-----------------------------------|
| //  Rich developer documentation  |                                   |
|-----------------------------------|-----------------------------------|

Вот фрагмент кода ARKit, написанный на Swift:

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
    let planeNode = tableTop(planeAnchor)
    node.addChildNode(planeNode)
}

func tableTop(_ anchor: ARPlaneAnchor) -> SCNNode {

    let x = CGFloat(anchor.extent.x)
    let z = CGFloat(anchor.extent.z)

    let tableNode = SCNNode()
    tableNode.geometry = SCNPlane(width: x, height: z)
    tableNode.position = SCNVector3(anchor.center.x, 0, anchor.center.z)
    return tableNode
} 

enter image description here enter image description here

Vuforia 8,5

PTC Vuforia Engine обладает примерно теми же основными возможностями, которые вы можете найти в последних версиях ARKit и ARCore, а также своими собственными новыми функциями, такими как модели Targets with Deep Learning, VISLAM для AR без использования маркеров и поддержка внешних камер для iOS, и новые экспериментальные API для ARCore и ARKit. Основное преимущество Vuforia перед ARKit и ARCore состоит в том, что у него более широкий список поддерживаемых устройств.

Vuforia имеет автономную версию и версию, встроенную непосредственно в Unity. Он имеет следующие функциональные возможности: Advanced Model Targets 360 (распознавание осуществляется с помощью AI), Model Targets with Deep Learning (позволяют мгновенно распознавать объекты по форме с использованием уже существующих 3D-моделей и алгоритмы обучения), Цели изображения (самый простой способ размещения содержимого AR на плоских объектах), Мультицели (для объектов с плоскими поверхностями и несколькими сторонами), Цели цилиндров (для размещения контента AR на объектах цилиндрической формы), Земля плоскости (как часть Smart Terrain, эта функция позволяет размещать цифровой контент на полах и поверхностях столешниц), VuMarks (позволяет идентифицировать и добавлять содержимое в ряд объектов), объектные цели (для сканирования объекта), статический и адаптивный режимы (для стационарных и движущихся объектов) и, конечно, Fusion.

Vuforia Fusion - это функция, предназначенная для решения проблемы фрагментации в технологиях AR, таких как камеры, датчики, наборы микросхем и программные среды, такие как ARKit. С Vuforia Fusion ваше приложение автоматически обеспечит наилучшее впечатление без дополнительной работы с вашей стороны.

Новый API допускает режим Static или Adaptive. Когда реальная модель остается неподвижной, как крупная промышленная машина, реализация API Static будет использовать значительно меньшую вычислительную мощность. Это обеспечивает более продолжительный и более высокий уровень производительности для этих моделей. Для объектов, которые не являются стационарными, API Adaptive обеспечивает продолжительный устойчивый опыт.

Функция External Camera является частью инфраструктуры драйверов Vuforia. Внешняя камера дает новый взгляд на то, что возможно с дополненной реальности. Это позволяет Vuforia Engine получать доступ к внешним источникам видео за пределами камеры, оснащенной телефонами и планшетами. Используя независимую камеру, разработчики могут создать опыт AR, который предлагает вид от первого лица из игрушек, роботов или промышленных инструментов.

Occlusion Management является одной из ключевых функций для создания реалистичного опыта AR. Когда вы используете Occlusion Management, Vuforia Engine обнаруживает и отслеживает цели, даже если они частично скрыты за повседневными барьерами, такими как ваша рука. Специальная обработка окклюзии позволяет приложениям отображать графику, как будто она появляется внутри физических объектов.

Vuforia поддерживает ускорение Metal для устройств iOS. Также вы можете использовать Vuforia Samples для ваших проектов. Так, например:. Кнопку Vuforia Core Samples библиотека включает в себя различные сцены с использованием функции Vuforia, в том числе предварительно сконфигурированной распознавания объектов сцены, которые можно использовать в качестве эталона и отправной точкой для распознавания объектов приложения

enter image description here

Vuforia SDK Цена (есть четыре варианта): Бесплатно (необходимо зарегистрироваться для получения бесплатного лицензионного ключа разработки), $ 499 за классическую лицензию (для приложений, созданных для компаний с доход менее 10 миллионов долларов США в год), 99 долларов США в месяц за облачную лицензию, а PTC также предоставляет лицензию Pro с личной ценой (без ограничения дохода).

enter image description here

CONCLUSION :

В Vuforia нет существенных ограничений для разработки по сравнению с ARCore и ARKit. Vuforia - отличный продукт, он поддерживает серию iPhone 5/6, а также некоторые модели Android, которые ARCore не поддерживает. Но, на мой взгляд, сам ARKit имеет гораздо большую точность измерений без необходимости калибровки, а у ARKit 3.0 лично есть куча полезных функций, которые устраняют ошибки, накопленные с течением времени. Таким образом, точность измерения Vuforia зависит от того, для какой платформы вы разрабатываете.

Pay particular attention: Vuforia Chalk application was built on Apple ARKit.

enter image description here

Ответ 2

Отличная информация Однако хотелось бы добавить несколько пунктов, основываясь на опыте использования ARCore и ARkit. Что касается картографирования, ARCore имеет возможность управлять большими картами по сравнению с ARkit. ARcore отслеживает больше особенностей по сравнению с ARkit. Другой момент - ARKit различает горизонтальное и вертикальное обнаружение поверхностей лучше, чем ARcore.