Вот уже течение 10 лет компания Metaio GmbH разрабатывает и совершенствует технологии дополненной реальности (ДР) для ПК и мобильных устройств. Одним из результатов этих титанических усилий стал Metaio SDK – набор инструментов для внедрения элементов ДР в приложения и программы, оптимизированный при поддержке и помощи Intel под ее платформы. Набор, между прочим, совершенно бесплатный! Предлагаем вам поближе познакомиться с этим продуктом и посмотреть, как он работает.
Итак, с помощью инструментов Metaio сложные и ресурсоемкие функции компьютерного зрения, такие, например, как трехмерный трекинг реальных объектов, выполняются на мобильных платформах Intel гладко и ненапряжно. Это означает, прежде всего, что приложения, использующие технологии ДР, будут работать точно и стабильно. Внедрена поддержка многих носимых гаджетов, улучшена визуализация и скорость обработки объектов. К слову сказать, Metaio SDK – единственный SDK в мобильном сегменте, осуществляющий надежный безмаркерный трекинг трехмерных объектов реального мира, как, впрочем, и двумерных. Последняя версия Metaio SDK поддерживает также трекинг по контурам, позволяющий пользователям отслеживать геометрию реальных объектов, что в значительной степени решает проблему непостоянства освещенности.
На сегодняшний день, на портале Metaio зарегистрировано более 60 тысяч разработчиков, использующих продукты компании.
Metaio SDK лежит в основе многих мобильных приложений, использующих ДР, таких как каталог продуктов IKEA на 2012/13 годы, McDonalds McMission и многих других. Рассмотрим в качестве примера, как используется ДР в приложении Audi eKurzinfo. Современный автомобиль чрезвычайно насыщен разнообразными функциями, и разобраться в управлении ими сразу далеко не просто. Audi eKurzinfo позволяет получить мгновенную помощь по агрегатам и органам управления автомобиля Audi; достаточно поднести камеру к интересующему вас объекту, и приложение выдаст справку о нем. Работа системы показана на этом маленьком видеоролике.
Наиболее продвинутый браузер ДР, junaio, также использует в качестве основы Metaio SDK.
Основные характеристики новой версии Metaio SDK 5.0:
- Доступен для Android, iOS и ПК платформ, поддерживает 2D, 3D, ID и SLAM трекинг;
- Поддерживает носимые гаджеты Google Glass, Epson Moverio BT-100 и Vuzix M-100;
- Поддерживает 3D безмаркерный трекинг на основе CAD данных (трекинг по контурам);
- В 2014 будет добавлен функционал трекинга по лицам;
- Улучшенное качество визуализации посредством программируемых шейдеров;
- Встроенный мощный 3D движок, оснащенный многопоточным трекингом и конвейерами рендеринга;
- Поддержка сложных 3D моделей (более 32 тысячи многоугольников);
- Простое управление 3D контентом и его отладка (BoundingBox, Normals, Wireframe).
Приведем небольшой учебный пример, показывающий возможности Metaio SDK. Этот и прочие разделы учебника можно изучить на сайте Metaio.
Посмотрим, как расположить различные трекинговые данные, чтобы получилась своя собственная дополненная реальность.
По умолчанию будем использовать безмаркерную конфигурацию. Для начала загрузим нашу 3D модель.
mMetaioMan = metaioSDK.createGeometry(metaioManModel);
Теперь добавим onTouch обработчики для кнопок. Например, для кнопки картинки-маркера обработчик под Android будет таким
public void onPictureButtonClick(View v)
{
trackingConfigFile = AssetsManager.getAssetPath("Assets3/TrackingData_PictureMarker.xml");
boolean result = metaioSDK.setTrackingConfiguration(trackingConfigFile);
}
Для iOS мы внедрили элемент UISegmentedControl, поэтому код будет выглядеть немного по-другому. В AREL (Augmented Reality Experience Language) мы будем использовать функцию jQuery .buttonset(), чтобы создать кнопки в HTML коде и потом навесим на него обработчики нажатий на JavaScript.
Как мы видим, просто исполняя метод setTrackingConfiguration(trackingConfigurationFile), мы получаем новую конфигурацию трекинга.
Обратите внимание, что наша конфигурация для картинки-маркера не содержит ни одного маркера; чтобы быть уверенными, что модель включает обе картинки из тестового задания, мы должны внедрить следующую функциональность, переписав метод onDrawFrame() в случае Android, drawFrame() для iOS и определяя обработчик трекинга для AREL.
@Override
public void onDrawFrame()
{
super.onDrawFrame();
if (metaioSDK != null)
{
// get all detected poses/targets
TrackingValuesVector poses = metaioSDK.getTrackingValues();
//if we have detected one, attach our metaio man to this coordinate system Id
if (poses.size() != 0)
mMetaioMan.setCoordinateSystemID(poses.get(0).getCoordinateSystemID());
}
}
С помощью первого вызова мы получим все обнаруженные цели и затем, если цель обнаружена, мы соотнесем нашу модель с системой координат цели. В AREL мы пропустили первый шаг, поскольку получили колбэк с трекинговым событием.
И, напоследок, веселое видео от IKEA о дополненной домашней реальности.