Вступление
Решения и проекты дополненной реальности (AR) рассматриваются как следующий шаг для пользовательского интерфейса или опыта, который объединяет технологии с реальным миром. Благодаря встроенным функциям AR-камеры в такие устройства, как Nintendo 3DS (и вам даже не нужно покупать игру, чтобы поиграть с ней), системам распознавания GPS и обнаружению звука, AR постепенно становится мейнстримом.
Хотя реальность такова, что AR воспринимается (по крайней мере, разработчиками) как слишком сложное или громоздкое для реализации, благодаря сообществу разработчиков, это не совсем так. В этой статье рассказывается, какие функции доступны в AR, объясняется терминология и дается высокоуровневое сравнение некоторых основных платформ для использования на Windows Phone .
Новички :Скачать Windows Phone Toolkit бесплатно!
Описания типов
В этом разделе подробно описываются три основных понятия AR, в которых мы принимаем данные из реального мира и объединяем их с опытом приложения.
· 3D пространство
Платформы AR должны понимать трехмерное пространство мира, который вы просматриваете и которым потенциально можете манипулировать. Эти принципы одинаковы для 3D-игр.
С типами AR трехмерного пространства вы применяете трехмерное представление того, что вы отображаете, пропорционально представлению через обычную камеру на основе либо оси, на которой удерживается устройство, либо положения объектов в реальном мире. Это может быть деформация видеоизображения или просто наложение объекта или изображения поверх видео. Взаимодействие важно, будь то манипулирование трехмерным видом или просто взаимодействие с ним.
3D-пространство важно, потому что вы пытаетесь объединить 3D-вид через камеру с искусственным 3D-видом, созданным приложением или игрой. В большинстве случаев это достигается только маркерами AR или специальным или функциональным распознаванием в сложных случаях, что описано в следующем разделе. Знание того, где вы находитесь и что вы смотрите в отношении того, что вы намереваетесь показать, является ключевым.
· Распознавание видео
Более продвинутая система AR распознает, что она читает с видеовхода по глубине / движению или определению.
Самый простой способ распознавания — это использовать какое-то фиксированное изображение (обычно называемое AR-картой / маркером), которое отличается от изображения с QR-кодом или сильно окрашенного изображения, такого как 3DS AR-карты. Определенное изображение является ключевым, поэтому программное обеспечение легко распознает, где на изображении с камеры находится изображение и какова его текущая ориентация.
Более продвинутые системы могут реально распознавать мир без использования таких карт. Эти системы могут распознавать такие функции, как лица (как это обычно используется в современных камерах), а также глубина (обычно с помощью ИК-камер для считывания глубины, таких как Kinect). Однако эти системы обычно требуют сложных алгоритмов и, что более важно, мощности — как процессорной, так и электрической, которые ограничены большинством мобильных форм-факторов. Во многих случаях этот уровень AR не требуется и может быть достигнут с помощью более простого решения с использованием фиксированных изображений.
Одним из наиболее интересных проектов, которые я видел, используя этот подход, является отображение окончательной конструкции торгового центра на портативном устройстве / планшете. Этот дисплей позволяет вам виртуально обойти участок и увидеть построенное здание еще до его постройки.
· Географическая позиция
Еще один уклон в мире AR — это точное местоположение объекта относительно того, где находится камера или человек в реальном мире. При этом используется GPS-координата объекта относительно GPS-координаты пользователя и направление, в которое он или она направлен. Большинство приложений, использующих это, создают набор мест (например, рестораны и заправочные станции) и отображают значки или изображения, когда камера направлена на общее направление пользователя. Реализации также используют близлежащие окрестности, чтобы изменить вид или игровой мир, когда его использует игрок. Например, игра в стиле палача может искать достопримечательности рядом с игроком, а затем предлагать слова, относящиеся к ним (например, продукты питания, если рядом с супермаркетом, или спортивные знаменитости, если рядом со спортивным стадионом).
На платформах, таких как Android и iOS, где приложение может постоянно работать в фоновом режиме, приложение может предупредить пользователя, когда он или она находится рядом, и может предоставить соответствующую информацию. Просто потому, что пользователь не использует видеопоток в то время, приложение все равно может распознавать окружение этого человека. Такие методы часто использовались в проектах GeoTracking.
Инструментарий
При принятии решения о внедрении AR в ваше приложение или игру (или при рассмотрении дизайна вашего приложения / игры) важно выбрать среду, которая лучше всего подходит для достижения ваших целей.
При осмотре есть несколько доступных AR Toolkits, и если вы просмотрите каталог App Hub, вы найдете там как минимум один образец AR. Однако пример AppHub — это скорее исследование API Motion (одного из лучших), а не AR. Даже благодаря простому использованию канала камеры, он просто отображает две текстуры, связанные с положением устройства (кадр видео и 3D-оверлей).
Каждый из описанных ниже наборов инструментов обладает уникальными способностями, направленными на решение определенных проблем или предоставление уникальных функций. Следующая интроспекция предоставляет высокоуровневое описание каждого из трех лучших наборов инструментов AR. Нет сомнений, что есть еще много, но они составляют сливки урожая для простоты и удобства использования.
· Silverlight AR Toolkit (SLAR)
http://slartoolkit.codeplex.com
обзор
На своем веб-сайте http://slartookit.codeplex.com/ SLAR Toolkit описывается как гибкая библиотека AR для Silverlight и Windows Phone с целью сделать приложения AR в реальном времени с Silverlight максимально простыми и быстрыми. Он может использоваться с API веб-камеры Silverlight (или с любым другим CaptureSource), WriteableBitmap или PhotoCamera Windows Phone.
SLAR Tookit основан на установленных ARToolkit ( http://www.hitl.washington.edu/artoolkit ) и NyARToolkit ( http://www.artoolworks.com/products/desk-top/nyartoolkit ), которые используют режим двойной лицензии , Он может использоваться для приложений с открытым или закрытым исходным кодом при определенных условиях.
Он имеет реализации в Silverlight 4/5 (включая аппаратное ускорение в SL 5) и доступен для Windows Phone.
Если вы испытываете приключения, вы также можете использовать это в SilverXNA (интеграция Silverlight XNA в WP 7.1), потенциально используя 3D-рендеринг поверх вашей среды Silverlight. Отличный пример этого был продемонстрирован в Build с использованием Kinect, где QR-коды были размещены вокруг комнаты, и различные взаимодействия были запущены, когда камера обнаружила разные коды. Вы можете использовать распознавание вместо видео, чтобы начать действия. Думай дальше!
Примеры проектов
Вот несколько изображений того, что другие сделали с инструментарием SLAR:
Использование фреймворка
SLAR Toolkit имеет одну из самых простых реализаций, которые я видел. Это ломается так:
o Установить стандартный источник видеозахвата.
o Инициализировать механизм распознавания AR, передавая источник захвата в качестве ссылки.
o Подключитесь к событиям для механизма распознавания AR.
o Запустите источник захвата камеры.
Например:
// Load AR marker from the generated marker file var markerSlar = Marker.LoadFromResource("data/Marker_SLAR_16x16segments_80width.pat", 16, 16, 80.0); // Initialize detector with the a camera capture source ArDetector = new CaptureSourceMarkerDetector(captureSource, 1, 4000, new List<Marker>{ markerSlar }); // Hook up to the marker detection event ArDetector.MarkersDetected += (s, e) => { var detectedResults = e.DetectionResults; }
Осталось только что-то сделать, когда маркер AR обнаружен. (Сайт уже поставляется с предварительно урезанным маркером AR для использования, но вы можете сделать свой собственный, если хотите). Образцы и документация на сайте дают некоторые основные примеры реализации, которые могут помочь вам в вашем пути.
Здесь есть отличная статья, которая показывает эту реализацию на Windows Phone: http://kodierer.blogspot.co.uk/2011/05/augmented-mango-slartoolkit-for-windows.html
Исходя из моего собственного опыта внедрения SLAR в проекте SilverXNA, важно убедиться, что вы помните, что объединяете два отдельных мира. SLAR Toolkit дает вам именно то, что вам нужно для позиционирования вашего 3D-мира XNA в зависимости от того, что видит камера. Помните, что камера может двигаться сама по себе (благодаря человеку, держащему камеру) и больше не контролирует игровой движок!
Ресурсы
Кроме того, вы можете использовать движок Balder3D в Silverlight для другого поворота. Он совместим с Windows Phone. В SLARToolkit даже есть образцы, написанные для Balder! ( http://balder.codeplex.com/ )
Если вы застряли, многие готовы помочь через обсуждения на сайте codeplex или от его создателя Рене Шульте ( http://kodierer.blogspot.co.uk ) .[TD1]
· Гоблин XNA
обзор
Гоблин — совершенно другой зверь, чем SLAR Toolkit. Goblin предлагает гораздо более широкий спектр возможностей и функций прямо из коробки, включая физику и поддержку сети через дополнительные библиотеки с открытым исходным кодом, которые умело интегрированы.
Гоблин обеспечивает:
o Полная поддержка манипулирования 3D-сценой и рендеринга.
o 6DOF (шесть степеней свободы) отслеживания положения и ориентации.
o Поддержка встроенного дисплея Vuzix iWear VR920 в моноскопическом и стереоскопическом режимах (просмотр 3D).
o 2D GUI система, позволяющая создавать классические компоненты 2D взаимодействия.
Эта дополнительная сложность обходится немного дороже с точки зрения мозговой материи. На самом деле все сводится к тому, что вы должны думать в 5D — не только положение и ориентация 3D-сцены, которую вы рисуете, но и относительное положение, в котором вы рисуете сцену, плюс положение и ориентация камеры / человека, который держит камера.
Это дает более подробные и широкие возможности того, что вы можете реализовать. Вам нужно только взглянуть на некоторые исследовательские проекты, выполненные с помощью Goblin, от простых интерактивных поверхностей до полного трехмерного островного лабиринта, где трехмерные объекты сталкиваются с объектами реального мира.
С другой стороны, фреймворк выполняет большую часть тяжелой работы и математики. Единственным ограничением является ваше воображение.
Примеры проектов
Вот несколько изображений того, что другие сделали с инструментарием Golbin:
Использование фреймворка
На момент написания, Goblin XNA поддерживает до XNA 4.0. Несмотря на то, что в настоящее время нет определенной версии Windows Phone, библиотека будет работать под Windows Phone, и есть планы выпустить версию для телефона позже.
Я бы порекомендовал твердое понимание XNA, прежде чем идти по этому пути.
Подобно SLAR для использования инструментария для распознавания маркеров, вы инициализируете Goblin следующим образом:
// Add this video capture device to the scene so that it can be used for // the marker tracker scene.AddVideoCaptureDevice(captureDevice); // Create an optical marker tracker that uses ARTag library tracker = new ARTagTracker(); // Set the configuration file to look for the marker specifications tracker.InitTracker(638.052f, 633.673f, captureDevice.Width, captureDevice.Height, false, "ARTag.cf"); // Set the marker tracker to use for our scene scene.MarkerTracker = tracker; // Display the camera image in the background. Note that this parameter // should be set after adding at least one video capture device to the // Scene class. scene.ShowCameraImage = true;
После того, как эти инструкции проведут вас через составление вашей 3D-сцены и использование встроенной физики, инструментарий позаботится обо всем остальном.
Как уже говорилось, не так просто, как SLAR, но очень мощно, как только вы освоите фреймворк.
* Обратите внимание, что Goblin не будет работать «из коробки» для Windows Phone и потребует немного усилий, чтобы заставить его работать с CameraSource, используемым в WP, это не сложно, так как WP CameraSource основан на версии DirectX. На момент написания статьи команда Goblin работала над портом источника для WP7, проверьте обсуждение на сайте для получения дополнительной информации.
Ресурсы
Статья 9 канала, объясняющая использование Гоблина сквозным:
http://channel9.msdn.com/coding4fun/articles/Augmented-Reality-Domino-Knock-Down-Game
Статья гоблина, использующая ALVAR для расширенного отслеживания:
· GEO AR Toolkit (GART)
обзор
GART был создан Джаредом Биенцем , сотрудником Microsoft, живущим в Хьюстоне, штат Техас. Джаред помогает разработчикам создавать приложения для Windows Phone, поэтому, если вы создадите что-то классное с помощью GART, он будет рад услышать об этом.
Проект GART описывает себя как структуру, созданную, чтобы помочь людям быстро и легко создавать приложения AR для Windows Phone.
Этот комплект отличается от других комплектов AR тем, что включает «Geo AR». В то время как другие наборы инструментов размещают виртуальные объекты поверх специально напечатанных тегов, этот набор инструментов помещает информацию поверх реальных мест в мире вокруг вас, отслеживая, где вы находитесь и направление, в котором вы находитесь.
Приложения Geo AR легко написать, потому что все, что вам нужно предоставить, — это набор объектов, имеющих точки широты и долготы. Они могут поступать откуда угодно — например, поиск в ресторане Bing, поиск фотографий Flickr или поиск статей в Википедии. Структура затем заботится об управлении датчиками и отслеживании, где пользователь находится относительно контрольных точек. Он может показать, где точки находятся относительно пользователя с точки зрения сверху вниз (на карте), или он может показать, где эти точки являются виртуальной линзой в реальном мире.
Обратите внимание, что GART интенсивно использует API-интерфейсы Motion, поставляемые с Windows Phone Mango (OS 7.5), поэтому рекомендуется использовать устройство с поддержкой движения для использования GART (если устройство не имеет гироскопа, API-интерфейс движения попытается компенсировать с какими датчиками в наличии). Это должно включать все устройства, которые поставляются с 7.5, а также многие из существующих 7.0 устройств, которые были обновлены до 7.5. К сожалению, в настоящее время эмулятор не полностью поддерживает Motion API.
Вы можете рассматривать GART как расширение для SLAR Toolkit. Однако GART не использует какие-либо функции распознавания или отслеживания видео и полагается исключительно на геоданные, с которыми он должен работать.
Инструментарий просто функционирует с помощью GPS на устройстве (или одной из других служб определения местоположения, доступных на Windows Phone) в сочетании с Motion API, чтобы определить, где вы находитесь и в каком направлении вы находитесь. Затем он обнаруживает места рядом с вами из Интернета и строит их. Если место в вашем поле зрения через камеру, то отображается тег.
Каркас не ограничивается только камерой и может быть легко расширен для предоставления дополнительной информации об интересных объектах на устройстве другими способами (например, стрелками, указывающими на места слева или справа).
Инструментарий также предлагает дополнительные услуги для дальнейшего повышения удобства работы пользователей из коробки:
· HeadingIndicator — рисует круг с конусом , который поворачивается , чтобы показать заголовок пользователя. Хорошо для наложения на верхнюю часть карты.
· OverheadMap — отображает карту Bing, которая остается в центре на месте пользователя. Обычно карта фиксируется на «Север вверх», но она также может поворачиваться в направлении пользователя.
· VideoPreview — По сути, прямоугольник, который отображает видео с камеры. Обычно он помещается в качестве первого (или самого нижнего) слоя и устанавливается на весь экран. Но вы можете иметь несколько экземпляров этого слоя в разных размерах и местах. Например, вы можете сделать так, чтобы OverheadMap заполнял экран небольшим предварительным просмотром видео в углу.
· WorldView — отображает виртуальный мир в трехмерном пространстве и применяет матричную математику, чтобы поддерживать виртуальный мир в соответствии с тем, что видно через камеру.
Обратите внимание, что есть разница между лицом и путешествием. Человек может ехать на север по автостраде, но смотреть в окно на запад.
Элементы для отображения просто поступают из списка элементов, которые могут быть локальными (подходит для проектов типа GeoCaching) или из Bing (инструментарий включает в себя функциональность поиска Bing).
Примеры проектов
Вот несколько изображений того, что другие сделали с помощью инструментария GART:
Пример проекта Pinbucket Gart
Использование фреймворка
Основные шаги, которые следует выполнить для создания приложения с помощью инструментария:
· Начать новый проект Windows Phone
· Добавить элемент управления ARDisplay на вашу страницу
· Добавить виды (или слои), которые вы хотите, как дочерние элементы ARDisplay
· В Page.OnNavigatedTo вызвать ARDisplay.StartServices ()
· В Page.OnNavigatedFrom вызывается ARDisplay.StopServices ()
· Создайте коллекцию объектов ARItem (или ваш собственный пользовательский тип, который наследуется от ARItem)
· Установите для свойства GeoLocation каждого элемента ARItem местоположение в реальном мире.
· Установите ARDisplay.Items равным вашей новой коллекции
Поскольку Gart основан на Silverlight, весь необходимый код встроен в UserControl, предоставляемый GART, поэтому его реализация сводится к добавлению элемента управления на вашу страницу:
<Grid x:Name="LayoutRoot"> <ARControls:ARDisplay x:Name="ARDisplay" d:LayoutOverrides="Width"> <ARControls:VideoPreview x:Name="VideoPreview" /> <ARControls:OverheadMap x:Name="OverheadMap" CredentialsProvider="{StaticResource BingCredentials}" /> <ARControls:WorldView x:Name="WorldView" /> <ARControls:HeadingIndicator x:Name="HeadingIndicator" HorizontalAlignment="Center" VerticalAlignment="Center" /> </ARControls:ARDisplay> </Grid>
И затем инициализируем элемент управления на вашей странице «OnNavigatedTo» и останавливаем его в ваших методах «OnNavigatedFrom» вашей страницы:
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) { // Stop AR services ARDisplay.StopServices(); base.OnNavigatedFrom(e); } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { // Start AR services ARDisplay.StartServices(); base.OnNavigatedTo(e); }
Осталось только найти все метки, которые вы хотите отобразить в видоискателе, примеры, предоставляемые с платформой, позволяют вам создавать свои собственные или интегрировать их с Bing.
Ресурсы
Справочник по библиотеке Motion API:
http://msdn.microsoft.com/en-us/library/hh239189(v=VS.92).aspx
Ресурсы Bing для разработчиков:
http://www.bing.com/toolbox/bingdeveloper/
Пример использования Pinbucket:
запоздалые мысли
Надеемся, что эта статья покажет вам некоторые возможности AR от полномасштабных решений AR до гибридного сочетания возможностей, которые могут расширить ваши текущие и будущие решения. Кроме того, эта статья призвана показать, что AR не так страшен, как кажется на первый взгляд.
Лично я хотел бы видеть больше объединенных решений, в которых вы добавляете больше реального мира в свои приложения или расширяете свое приложение в реальном мире.
Я видел проекты с большим потенциалом. Одним из таких примеров является Kickstarter, приложение для людей, которые работают там, где приложение / игра отслеживает, где вы находитесь, и планирует маршрут для вас. Он устанавливает целевые пакеты или действия, которые нужно выполнять на ходу. Затем бегун собирает очки или артефакты, которые они могут использовать в конце своего бега для управления виртуальной базой. База каждого человека конкурирует с другими игроками в сети.
По моему мнению, вы можете взять практически любую игру, указать ее из окна или, с помощью быстрого поиска в Интернете, перетащить в реальный мир и изменить восприятие игрока и каждый раз менять его. Вы можете использовать QR-коды из повседневных предметов или даже настроить поиск пасхальных яиц с помощью приложения. Сойти с ума, быть веселым и креативным, и не соглашаться — в конце концов, это расширенный мир (быстрый поклон deus-ex там).