Pull to refresh

Дополненная реальность. Поиск

Reading time4 min
Views9.6K
image
Поиск с помощью дополненной реальности (AR) становится все популярнее. Появляются русские аналоги таких поисковых машин, а точнее браузеров. В этой публикации я опишу процесс, на мой взгляд, самого простого создания поиска при помощи AR и мобильного устройства — воспользоваться готовой платформой и с помощью API создать свой канал трансляции.

На сегодняшний день в мире известны мне 2 крупные компании, которые предоставляют такие возможности, это: Layar и Junaio. Обе предоставляют API для разработчика по созданию своих каналов, приложения для iPhone, Android. Схема работы такая:
  • Регистрируемся как разработчик.
  • Получаем API ключ.
  • Создаем и настраиваем свой канал.
  • Создаем серверную часть канала (контент).
  • Скачиваем AR приложение на телефон, проверяем.


Junaio это проект компании Metaio — мюнхенская компания, продающая Unifeye приложения для разработки Augmented Reality. Проект Junaio молодой и менее известный чем Layar, несмотря на это проект достаточно перспективный и быстро развивающийся, сегодня опишу процесс создания канала именно в нем.

Предлагаю сделать немного большее чем «hello world», и разобрать код моего действующего канала — http://dogoodto.me.

1. Регистрируемся как разработчик


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

2. Получаем API ключ


Собственно с помощью этого ключа мы сможем связать наш контент с каналами созданными в Junaio. Предоставляя Callback API мы даем возможность junaio серверу получить информации с нашего сервера по 4 запросам:

channels/subscribe

Когда пользователь подписывается или отписывается от вашего канала.

pois/search

Когда польз
Всякий раз, когда запрос на обновление инициируется клиентом, этот запрос будет отправлен на наш сервер. Запросы на обновление могут быть вызваны в связи с открытием канала или существенном изменении в положении пользователя.

pois/event

Этот запрос будет отправлен на ваш сервер, когда пользователь начнет взаимодействие с вашими POI (Points Of Interest).

pois/visualsearch

На наш сервер отправляется запрос с изображением/фото которое сделал пользователь. Анализируется информация на сервере и клиент ждет ответ от junaio glue (позволяет добавлять 3D объекты в реальном времени на цветной маркер, Natural Feature Tracking на ваших телефонах, конечно можно также привязывать объекты и к координатам gps, но точность такую мы не получим.)

3. Создаем канал junaio



Вам нужно будет ввести определенную информацию о канале, такую как описание и тумбнаил. Главное предоставить callback адрес вашего сервера, откуда будет браться информация о POI.

4. Создаем серверную часть контента



Из меню разработчика на сайте junaio, можно скачать несколько версий пакетов для быстрого старта с примерами. Может быть PHP пакет, использующий Zend encryption либо ASP.NET C#. Предлагаю остановиться на PHP.

Это важный этап, в котором будет происходить основное действие, поэтому разделю его еще на 2 части:

4.1. Настроить связь сервера.



Скачиваем стартовый пакет junaio. Наш сервер конечно должен иметь Apache Webserver, установленный PHP 5, Zend Framework (минимальный бесплатный пакет можно скачать отсюда)

image

Сама установка и настройка предельно проста:
— распаковываете файлы в директорию на сервере. Название может быть любым, главное в callback url указать точный путь к /html директории скачанного дистрибутива.
— переименовать _.htaccess в .htaccess.
— скопировать Zend Framework в папку с дистрибутивом Junaio.
— отредактировать config/config.php (где и придется ввести полученный API key).

4.2. Создание логики нашего канала и отправка данных junaio серверу.



Проект dogoodto.me задумывался как сервис который делает тебя добрым человеком, позволяя искать «крики» о помощи и выполнять их как через web site, так и через AR поиск с мобильных устройств.

В этом проекте используется Google Maps API и простая связка php-mysql для сохранения «зова» о помощи. Это логика проекта. Интегрируется с junaio framework'ом она в файле html/index.php т.е. грубо говоря прямо в нашем callback url. Приведу код, который использую для проекта dogoodto.me:
header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '';
echo '' . parseToXML($row['name']) . '';
echo '' . parseToXML($row['address']) . ' ';
echo '' . $row['lat'] . ',' . $row['lng'] . ',13';
echo '' . $row['cdate'] . '';
echo '0,0,0';
// echo '';
// echo '';
echo '<mime-type>text</mime-type>';
echo 'text';
echo 'google-maps-icons.googlecode.com/files' . $row['type'] . '.png ';
echo 'google-maps-icons.googlecode.com/files' . $row['type'] . '.png';
echo '';
}

// End XML file
echo '';


Как вы видите — это простой вывод xml файла, который берет свои значения из базы данных. В базу они заносятся самими пользователям, когда они добавляют крики о помощи на google maps. У каждой POI могут быть настроены разные параметры, но обязательными (чтобы ваш канал прошел проверку без ошибок) являются все nodes указанные выше.

Отмечу что, dogoodto.me использован здесь с целью демонстрации нечто большего чем в стандартных пимерах Junaio «Hello World», а не рекламировать «сырой» сервис. Если у вас есть какие-то идеи/критика/предложения по поводу проекта — я открыт для кооперации.

Можете писать вопросы, если возникнут, в процессе создания своего канала — с удовольствием поделюсь своим опытом. Еще хотел бы посоветовать google группу этого проекта, в которой также быстро можно получить ответы и помощь.

UPD.

5. Скачиваем AR приложение на iPhone, проверяем



После того как ваш канал будет проверен модераторами Junaio, он появится в листинге выбранной вами категории при регистрации канала:
image

Активировав live view, вы увидите все POI, отправляемые вашим сервером каналу в Junaio.
image
Tags:
Hubs:
+49
Comments24

Articles