Пользователь
0,0
рейтинг
25 октября 2013 в 10:59

Разработка → Vuforia: немного магии в нашей реальности

Современный мир не перестает радовать нас достижениями технологий, кому как не хабражителям это известно. Я до сих пор отношу всякие шлемы виртуальной реальности к чему-то скорее научно-фантастическому, нежели реальному, несмотря на то, что они уже вполне существуют (достаточно поискать по хабру Oculus Rift). Помимо, если так можно выразится, “чистой” виртуальной реальности все более интересными кажутся проекты по дополнению реальности нашей (Augmented Reality). Нашумевший на Kickstarter проект castAR тому живое доказательство, да и Google Glass хоть и не совсем то, но вполне умещается в термин augmentation.

Одно только НО, Oculus Rift – на сегодня это версия для разработчиков, castAR – вообще только концепт, ну а Google Glass достался только счастливчикам и возможности его сильно ограничены. В общем об охвате широкой аудитории пока говорить не приходится. Зато смартфоны всех сортов поселились в нашей жизни уже повсеместно. Они все замечательные, имеют камеру и достаточно умны, чтобы стать тем самым окошком в реальность дополненную.

В этой статье я расскажу о Vuforia — фреймворке, который позволяет сделать с вашим телефоном нечто подобное. Пост скорее обзорный, чтобы разобраться в терминологии и понять, как все это делается.

Vuforia – это платформа для создания augmented reality приложений для телефонов и планшетов на операционных системах iOS и Android. Нужно сказать, я был приятно удивлен тем, что компания Qualcomm, помимо производства железной составляющей наших любимых гаджетов, еще и предоставляет такие средства для разработчиков.

Ядром платформы является библиотека QCAR, написанная на C++ и прячущая за свои интерфейсы практически всё от определения мишени (target) и заканчивая рендерингом картинки.

Помимо библиотеки, платформа включается в себя: iOS и Android Vuforia SDK для разработчиков; Target Manager — систему для создания и управления мишенями; а также набор web сервисов (Vuforia Web Services) в которые можно вынести хранение мишеней и еще кое-какой функционал. Платформа развивается очень динамично и новые части добавляются довольно часто.

Я уже несколько раз упомянул мишень или target, так что ничего больше не остается, как рассказать о ней подробнее.

Мишени (targets)


Чтобы что-то добавить в реальный мир, нужно в этом мире “зацепиться” за какой-либо объект. Именно для этой цели и служат мишени. Другими словами, мишень – это некий реальный объект, зная который наше приложение может расставить виртуальные объекты в нужных местах и соответствующих пропорциях.

Vuforia предоставляет богатый выбор мишеней:

  • Image targets – базовый вид мишеней, представляющий собой обычную картинку, например, обложку журнала, фотографию или афишу нового фильма. Картинка выполняет роль своего рода двумерного штрих-кода, только без черно-белых регионов. По ней мы можем определить, какая именно картинка попала в объектив камеры, а также её расположение в пространстве и масштаб. Стоит сказать, что не любая картинка подойдет для создания мишени. Хорошими мишенями являются те, в которых много контрастных деталей. Именно на этих деталях и строится опорная матрица для последующего распознания мишеней.
  • Simple 3D targets (Cube and Cuboid) – это мишени в виде прямоугольных параллелепипедов (включая куб). Например, такой мишенью может служить упаковка из-под сухих завтраков, спичечный коробок или только что купленная настольная игра. Как и любая коробка, такая мишень состоит из шести плоскостей, и чтобы создать её, нам понадобится шесть картинок для каждой из них. Если вы когда-нибудь склеивали кубик из бумаги – то быстро справитесь с задачей.
  • Cylinder targets – этот вид мишеней, несмотря на название, представляет собой усеченный конус с возможностью задавать диаметры оснований. Конечно если выбрать одинаковые диаметры, то получатся как раз цилиндр, но все же это частный случай. Для того, чтобы создать такую мишень нам понадобится не только указать диаметры оснований и высоту, но также добавить три картинки – по одной для каждого из двух оснований, и еще одну для боковой поверхности.
  • Frame markers – эта мишень в виде специально подготовленной рамки, которая уже куда более походит на штрих-код. В такую рамку можно поместить любую картинку. Данный вид мишеней отлично подходит в случае, если картинка не была достаточно детализирована и создать из нее толковую image target не получилось.
  • Text (word targets). В библиотеку Vuforia встроено еще и распознание текста, поэтому любое слово или их сочетание может являться мишенью. На данный момент поддерживается только латиница, но и это уже очень интересно. Только представьте насколько интересным может стать изучение иностранных слов.

В зависимость от количества мишеней, необходимых для вашего приложения, вы можете либо хранить их в так называемой Device Database, всегда иметь к ним доступ и распознавать их непосредственно на самом устройстве, либо переложить часть этой нагрузки на Cloud Databases – сервис из набора Vuforia Web Services, предназначенный для хранения мишеней и определения их на основании присланных с устройства данных. Оба подхода имеют свои плюсы и минусы, но определившись с целями вашего приложения выбрать будет не так сложно.

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

Стоит также отметить, что QCAR не требует попадания всей мишени в кадр. Для того, чтобы её распознать и использовать достаточно будет лишь части. Это очень важно и позволяет рассматривать всю магию вашего приложения под самыми разными углами.

Магия


Более избитой крылатой фразы чем “Дайте мне точку опоры, и я переверну Землю!” придумать сложно, но здесь она подходит как нельзя лучше. Теперь, получив возможность “зацепиться”, мы можем начинать добавлять ту самую магию, которую можно будет увидеть на экране смартфона в нашем реальном мире.

Для этого давайте разберемся какую магию мы можем себе позволить. Для этого я постарался собрать основные примеры использования augmented reality и все из них могут быть использованы с Vuforia.

  • Статические и динамические 3D модели. Мы можем добавить любой 3D объект начиная от любимого всеми чайника и заканчивая сложной анимацией. Vuforia активно поддерживает возможность интеграции с Unity, что еще сильнее развязывает нам руки. Ограничены мы только фантазией и мощностью смартфонов/планшетов.
  • Виртуальный кнопки взаимодействовать с которыми придется вполне себе предметами реальными. Например, это может быть кнопка на вашей мишени, нажатие на которую запускает виртуальную ракету земля-воздух из вашего рабочего стола рассмотреть которую можно только через экран смартфона.
  • Видео и картинки, которые позволяют заменить нашу мишень или сделать её немножечко более живой.
  • Изменение фона, помимо всего прочего, вы можете изменять и саму картинку полученную с камеры. Другими словами, мы можем не только дополнять картинку, но и оперировать с ней самой.

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

Как я уже говорил, эта статья скорее обзорная и целью её было познакомить вас с Vuforia и дать пищу для фантазии. Если тема найдет отклик в сердцах хабровичан, то в следующей статье я рассмотрю примеры, которые предоставляет Vuforia вместе с Android SDK, опишу код, который там есть, а может и смастерим что-то на скорую руку. Ну и на последок, видео которое лично мне снесло голову и заставило прыгать как маленького мальчишку, впервые увидевшего столицу.



Полезные ссылки

Andrei Bas @andbas
карма
39,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (8)

  • +1
    Знакомая вещь, если напишите свой собственный пример, то он уж точно найдёт отклик. Как можно больше AR требуют наши сердца)
    • 0
      Пример — не проблема, можно начать с чего-нибудь простенького, например 3D модели логотипа Хабра зависшей в воздухе.
      • +1
        Вот тоже только вчера читал на Хабре. habrahabr.ru/company/intel/blog/198716/
        И сморел вот это видео: www.youtube.com/watch?v=JkP_N4TV9zw#t=32

        • +1
          А я в ~2009 игрался с этой штукой

        • +1
          Ух ты! Вот так всегда — пока пишу статью нет времени, чтобы читать хабр и что-то очень похожее выходит. Нужно будет обязательно глянуть Metaio SDK, но мне кажется после беглого просмотра статьи я уже могу представить, где лучше использовать их, а где Vuforia.
  • +1
    Спасибо, ушел играться.
    Кстати, было бы неплохо добавить в статью ссылки на страницу проекта, api и примеры.
    • +1
      Спасибо за совет. Добавил.
  • 0
    Хочу так поняшами свою квартиру населить ;-)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.