Close

10.01.2018

Обзор средств реализации AR приложений

 

Цель обзора

 

Сделать обзор и сравнение трех AR-инструментов: Wikitude, Vuforia, EasyAR.

 

Задачи

 

 

 

 

 

Провести эксперименты по распознаванию одного объекта при разных условиях освещения. В качестве распознаваемого объекта используется конструкция из двух картонных коробок, склеенных скотчем. В верхней коробке присутствует отверстие.

 

 

 

 

 

Wikitude

 

Ссылка на Setup Guide: тык

Особенности

Из особенностей можно выделить то, что в отличии от Vuforia 3д объекты в базу загружаются в виде видеороликов. Таргет генерируется из видео. Насколько я понял, для того, чтобы таргет успешно генерировался, нужно снять его на однотонном фоне. Кто-то использовал для этого хромакей, кто-то делал это на фоне листа бумаги. Нужно провести опыт с записью в офисе, на линолеуме.

 

Стоимость

 

 

Ход эксперимента

 

Произвел запись видео с распознаваемым объектом. Для этого нужно заснять объект со всех сторон, с разного расстояния. С нескольких попыток коробки распознались, в targetmanager присвоен рейтинг — одна звезда. Результата выше добиться не удалось, 2 последние попытки вообще не привели ни к чему: загрузка видео

проходит успешно, однако на этапе подготовки и оценки виснет примерно на 80%.  Скрин представлен справа.

 

 

 

Создал новый проект в Unity. Для сборки нужно удалить родной компонент камеры, добавить туда камеру, поставляемую Wikitude и компонент ObjectTracker. В компоненте WikitudeCamera нужно вписать ключ лицензии — в нашем случае это бесплатная лицензия, ее можно получить на сайте Wikitude при регистрации нового проекта.

В компоненте WikitudeCamera нужно выбрать, какой именно таргет предстоит распознать. Для этого нужно скачать .wto файл с targetmanager.wikitude.com, положить его по пути ”{project folder}\Assets\StreamingAssets\Wikitude” и в поле Target Collection компонента WikitudeCamera выбрать .wto файл, полученный с таргетменеджера.

Созданный таргет распознался.

UPD: починили выгрузку спустя 3 дня. Попытался улучшить результат распознавания объекта, приложил новое видео. Успешного результата добиться не удалось. Об этом свидетельствует восклицательный знак вместо рейтинга упешности распознания:

Видео, из которого я пытался получить таргет. Остановился на единственной удачной попытке. Объект распознается только с лицевой стороны (где отверстие), потому что “ключевые точки” присутствуют только с лицевой стороны. Можно убедиться в этом, если перейти в окно Augment (ПКМ по таргету в таргетменеджере — Augment)

Для отображения дополненной реальности я выбрал первый попавшийся готовый ассет, им оказался динозавр 🙂

Опыты при разных условиях освещения

  • Хорошее освещение: объект распознается без проблем (возникают проблемы под углами, однако это связано с плохим рейтингом распознавания)

  • Среднее освещение: источники света сверху слева и справа относительно объекта: объект распознается, но с меньшего расстояния. Теряется раньше, чем при хорошем освещении. Разницы в точности размещения 3д модели не заметил.

  • Недостаточное освещение: источник света над объектом.

Объект распознался, однако с небольшого расстояния, связь с объектом теряется как при среднем освещении, или чуть раньше.

 

  • Недостаточное освещение: один источник света справа/слева от объекта:

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

Важные замечания:

  • На Wikitude не получается зарегистрироваться с рабочей почтой. Получилось с личной. Стоит это учесть, если придется в дальнейшем работать с использованием Wikitude.
  • При создании таргета нужно указать угол обзора камеры (Horizontal field of view — дальше FOV), на которую таргет был заснят. В моем случае — Xiaomi Redmi 4 Prime, FOV = 80 (Если не указан в описании телефона, стоит проверить, какой именно модуль камеры установлен аппарат, и гуглить FOV на других аппаратах с этим модулем.)
  • Триальный ключ сопровождается водяным знаком, который занимает весь экран. В отличии от Vuforia — совсем не юзабельно. Скриншот собранного приложения:
  • В пятницу, 1 декабря лимит на видео с распознаваемым объектом был равен 50 мб.

UPD: Wikitude подняли лимит до 100 мб.

 

EasyAR SDK

 

Малоизвестный sdk дополненной реальности от китайских разработчиков

 

Особенности

 

В отличии от других инструментов, EasyAR не имеет менеджера таргетов, распознает объекты исходя из 3д-модели, которая должна лежать внутри проекта, и генерирует таргеты в рантайме. Используя EasyAR нужно писать больше кода, и немного иначе формировать проект в Unity. Всем поведением управляет разработчик — он должен определить собственное поведение для события распознания/потери объекта.

 

Ссылка на документацию

 

Для этого инструмента нет внятных туториалов, в отличии от Vuforia и Wikitude. Для того, чтобы разобраться в том, как работает SDK нужно штудировать документацию по инструменту, которая достаточно жидкая и не предоставляет примеров использования

Нужна модель с расширением .obj, а его текстура не должна быть однородной.

Спецификация 3d-модели

Стоимость

Цена: 500 долларов за лицензию. Предоставляется бесплатный Trial, где возможно использовать платные функции 100 раз в день.

Ход эксперимента

Я скачал Sample отсюда, и поменял 3д модель hexagon в компоненте ObjectTarget на свою. Важно: 3д-модель для распознавания необходимо класть в директорию StreamingAssets, в Assets лежит экземпляр модели, который будет отображаться в качестве дополненной реальности! На сайте EasyAR создал новый проект, задав имя пакета из сэмпла, получил для него Pro Trail ключ, и этот ключ вставил в компонент EasyAR_ObjectTracker-1 в соответствующее поле Key. В результате — я получил приложение, которое накладывает на объект его 3д — модель (такого базовое поведение компонента ObjectTarget)

 

Опыт использования:

Видео

К сожалению, EasyAR плохо справился с распознаванием даже в условиях хорошей освещенности, потому смысла проводить дальнейшее исследование возможностей этой библиотеки нет. По крайней мере, с выбранным объектом для распознавания — это всё же мог быть частный случай, ведь нижняя картонная коробка однотонная, что не соответствует спецификации, представленной на сайте.

Vuforia SDK

 

Пожалуй, самый известнный SDK реализации дополненной реальности. Имеет большую базу туториалов, quick-start гайдов, внятная документация и ролики на YouTube. В арсенале имеет все возможные инструменты распознавания. Реализован Extended Tracking (захват продолжается даже после ухода объекта из кадра, что открывает возможности для реализации приложений с дополненной реальностью вокруг пользователя, например, за спиной) и Smart Terrain (распознавание плоской поверхности, сам не пробовал

Стоимость

Цена достаточно гуманна за предоставляемый функционал: 99$/месяц или 499$ one-time для одного приложения, также доступны индивидуальные предложения

Особенности

На маленьких объектах с использованием Vuforia Object Scanner работает замечательно, даже в условиях недостаточной освещенности. Таргеты для больших объектов нужно создавать из 3д-модели. Доступ к генератору ограничен Early Access Program. Подал заявку на доступ к Model Target Generator.

Есть Workaround для распознавания крупных объектов, но пригодно-ли такое использование для коммерческих приложений — очень спорно, выглядит костыльно.

Vuforia имеет инструмент для создания таргета прямо на устройстве, используя это изображение и приложение Vuforia Object Scanner для Android. Нужно распечатать изображение, расположить небольшой объект согласно размеченной области и просканировать с помощью приложения. Workaround заключается в том, что можно воссоздать эту картинку и модель в 3д-редакторе, и просканировать эту модель оттуда.

Ход эксперимента

Я использовал данный метод для генерации таргета.

3д-модель объекта создана в 3DS Max 2016.

Смог создать таргет, загрузил его в базу, выкачал базу из targetmanager’а. Создал новый проект, куда импортировал Vuforia SDK и базу таргетов, содержащую один таргет (что удобно — база пользователю поставляется как .unitypackage, и для того, чтобы поместить данные в проект нужно просто открыть этот файл и в открывшемся окне нажать Import). Vuforia позволяет за 5 минут собрать простое AR приложение — достаточно добавить компоненты ARCamera и ObjectTarget в сцену, в ARCamera открыть окно конфигуратора, ввести ключ, полученный в License Manager, в поле Datasets выбрать требуемую базу таргетов (их может быть несколько) и выставить checked в появившемся чекбоксе Activate. После чего, в компоненте ObjectTarget в поле Database выбрать необходимую базу таргетов, также выбрать конкретный таргет, и по желанию можно включить Extended Tracking или Smart Terrain. Extended Tracking позволяет не терять захват таргета даже если объект пропал из кадра. Со Smart Terrain не разбирался.

Опыты при разных условиях освещения

  • Хорошее освещение:

таргет без проблем распознан, по наблюдениям Vuforia дольше других держит распознанный объект.

  • Среднее освещение: таргет распознается с чуть меньшего расстояния, если источник света расположен за объектом.

  • Недостаточное освещение:

При недостаточном освещении, в данном случае — естественный свет из окна, Vuforia справляется с задачей если поставить объект рядом с окном. если отдалить его от окна — объект не распознается, впрочем как и с любым другим SDK.

Также стоит отметить, что Vuforia так же распознала объект сзади:

Vuforia object target generator

Недавно был представлен инструмент для простого создания сложных трехмерных маркеров, отталкиваясь от ее трехмерной модели. Бесплатная лицензия позволяет воспользоваться инструментом 10 раз, после чего необходимо приобрести лицензию. Как использовать? В отличии от прошлой реализации, где был задействован Vuforia Object Scanner, Object Target Generator не требует загрузки чего-либо в таргетменеджер, а в результате своей работы генерирует .unitypackage, готовый к импорту и использованию.

Однако, объект, используемый в исследованиях, изначально не удовлетворяет требованиям, которые выдвигает генератор для создания маркера: объект слишком примитивен и не имеет яркой текстуры. Потому, протестировать этот инструмент не представилось возможным.

Выводы

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

Vuforia проста в освоении и дешевле аналогов, при этом имеет Extended Tracking, однако доступ к генерации таргетов из 3д модели еще не открыт, спасает workaround. По ощущениям лучше всего справилась с задачей — единственное SDK, которое распознало объект сзади. Так же имеется инструмент для генерации таргета из 3д-модели, что в теории позволяет не ограничиваться малыми размерами объектов.

Wikitude справляется с данной задачей, однако результат неудовлетворительный: плохое качество распознания для крупных объектов, а соответственно и результат оставляет желать лучшего.

EasyAR — единственный инструмент, таргет которого генерируется в рантайме, да еще и из 3д-модели. Однако, положительного результата добиться не удалось — возможно, повлияли блики на объекте, или сказалась скудная детализация нижней части объекта. Ситуация отличается, если распознавать поданную 3д-модель, захватывая ее с монитора в 3д-редакторе или среде разработки Unity — отрисовка дополненной реальности в данном случае происходит гораздо увереннее. В итоге — библиотека теоретически способна справляться с поставленной задачей, но только при хорошем освещении, к тому же желательно, чтобы модель была сложной, имела большое количество граней, имела не однотонную текстуру, а так же поверхность объекта не была глянцевой. У других библиотек подобной проблемы нет.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *