Как создать ar приложение на андроид unity
Благодаря совместным стараниям многих крутых компаний технология дополненной реальности плотно вошла в нашу жизнь и сегодня простым AR приложением никого не удивить.
Несмотря на столь большое распространение для многих данная тема до сих пор является очень страшной и непонятной.
AR программа
Итак, наша программа будет достаточно простой. Мы будем наводить смартфон на некую ровную поверхность и далее на ней будет появляться объект. Данным объектом можно будет управлять за счет пользовательского интерфейса в приложении.
Разработка приложения
Первое что нужно сделать, так это скачать Unity. Заходим на официальный сайт , нажимаем на «Get Started» и скачиваем Unity версии «Personal». Как ни странно, вместо Unity у нас скачается Unity Hub, через который вы как раз и можете установить саму программу Unity. Здесь главное не забудьте указать поддержку Android и iOS устройств, чтобы будущее приложение можно было скомпилировать под эти платформы.
Далее через тот же Unity Hub создаем новый проект, при чём название, расположение, а также формат проекта - это всё нам не особо важно.
Технология Vuforia
После создания проекта нам необходимо подключить в него технологию Vuforia.
Не знаете что такое Vuforia? Vuforia - это отдельная библиотека, которая обеспечивает полную работу с дополненной реальностью. Чтобы её установить необходимо в Unity зайти в Window -> Package Manager. В нём прописываем Vuforia и нажимаем на Install.
Создание программы
Следующий этап, удаляем основную камеру на сцене и вместо неё добавляем AR камеру. Такая камера идет от библиотеки Vuforia и она позволяет обрабатывать различные поверхности для расположения на них объектов.
Чтобы всё работало нужно в AR камере нажать на «Open Vuforia configuration» и далее в поле «Add licence key» нужно установить ключ.
Его можно получить на официальном сайте Vuforia . На сайте сперва регистрируемся. Далее в кабинете пользователя нажимаем на «Get Development Key», придумываем название для программы, можно любое, ставим галочку внизу и нажимаем «Confirm». Создается новое приложение, в котором как раз и есть нужный ключ. Копируем его и вставляем в Unity.
Теперь добавим на сцену объекты «Plane Finder», а также «Ground Plane Stage». За счёт «Plane Finder» Vuforia сможет определить ровную поверхность, а за счёт «Ground Plane Stage» она сможет расположить на этой поверхности различные объекты.
Также не забудьте перенести ссылку на объект «Ground Plane Stage» в объект «Plane Finder». Это нужно чтобы «Plane Finder» понимал с чем требуется работать.
Расположение объектов
Зайдите в Asset Store , это официальный магазин Unity, и в нём найдите какую-либо модель, которую мы будем располагать в AR приложении. Скачиваем модель и импортируем в Unity.
Далее выбираем объект и перетаскиваем внутрь «Ground Plane Stage». Уменьшаем размеры если необходимо, а также отодвигаем камеру, чтобы объекты не находились в одном месте.
Компиляция проекта
Теперь всё готово и остается лишь скомпилировать проект и запустить на устройстве. Для этого заходим в Build Settings, добавляем открытую сцену, а также выполняем перекомпиляцию проекта под iOS или Андроид в зависимости от того какое устройство у вас есть под рукой.
Далее заходим в Player Settings и прописываем некоторые основные настройки. К примеру: название игры, идентификатор, иконки для приложения, если хотите и по сути на этом всё. Кстати, если компилируете под Андроид, то там ещё не забудьте подключить SDK к Unity, а также не забудьте создать ключ приложения всё в тех же Player Settings.
Перед компиляцией обязательно установите XR плагин. Именно он контролирует большинство вещей в вашем приложении с дополненной реальностью. Без него ничего работать не будет.
После компиляции вы можете загрузить приложение на ваш смартфон и протестировать его работу.
Видеоурок по AR
Для более детального ознакомления предлагаем просмотреть небольшой урок на эту тему:
Дополнительный курс
Больше интересных новостей
Если вы хоть раз задумывались о приложении с дополненной реальностью на мобильных устройствах, что вызвало ваш неподдельный интерес , чтобы начать разрабатывать свое собственное Android-приложение на основе AR, то данная статься отличное место, для приобретения основных навыков начинающих.
После того, как мы установим все необходимое, мы перейдем к созданию простого проекта, который позволит нам изучить поверхности и размещать пользовательские объекты на этих поверхностях.
Убедитесь, что у вас есть совместимый телефон
Прежде чем вы зайдете слишком далеко, помните, что вам понадобится совместимое устройство для тестирования вашего приложения. К счастью, когда ARCore покинул предварительный просмотр и перешел на выпускную версию, Google выпустил огромное количество устройств, совместимых с ARCore.
Загрузите все программное обеспечение
Теперь, перейдем к программному обеспечению, которое нам понадобится. Вот что вам понадобится:
- Загрузите Unity 2017.3 (для работы с первой официальной версией ARCore требуется "2017.3" или выше);
- Загрузите и установите Android Studio 3.0 или выше, так как это самый простой способ получить установленный Android SDK. И убедитесь, что версия SDK, которую вы выбрали в процессе установки, является Android SDK версии 7.0 (уровень API 24) или выше;
- Скачайте "arcore-unity-sdk-v1.0.0.unitypackage.";
- Загрузите пример ресурсов arcore-intro.unitypackage;
- Наконец, загрузите бесплатную модель рекламного щита от TurboSquid. Когда вам будет предложена эта опция, загрузите версию Collada с расширением "DAE"
Установка Unity
При установке Unity, нам нужно убедиться, что у нас есть параметры, которые будут использоваться для разработки ARCore, установленной во время этого процесса.
Перейдите в то место, где вы загрузили все файлы для этого проекта, и дважды щелкните файл "UnityDownloadAssistant-2017.3".
Двигайтесь вперед в процессе установки, пока не дойдете до окна выбора компонентов. Теперь убедитесь, что выбрана "Unity 2017.3.1f1" (или какая бы версия 2017.3 вы ни устанавливали), а также "поддержка сборки Android."
- Если вы являетесь частым пользователем Unity, с несколькими установленными различными версиями, вы можете использовать папку, отличающаяся от папки по умолчанию. Кроме того, вы можете использовать имя, отличное от просто "Unity". В любом случае, как только решение будет принято и имя папки будет добавлено в поле папка установки Unity, нажмите кнопку "Далее", и начнется процесс установки.
- Если вы впервые используете Unity, запустите приложение и создайте новую учетную запись для входа в систему.
Создайте свой проект ARCore
Теперь мы создадим новый проект и настроим специфику ARCore, которая нам нужна, чтобы наш проект был запущен.
- Запустите приложение Unity и нажмите на кнопку "Создать". Назовите новый проект ARCore, а затем нажмите кнопку "Создать проект".
- Как только откроется главное окно Unity, нажмите Ctrl + Shift + B или нажмите кнопку "Файл", затем "Параметры сборки". Оттуда, нажмите на опцию "Android" под платформой , а затем нажмите на кнопку "Switch Platform". Когда логотип Unity появляется рядом с опцией Android, вы поймете, что он выбран. Нажмите на кнопку "настройки проигрывателя", чтобы продолжить.
- На вкладке "основные", под заголовком "другие настройки", нажмите на флажок "многопоточный рендеринг", чтобы убедиться, что он не выбран.
- В поле "имя пакета" введите название, которое должно быть уникальным для вашего устройства, так как это может вызвать проблемы, если он имеет то же имя пакета, что и другое приложение.
- Теперь нам нужно установить самую низкую совместимую версию ОС Android, которая совместима с ARCore. Найдите опцию «минимальный уровень API», нажмите на его раскрывающееся меню и выберите «Android 7.0 'Nougat'»
- Нажмите на кнопку "Настройки XR" внизу окна инспектора. Установите флажок "поддерживается ARCore", чтобы убедиться, что он выбран, а затем закройте эти настройки.
Добавление ARCore SDK & Assets
Наконец, для завершения, нам нужно импортировать наши элементы ARKit в нашу сцену. Дважды нажмите на кнопку «arcore-unity-sdk-v1.0.0.» файл "unitypackage".
Это вызовет окно импорт пакета Unity. Просто нажмите на кнопку "Импорт". Нам не нужно ничего отменять в этом списке, просто оставьте его как есть.
Создайте новую сцену
Нам нужно создать свою сцену, но нам также нужно место, чтобы сохранить ее. Так что давайте создадим папку для нашей сцены. В окне проекта щелкните правой кнопкой мыши на "Активы", затем выберите "Создать", а затем "Папка". Назовите новую папку Scenes.
Далее, нажмите на "File" в строке меню, а затем "Save Scene as". Перейдите в свою недавно созданную папку "сцены". Введите NRARCore (или любое другое имя, которое поможет вам запомнить сцену) в поле Имя файла и нажмите кнопку "Сохранить".
Перенесите ARCore Prefabs в сцену
Префабы-это тип активов в Unity, который позволяет нам хранить коллекцию GameObjects и их связанных компонентов таким образом, что их легко создать в движке в режиме реального времени.
Все настройки, сохраненные при создании сборного модуля, сохраняются вместе с самими компонентами.
В Unity, в окне иерархии, выберите как "основная камера", так и "направленный свет". Щелкните правой кнопкой мыши на них и выберите "Удалить", когда появится меню.
В окне ПРОЕКТА Перейдите в каталог "Prefabs" в разделе «GoogleARCore». "Выберите префабы" устройство «ARCore» и "экологический свет", затем перетащите пару префов из окна проекта в окно иерархии.
Затем нажмите на кнопку Создать в окне иерархии, выберите "пользовательский интерфейс", а затем "система событий."
Чтобы начать эту часть урока, нам необходимо место, чтобы поместить наши файлы сценариев, поэтому мы создадим папку сценариев. В окне проекта, выбрав папку "активы", щелкните правой кнопкой мыши в открытом пространстве и выберите "Создать", а затем "Папка".
Назовите эту папку при появлении соответствующего запроса.
Назовите файл "AppController" и дважды щелкните его, чтобы открыть в нашей интегрированной среде разработки ( IDE ) по выбору.
Код контроллера.
Здесь, в нашем блоке using, в верхней части класса (строка 2), нам нужно добавить строку: использование GoogleARCore;
Это заявление дает нам возможность получить доступ к элементам Google ARCore SDK.
В строке 4 у нас есть объявление класса. Хотя здесь ничего не нужно менять, стоит отметить, что большинство классов Unity будут производными от класса MonoBehaviour. Этот базовый класс - это то, что добавляет большую часть специфической функциональности Unity к любым объектам, которые мы создаем.
Целью метода QuitOnConnectionErrors () является запрос и получение разрешения от устройства и пользователя на доступ к камере. Если по какой-то причине разрешение не может быть дано, приложение будет закрываться.
В методе Update () нам нужно добавить строки 14-20 на изображении ниже.
Кадр - это совокупность информации о текущем состоянии устройства, включая положение и поворот камеры по отношению к окружающему миру, информацию об оценке освещенности, состояние отслеживания и объекты в сцене.
Здесь мы проверяем, действительно ли отслеживается состояние текущего кадра. Если это не так, мы устанавливаем тайм-аут экрана до 15 секунд. Это дает отслеживания некоторое время для восстановления перед завершением работы.
Если TrackingState отслеживает, то sleepTimeout устанавливается в NeverSleep.
Настройка устройства для тестирования
Для того, чтобы получить наш файл пакета Android (или APK-файл) на телефоне и проверить его, нам нужно включить "параметры разработчика". Это меню скрыто по умолчанию, но его можно легко разблокировать, нажав номер сборки в разделе "О телефоне" приложения "Настройки" семь раз подряд. Возможно, вам придется ввести свой PIN-код, для завершения.
В параметрах разработчика убедитесь, что включен параметр "Отладка USB".
Вернитесь на главную страницу меню настроек, выберите пункт Блокировка экрана и безопасность или что-то подобное. Оказавшись внутри этого экрана, выберите "неизвестные источники" и включите эту опцию. Если вы не видите эту опцию, это, вероятно, потому, что вы используете Android Oreo или Android P. В этом случае он попросит вас включить "Неизвестные источники" при попытке установить APK.
После всех необходимых настроек вы можете перейти к тестированию и исправлению недочетов в вашей AR игре на Android.
Дополненная реальность (Augmented reality, AR) внезапно стала очень популярным термином. Благодаря Vuforia разработчики с лёгкостью могут дополнять физический мир цифровым контентом.
Хотя выпуск ARKit и ARCore позволил повысить известность дополненной реальности, уже существовали другие платформы и SDK. Одним из них был Vuforia; а недавно Unity заключила с Vuforia партнёрское соглашение и интегрировала эту AR-платформу в игровой движок Unity.
В этом туториале я создам AR-игру с помощью Vuforia SDK, интегрированного с движком Unity. В процессе работы я расскажу о следующих ключевых компонентах:
- Настройка передачи данных с камеры дополненной реальности
- Отслеживание изображений — что это и как работает
- Прикрепление цифрового контента к физическому объекту
- Создание настраиваемых взаимодействий, запускаемых в зависимости от того, что видит камера
Примечание: в этом туториале по Vuforia подразумевается, что вы уже знаете основы разработки в Unity. Если вы новичок в Unity, то изучите отличный туториал Getting Started In Unity.
Разработка AR-игр в Unity
На рынке есть множество AR-устройств, но основной целью AR-приложений является мобильное пространство таких платформ, как iOS и Android. Именно здесь удобно сочетание Unity и Vuforia — в кросс-платформенной разработке. Ещё один плюс заключается в том, что приложение можно тестировать в редакторе. Для этого всего лишь нужна веб-камера!
Перед началом работы скачайте последнюю версию Unity и установите компонент Vuforia Augmented Reality Support. Если вы пользуетесь Unity Hub, то можете добавить этот компонент в уже установленную версию Unity.
Приступаем к работе
Теперь, когда у вас есть Unity, Vuforia и веб-камера, необходимо скачать пример проекта (отсюда).
После скачивания извлеките файлы и откройте в Unity проект How to Make an AR Game Using Vuforia Starter. Когда проект загрузится, откройте сцену Starter из папки Scenes и посмотрите на окно Hierarchy:
Просмотрев состав проекта, нажмите на кнопку Play в редакторе, чтобы заполнить заказ в нашей игре про пиццу.
Отлично, мы можем поиграть с пиццей, но наша настоящая задача заключается в том, чтобы превратить это в AR-игру.
Знакомимся с шеф-поваром Vuforia
Чтобы сделать это, нам нужно заставить виртуальную пиццу отображаться на изображении-трекере, которое мы держим в реальном мире. После добавления в заказ начинки вы сможете физически «подать» пиццу, вынеся её за пределы видимости камеры…
Но всему своё время. Для начала нужно заменить Main Camera на AR Camera. Удалите из сцены Main Camera, а затем нажмите правой клавишей мыши в Hierarchy.
Затем добавьте Vuforia -> AR Camera. При этом появится это всплывающее окно:
Нажмите Import и дождитесь, пока Vuforia Package импортируется в проект, при этом добавится довольно много файлов.
Можно не обращать внимания на новые файлы в папках Editor и Streaming Assets. Это просто шаблоны; нужные нам файлы включены в проект.
В папке Vuforia хранятся все префабы и скрипты, используемые платформой Vuforia, которую мы будем применять.
Стоит также упомянуть о файле VuforiaConfiguration внутри папки Resources. Этот файл добавлен, потому что для разработки приложения Vuforia необходима лицензия. Однако при желании можно получить бесплатную лицензию разработчика на Vuforia Developer Portal.
Примечание: если в вашем проекте нет лицензионного ключа приложения (App License Key), то его можно найти в файле README. Скопируйте строку в поле инспектора файла VuforiaConfiguration.
Теперь, когда у нас в сцене есть AR Camera, осталось сделать только одно — включить дополненную реальность!
Перейдите в Edit -> Project Settings -> Player. Прокрутите вниз, к параметрам XR Settings, и убедитесь, что поставлен флажок Vuforia Augmented Reality Supported.
Нажмите в редакторе Play и скажите «привет» самому себе!
Примечание: если вы нажали на play и появился экран «Vuforia Initialization Failed», то попробуйте перезапустить Unity. Это случайный баг, который появляется только на некоторых системах.
Введение в распознавание образов
Любоваться на себя — это, конечно, здорово, но разве мы не собирались делать игру про пиццу?
По умолчанию Vuforia работает с распознаванием образов (Image Recognition). Распознавание образов, также называемое распознаванием трекеров (Tracker Recognition) или трекингом изображений (Image Tracking) — это процесс, при котором камера распознаёт заранее заданное изображение и знает, что с ним делать, например, выполнять поверх него рендеринг какого-то контента. Лучше всего это работает тогда, когда изображение трекинга каким-то образом соответствует контенту, например, планы этажей для рендеринга зданий хорошо работают поверх изображения со зданием.
Как это работает: очень важно хорошо подобрать качественное изображение для трекинга. При использовании Vuforia можно загрузить выбранное изображение на портал разработчика, чтобы проверить качество его отслеживания, и это нужно делать до того, как начинать разработку. Портал разработчика присваивает изображению рейтинг, но, что более важно, показывает его «характерные точки». Чтобы трекер был хорошим, эти характерные точки (feature points) должны быть густо распределены по изображению и в них не должно присутствовать повторяющихся паттернов. Во время выполнения камера ищет эти характерные точки, чтобы вычислить своё расположение относительно изображения.
Для этого туториала изображение и база данных трекинга уже настроены. Изображение пиццы находится в папке Materials, которую вы скачали ранее. В идеале стоит его распечатать. Или же его можно открыть на каком-нибудь цифровом устройстве, а затем «показать» его камере. Вот как выглядит изображение в Vuforia Tracker Database:
Как видите, характерные точки хорошо распределены. К тому же это пицца, что удобно!
Добавление в сцену Image Targets
Настало время творить волшебство! Мы сделаем так, чтобы поверх нашей пиццы появлялась виртуальная пицца. Снова воспользуемся меню Create в Hierarchy и выберем Vuforia -> Image.
Теперь у нас в сцене есть Image Target GameObject. Посмотрите на этот target в инспекторе, и вы увидите несколько компонентов. Самыми важными являются Image Target Behavior и Default Trackable Event Handler. Второй мы подробнее рассмотрим позже, а пока убедимся, что опции раскрывающегося списка Image Target Behavior настроены следующим образом:
- Для Database выбрано значение RW_ItsaPizza
- Для Image Target выбрано значение PizzaClipArt
Помните добавленные ранее к проекту файлы, которые я попросил игнорировать? Вы их нашли! Vuforia добавляет несколько примеров баз данных Image Target, чтобы мы могли начать разработку и использовать их для примеров, например того, которым мы пользуемся, уже добавленного в материалы.
Примечание: трекер Pizza — единственный image target в вашей базе данных; однако в одной базе данных могут быть сотни изображений. Кроме того, в одном приложении может быть несколько баз данных.
Теперь, когда мы настроили в сцене AR Camera и Image Tracker, у нас есть всё необходимое для работы дополненной реальности! Нажмите в Editor на кнопку Play и поставьте распечатанное изображение напротив камеры.
У нас появилась пицца!
Прикрепление Game Objects к Trackers в качестве дочерних объектов
Пицца немного маленькая, но она крепко приклеилась к изображению-трекеру. Можно также заметить, что если убрать отслеживаемое изображение, то пицца останется висеть в воздухе.
Дело в том, что пока веб-камера может видеть изображение-трекер, Vuforia способен обновлять позицию AR Camera в сцене. Если хотите увидеть это в действии, настройте Unity Editor таким образом, чтобы были одновременно видны окна Game и Scene, затем выберите AR Camera и нажмите Play.
Как же заставить пиццу вести себя правильно, когда работает камера? Выберите ImageTarget в Hierarchy. Вы увидите, что его масштаб по каждой оси имеет значение 10. Этим управляет компонент Image Target Behaviour. В разделе advanced можно увидеть, что параметр Width имеет значение 10. Он был задан при загрузке изображения на сайт Vuforia Developer.
Подсказка: вы не понимаете, почему Image Target в этом туториале была задана ширина 10? Когда размер не является существенным фактором для приложения, то установка значения 10 обеспечивает камере повышенную вероятность трекинга, при этом сохраняя хорошую позицию для контента между ближней и дальней плоскостями AR Camera. Однако иногда нужно, чтобы дополненная реальность имела определённый масштаб. В таком случае нужно задать размер изображения-трекера таким образом, чтобы он соответствовал физическим измерениям при загрузке на портал разработчика.
Теперь выберите GameObject Pizza в Hierarchy. Перетащите его на ImageTarget, чтобы сделать его дочерним элементом. Масштаб изменится на (X: 0.1, Y: 0.1, Z: 0.1) . Верните его к значениям (X: 1, Y: 1, Z: 1) , а также сместите Position вверх до 0.01 по оси Y. Благодаря этому Pizza будет соответствовать ImageTarget.
Снова нажмите Play и вы увидите, что пицца находится поверх изображения, а также исчезает, когда изображение пропадает из кадра.
Изучение DefaultTrackableEventHandler
Это поведение берётся из DefaultTrackableEventHandler объекта ImageTarget. Откройте скрипт и просмотрите его.
Скрипт хорошо откомментирован, но стоит обратить внимание на некоторые аспекты:
- Функция Start регистрирует этот скрипт как Event Handler (обработчик событий) для TrackableBehaviour (в данном случае это ImageTargetBehaviour).
- OnDestroy удаляет эту ссылку.
- OnTrackableStateChanged — самая важная функция. Её код сообщает, что должно происходит при изменении состояния трекинга.
- OnTrackingFound и OnTrackingLost вызываются из OnTrackableStateChanged. В DefaultTrackableEventHandler они переключают компоненты Renderer, Collider и Canvas любого дочернего объекта.
Переварите пока эту информацию.
Создание собственных действий трекинга
Настало время сделать что-нибудь с этой информацией!
Удалите из ImageTarget компонент DefaultTrackableEventHandler. Затем добавьте PizzaTrackableEventHandler, который можно найти в папке Scripts. Затем откройте PizzaTrackableEventHandler. Это клон DefaultTrackableEventHandler, но код в OnTrackingFound и в OnTrackingLost удалён — эту задачу предстоит решить вам!
Включение и отключение компонентов Renderer пригождается почти в каждом AR-приложении, поэтому вернём этот код. Если вы застрянете, то можно скопировать его из DefaultTrackableEventHandler или найти под спойлером ниже.
Мы готовы превратить этот проект в игру в дополненной реальности!
Посмотрите на UI и найдите кнопку, которую нужно нажать игроку, чтобы завершить свою пиццу.
В начале PizzaTrackableEventHandler добавим UnityEvent для вызова, когда Image теряет трекинг.
А теперь вызовем событие в методе OnTrackingLost:
Сохраните сцену, нажмите Play и подайте пиццу!
Куда двигаться дальше
Поздравляю, вы завершили туториал!
Пример проекта можно скачать отсюда.
Дополнительную информацию о разработке с помощью Vuforia в Unity можно изучить в Vuforia Developer Library или в руководстве Unity.
Не забудьте настроить для себя аккаунт разработчика на портале Vuforia. Можете также попробовать загрузить туда несколько разных трекеров, чтобы проверить, как они отслеживаются.
Для более подробного изучения прочитайте о виртуальных кнопках. На веб-сате Vuforia есть примеры материалов. Проверьте, сможете ли вы создать эти виртуальные кнопки для замены UI в игре про пиццу.
Придумывайте новые идеи для игр в дополненной реальности. Может быть, это карточная боевая игра, в которой существа выпрыгивают прямо из карт? А как насчёт tower defense, где вы управляете боевым вертолётом с помощью телефона?
Виртуальная и дополненная реальность в последнее время привлекают большое внимание. Появилось множество действительно крутых головных устройств (HMD), таких как Oculus , Hololens , HTC Vive , FOVE и Magic Leap . Самым простым и дешевым из всех этих HMD является Google Cardboard , и у него уже более миллиона пользователей по всему миру.
Патрик в своем недавнем посте рассказал о создании приложений Google Cardboard VR в Unity . В следующих двух уроках мы будем разрабатывать базовое приложение Android с дополненной реальностью для Google Cardboard с использованием Unity3D. Для создания этого приложения мы будем использовать SDK дополненной реальности под названием «Vuforia».
- Vuforia 5
- Unity 3D 5.x
- Картонный SDK версии 0.5.x (необходим для следующего урока)
- Инструменты Android Studio и SDK (их необходимо установить и настроить для работы сборок Unity. Дополнительную информацию об этом можно найти в разделе «Интеграция с Unity».)
Краткий обзор
Существует несколько подходов к созданию приложений дополненной реальности. Мы будем использовать маркерный подход для создания нашего приложения AR для мобильных устройств. В следующем уроке мы добавим поддержку картона.
Этот учебник будет состоять из трех частей:
- Начало работы с Vuforia
- Интеграция с Unity
- Демо (Весёлая часть)
Начало работы с Vuforia
Для начала нам нужно перейти на портал разработчиков Vuforia и создать учетную запись.
После входа в систему мы можем перейти на страницу «Разработка». Чтобы использовать Vuforia с Unity, нам нужно сделать две вещи:
Создайте лицензионный ключ для нашего приложения
После того, как мы заполним данные, мы можем выбрать «Далее», а затем «Подтвердить». Это перенаправит нас на страницу «Диспетчер лицензий», где появится название приложения.
Как только мы выберем «ARDemo», мы получим лицензионный ключ. Этот ключ будет использован позже в Unity.
Создайте базу данных и цель изображения
Следующим шагом является установка изображения в качестве цели. Мы переходим в «Разработка >> Target Manager», выбираем «Добавить базу данных» и заполняем детали:
Далее нам нужно будет добавить изображения во вновь созданную базу данных. Итак, мы выбираем базу данных и нажимаем «Добавить цель». Vuforia поддерживает различные виды целей, такие как одиночное изображение, цилиндрическое, кубовидное, трехмерное изображение и т. Д. В этом уроке мы будем использовать одиночное изображение цели и изображение stone_hires . Любое произвольное значение может быть выбрано для ширины, скажем, 50.
После короткого времени загрузки, цель будет добавлена, и у нас будет опция «Загрузить набор данных».
Здесь важно отметить «Рейтинг». Хороший рейтинг означает, что его можно использовать для отслеживания, тогда как плохой рейтинг означает, что на изображении недостаточно характерных точек (интересные точки на изображении, такие как края, углы и т. Д., Которые используются для отслеживания при обработке изображения).
Мы также можем взглянуть на характерные точки нашего изображения, выбрав «stone_hires >> Show features»
Давайте загрузим набор данных, выбрав «Загрузить набор данных >> Редактор Unity».
Это создаст пакет Unity, содержащий отслеживаемую информацию об этой отслеживаемой базе данных.
Интеграция с Unity
Начнем с создания нового проекта Unity3D под названием «ARDemo».
Далее нам нужно будет импортировать пакеты Vuforia Unity. Это можно сделать, перейдя в «Активы >> Пакет импорта >> Пользовательский пакет». У нас будет два пакета, один из которых соответствует нашему набору данных ( Image_Targets.unitypackage vuforia-unity-5-0-5.unitypackage здесь .
Пришло время добавить несколько 3D моделей в наш проект. Давайте перейдем к «Окно >> Магазин активов». Здесь мы можем бесплатно найти модель самурая под названием «Красный самурай». Для загрузки и импорта этой модели нам потребуется войти в систему с нашей учетной записью Unity.
После импорта наша папка Assets будет выглядеть так:
В этот момент, если мы нажмем кнопку «Воспроизвести» в редакторе Unity, мы сможем увидеть наш веб-канал в представлении игры.
Далее, давайте добавим ImageTarget к нашей сцене. Его можно найти в разделе «Активы >> Vuforia >> Prefabs». Давайте добавим это к нашей сцене в X = 0, Y = -50, Z = 0. Теперь на панели «Инспектор» для целевого изображения нам нужно будет внести некоторые изменения. В разделе «Поведение цели изображения (сценарий)» нам придется изменить «Набор данных» на «Image_Targets» и «Цель изображения» на «stone_hires». После этого изображение stone_hires
Далее, давайте перетащим нашего самурая на сцену. Его можно найти в разделе «Активы >> сборные >> самузай». Чтобы самураи появлялись над ImageTarget, его нужно сделать дочерним для ImageTarget (это можно сделать, просто перетащив префаб samuzai на панель «Иерархия»). Затем, всякий раз, когда ImageTarget обнаруживается камерой мобильного устройства, все дочерние объекты цели также отображаются вместе. Масштаб самузая необходимо изменить на X = 0,5, Y = 0,5, Z = 0,5.
Теперь нам нужно активировать набор данных Image_Targets. Это можно сделать, выбрав «ARCamera», и на панели «Инспектор» в разделе «Поведение загрузки набора данных (сценарий)» нам нужно выбрать «Загрузить набор данных Image_Targets», а затем «Активировать».
В этот момент, если мы выберем «Выполнить» и направим отпечаток изображения на нашу веб-камеру, мы должны увидеть самурая на нем и выполнить «Анимацию атаки», которая является его анимацией по умолчанию.
Мы почти закончили. Давайте сохраним сцену с именем «ARDemo».
- Google Android Project: Это позволит нам экспортировать текущий проект Unity в Android Studio, чтобы его можно было редактировать и использовать для добавления дополнительных элементов.
- Сборка разработки: включение этого параметра активирует функциональность Profiler, а также делает доступными параметры Autoconnect Profiler и Script Debugging
Мы будем делать простую сборку следующим образом:
Прежде чем нажать кнопку «Построить», нам нужно внести еще некоторые изменения в «Настройки игрока» на панели «Инспектор». Здесь необходимо изменить название компании; например, в «SitePoint». Затем нам нужно изменить идентификатор пакета в «Других настройках», скажем, на «com.SitePoint.ARDemo».
Теперь мы можем перейти к «Построй и беги». Другие изменения, такие как минимальный уровень API и т. Д., Могут быть сделаны в соответствии с дополнительными требованиями. Нам потребуется подключить мобильное устройство Android через USB и включить отладку по USB.
Нам также потребуется настроить среду разработки Android, прежде чем мы сможем протестировать наши игры Unity на устройстве. Это включает в себя загрузку и установку Android SDK с различными платформами Android и добавление нашего физического устройства в нашу систему (это делается немного по-разному в зависимости от того, работаем ли мы под Windows или Mac).
Поскольку это сложный процесс, основные документы задач, которые должны быть выполнены, прежде чем мы сможем запустить код на нашем устройстве Android или в эмуляторе Android, были предоставлены в документации Unity. Однако более подробное руководство можно найти в первой части урока Патрика по VR .
Окончательный результат (Демо)
Наконец, забавная и волшебная часть!
Приложение AR будет работать даже с черно-белым изображением камней, потому что характерные точки останутся (они обычно зависят от других факторов, таких как градиент и т. Д., А не от цвета).
Вывод
Множество действительно классных вещей можно сделать с помощью Unity и Vuforia. В этом уроке мы сделали простое AR-приложение с анимацией без написания сценария! В следующем уроке мы добавим поддержку картона и некоторые другие интересные функции Vuforia в наше приложение.
Если вы застряли в какой-то момент или хотите просмотреть исходный код, вы можете найти его на Github . Вам просто нужно ввести лицензионный ключ приложения Vuforia, чтобы создать приложение.
Если вы хотите скачать или протестировать приложение, вы можете найти apk здесь .
Если вы делаете что-то классное из этого урока, или у вас есть какие-либо вопросы / отзывы, не стесняйтесь оставлять примечания в комментариях ниже!
Unity provides powerful tools to make rich, deeply engaging augmented reality experiences that intelligently interact with the real world.
AR keynote segment from Unite Copenhagen 2019
Unity has custom resources to bring your immersive vision to life. Our industry-leading software development platform pairs tools purpose-built for Augmented Reality creators and a unified workflow across devices that lets you focus on pushing the boundaries of your imagination.
Having proactively embraced and integrated AR development, Unity was a vital element of our technology stack as both an expressive sandbox for rapid prototyping and a solid platform for shipping final product.
Tools to bring your creative vision to life
AR Foundation
A framework purpose-built for AR development allows you to develop your app once, then deploy it across multiple mobile and wearable AR devices. It includes core features from each platform, as well as unique Unity features that include photorealistic rendering, physics, device optimizations, and more.
Unity MARS
Unity MARS provides AR creators across industries with specialized tools and a streamlined workflow to create AR experiences that intelligently interact with the real world.
Use Unity as a library
Insert AR powered by Unity directly into your existing native mobile app. Instead of rebuilding your app to add AR functionality, you can unlock the full power of Unity’s AR offerings by embedding into what you’ve already created.
XR Interaction Toolkit
Add interactivity to your AR apps by simply dropping components into your scene – no more coding these object interactions from scratch.
Interactive AR experiences across industries
HoloMaps
Taqtile's Holomaps solution, created in Unity, brings great context and understanding to AEC stakeholders. It displays topography, infrastructure, and buildings in a holographic model, and overlays real-time data to bring contextually relevant information into the map.
INFINITI QX50 X-Ray app
Visionaries 777 worked with INFINITI to disrupt the traditional showroom experience using AR. Sales teams at dealerships around the world helped car shoppers to understand the car’s inner workings, without ever opening the hood.
PHAROS AR
Childish Gambino, known for being a global trailblazer, wanted an augmented reality (AR) app as a way to deeply engage his fans. The experience combines storytelling, music, and technology and allows fans to enter the Pharos world, which includes new songs and artwork by Childish Gambino himself.
Wayfair AR
Wayfair uses AR to help users easily visualize how a variety of Wayfair furniture designs would look in their home. Users scan their floor plan with their phone, and then select furniture designs and drag and drop them into place using their smartphone as a viewfinder.
AR Games
Unity is the preferred platform for creating immersive games, with an industry-leading developer experience, toolset, and comprehensive platform partnerships. See how studios like Rovio, Niantic, and Ludia successfully bring imaginative immersive games to life.
Learn more
Unity XR platform has a new architecture
Unity developed a new architecture that improves the support for existing and future augmented reality (AR) and virtual reality (VR) platforms. Learn about the technology under the hood, the consequent benefits, and improvements to the platform, and how it impacts your workflows in creating AR/VR experiences.
Introducing Unity MARS
Unity MARS, our new AR authoring environment, solves the most common pain points for AR creators across industries. Its specialized tools and streamlined workflow enable users to unlock the next generation of AR experiences.
XR graphics: Delivering the best AR/VR experiences
Virtual reality (VR) and augmented reality (AR) are powerful tools for storytelling, but poor execution can negatively impact consumer reactions and engagement. This video guides you through the latest Unity tech and best practices for creating stunning high-end VR and mobile AR visuals.
Product roadmap for AR Foundation
Learn about the latest developments in AR Foundation, the Unity framework purpose-built for augmented reality (AR) development that lets you build your app once and deploy across mobile and wearable AR platforms. Hear about the roadmap for AR Foundation and what's in the works.
Читайте также: