Использование Qualcomm Augmented Reality в приложениях для Android
Upcoming SlideShare
Loading in...5
×
 

Использование Qualcomm Augmented Reality в приложениях для Android

on

  • 3,056 views

Использование Qualcomm Augmented Reality в приложениях для Android,

Использование Qualcomm Augmented Reality в приложениях для Android,
Борис Трофимов

Statistics

Views

Total Views
3,056
Views on SlideShare
3,056
Embed Views
0

Actions

Likes
0
Downloads
20
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n \n \n \n Tadaaaaaaaaa...... \n (Dalo) \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n
  • \n \n \n \n \n

Использование Qualcomm Augmented Reality в приложениях для Android Использование Qualcomm Augmented Reality в приложениях для Android Presentation Transcript

  • Использование Qualcomm Augmented Reality в приложениях для Android Трофимов Борис Team Lead, SIGMA Ukraine [email_address] Одесская Java User Group http://odjug.blogspot.com/
  • План доклада 1. Что такое Augmented Reality и почему это интересно? 2. Почему мобильная платформа Android? 3. Обзор Qualcomm AR API возможности и ограничения 4. Взгляд на Qualcomm AR API изнутри. 5. Интеграция QCAR с приложением пользователя. 6. Опыт использования QCAR в SIGMA Ukraine. 7. Qualcomm Challenge. 8. Увидеть своими глазами: тестовое приложение ARCheckers.
  • Что такое Augmented Reality и почему это интересно и актуально? Дополненная реальность (англ. augmented reality, AR), — термин, относящийся ко всем проектам, направленным на дополнение реальности любыми виртуальными элементами. Дополненная реальность — добавление к поступающим из реального мира ощущениям мнимых объектов, обычно вспомогательно-информативного свойства.
  • Фантастика, воплощающая реальность Что такое Augmented Reality и почему это интересно?
  • AR. Military Что такое Augmented Reality и почему это интересно?
  • AR. Social Networking Что такое Augmented Reality и почему это интересно?
  • AR. Tourism Что такое Augmented Reality и почему это интересно?
  • AR. Gadgets Что такое Augmented Reality и почему это интересно?
  • AR. Образование и наука Что такое Augmented Reality и почему это интересно?
  • AR. Games Что такое Augmented Reality и почему это интересно?
  • AR. Sport Что такое Augmented Reality и почему это интересно?
  • Just for fun. http://www.livingsasquatch.com/ Что такое Augmented Reality и почему это интересно?
  • Основные строительные кирпичики AR в общем виде
    • Камеры, иногда много камер
    • Данные со спутников, в т.ч. GPS
    • Данные компаса
    • Алгоритмы распознования известных артефактов, такие как trackable surfaces, лица, автомобильные номера, дороги
    Что такое Augmented Reality и почему это интересно?
  • Почему мобильная платформа Android?
    • Мобильный телефон всегда под рукой
    • Относительно легкий способ получить выгоду от использования AR
    • Быстрая разработка ПО, относительно простая интеграция как со сторонними Java и C++ библиотеками
    • Разработанный и простой в использовании Qualcomm AR API
    • Обстоятельные примеры использования QCAR
    Почему мобильная платформа Android?
  • Обзор Qualcomm AR API. Возможности и ограничения
      Qualcomm AR (QCAR) является ярким представителем AR технологий на основе trackable surfaces и данных, снимаемых с камеры мобильного устройства.
    Обзор Qualcomm AR API возможности и ограничения
  • Приблизительный стек приложения AR Обзор Qualcomm AR API возможности и ограничения
  • Что может Qualcomm AR
    • Обрабатывать живой поток с видеокамеры устройства Android
    • Искать в реальном времени заранее известные trackable surfaces
    • На основе найденных trackable surfaces строится модельная система координат
    • Пользователь может в реальном времени строить в модельной системе координат свои 3D объекты с помощью Open GL ES
    • 3D обекты интегрируются в видео поток, который в конце цепочки выводится на экран устройства.
    Это все, что умеет QCAR Обзор Qualcomm AR API возможности и ограничения
  • Управление trackable surfaces
    • Информация о trackable surfaces “зашивается” в приложение
    • Все используемые trackable surfaces должны быть предварительно обработаны через WEB портал Qualcomm
    • Текстуры не должны содержать регулярные элементы
    • Обработанные изображения в специальном формате возвращаются разработчику и готовы к интеграции в приложение
    Обзор Qualcomm AR API возможности и ограничения
  • Виды trackable surfaces Qualcomm AR предлагает три вида поверхностей:
      • Image targets
      • Multi Image targets
      • Рамочные маркеры (Frame markers)
    Взимодействие с реальным миром:
      • подержка виртуальных кнопок
    Общие замечания:
    • Каждая поверхность имеет
    • уникальный ID, по которому можно
    • отследить ее в программе
    • Каждая поверхность имеет свою уникальную
    • систему координат, и информация о ней
    • обновляется в State Object как только изменилось ее положение в пространстве.
    Взгляд на Qualcomm AR API изнутри
    • Image targets
    Взгляд на Qualcomm AR API изнутри В качестве Image targets могут выступать любые нерегулярные текстуры, что является преимуществом по сравнению с традиционным QR кодами. Текстурам необязательно содержать специальные черные или белые области QCAR способен одновременно обрабатывать до 5 image targets . Каждый image target имеет уникальный идентификатор.
      Центр координат находится по центру текстуры. После обработки на сервере QCAR возвращает необходимую информацию, в том числе размеры текстуры в модельной системе координат пользователя.
    • MultiImage targets
    Взгляд на Qualcomm AR API изнутри MultiImage targets это объекты, состоящие из нескольких Image targets, закрепленных в пространстве в некотором отношении друг к другу. Multi Image Targets могут быть созданы на лету в на основе существующих Image Targets. MultiImage targets идентифицируются и отображаются хотя бы по одной их найденых MultiImage targets.
    • Рамочные маркеры
    Взгляд на Qualcomm AR API изнутри Рамочные маркеры (Frame Markers) в отличие от Image Targets в виду простоты не требуют регистрации на TMA. Кроме того привязку к новым frame markers можно совершать в runtime. Маркеры дают прекрасную возможность получить дополнительную информацию в реальном времени. Маркер позволяет вставлять внутрь произвольную картинку. Всего может быть использовано 512 frame markers в приложении, однако одновременно определяться могут только 5. Маркеры доступны как и остальные trackable surfaces через общий список активных поверхностей.
    • Виртуальные кнопки
    Взгляд на Qualcomm AR API изнутри Виртуальные кнопки это разработанные разработчиком прямоугольные регионы на Image Targets, которые, когда к ним прикасаются(фактически перекрывают) , генерируют событие нажатия. Виртуальные кнопки могут быть использованы для получения событий таких как нажатие кнопки или определение того что некоторые области в Image Target перекрыты другим объектом. Виртуальные кнопки могут срабатывать только находясь в прямой видимости камеры. Virtual buttons могут создаваться и удаляться в реальном времени и т.о. не требуют регистрации на сервере.
  • Ключевые компоненты QCAR SDK или как происходит процесс рендеринга Взгляд на Qualcomm AR API изнутри 1. Камера 2. Пиксельный преобразователь a) YUV12 в RGB565 b) сжатие потока 3. Tracker 4. State object Объект кеширования (на этом уровне происходит доступ из приложения) 5. Video Background Renderer 6. Application Code 7. Target Resources
  • Что доступно разработчику Интеграция QCAR с приложением пользователя.
    • Высокоуровневый доступ к аппаратным элементам (напр. Camera start/stop)
    • Событийные обработчики (напр. Новый кадр с камеры доступен)
    • Настройка и обработка trackable surface различных типов:
    Image Targets Multi-Image Targets Frame Markers
    • Взаимодействие с внешним миром
    • Virtual Buttons
    • Open GL ES 1.1/2.0 совместимый интерфейс
  • Интеграция с QCAR на уровне приложения
    • QCAR предоставляет API доступ через Android NDK
    • Логика основного приложения должна быть разделена между Android java уровнем и С++ NDK уровнем
    • Инициализация всего приложения происходит на java уровне
    • Два способа взаимодействия логики приложения и QCAR
    Интеграция QCAR с приложением пользователя I II
  • Интеграция QCAR с приложением пользователя Работа с координатами
      QCAR управляет заполнением всех матриц
    • Мировая матрица ModelView зависит от конкретной trackable surface
    • Матрица перспективной проекции зависит от настроек камеры
  • Алгоритм обработки каждого кадра для типичного приложения Работа с QCAR сводится к обработке события отрисовки фрейма, достуа к state object яаляется своего рода транзакционным: JNIEXPORT void JNICALL Java_com_sigma_ukraine_ARCheckers_ImageTargetsRenderer_renderFrame(JNIEnv *, jobject,jint x, jint y) { // Clear color and depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Render video background: QCAR::State state = QCAR::Renderer::getInstance().begin(); // Get the projection matrix: const QCAR::Tracker& tracker = QCAR::Tracker::getInstance(); const QCAR::CameraCalibration& cameraCalibration = tracker.getCameraCalibration(); projectionMatrix = QCAR::Tool::getProjectionGL(cameraCalibration, 2.0f, 2000.0f); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); for (int i =0;i<state.getNumActiveTrackables();++i) { // Get the trackable: const QCAR::Trackable* trackable = state.getActiveTrackable(i); // get modelView matrix QCAR::Matrix44F modelViewMatrix = QCAR::Tool::convertPose2GLMatrix(trackable->getPose()); Utils::multiplyMatrix(&projectionMatrix.data[0], &modelViewMatrix.data[0] , &modelViewProjection.data[0]); // Your business logic here with trackable object and modelViewMatrix } glUseProgram(shaderProgramID); glDisable(GL_DEPTH_TEST); QCAR::Renderer::getInstance().end(); } Интеграция QCAR с приложением пользователя
  • Опыт использования QСAR в SIGMA Ukraine. Приложение AR-шашки Приложение является экспериментальным проектом и предлагает game play для двоих человек посредством одного устройства. Основные моменты:
    • Был выбран второй способ взаимодействия с Android NDK как наиболее производительный на момент написания приложения
    • QCAR OpenGLES поддерживает не все функции, так не работали вершинные нормали, решение – наложение карты освещенности на текстуры
    • Текущая реализация QCAR библиотеки не позволяла корректно закрывать приложение.
    • Шахматная доска имеет регулянную структуру.
  • Qualcomm Challenge 2010
      Призовой фонд
    • 1st Place: $125,000, Paparazzi
    • 2nd Place: $50,000, Inch High Stunt Guy
    • 3d Place $25,000, Danger Copter
    Опыт использования QСAR в SIGMA Ukraine.
  • Спасибо за внимание
      http://developer.qualcomm.com/dev/augmented-reality
    Qualcomm AR Home Page
      http://www.youtube.com/watch?v=fkIhS-zrCd4&NR=1
    Qualcomm Challenge 2010
      https://ar.qualcomm.com/qdevnet/developer_guide
    Qualcomm AR Developer Guide