ݺߣ

ݺߣShare a Scribd company logo

      
       Использование 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

More Related Content

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

Android for-indoor-services
Android for-indoor-servicesAndroid for-indoor-services
Android for-indoor-services
OSLL
Augmented reality: development, use, ask
Augmented reality: development, use, askAugmented reality: development, use, ask
Augmented reality: development, use, ask
Sergey Vitukhin
Дополненная реальность
Дополненная реальностьДополненная реальность
Дополненная реальность
RED{CAT}PROMO
Spider Group Mobile Development
Spider Group Mobile DevelopmentSpider Group Mobile Development
Spider Group Mobile Development
Spider Group
Дополненная реальность для печатных СМИ - ARMee Media
Дополненная реальность для печатных СМИ - ARMee MediaДополненная реальность для печатных СМИ - ARMee Media
Дополненная реальность для печатных СМИ - ARMee Media
SaaS.ru Portal
Portfolio SpiderGroup
Portfolio SpiderGroupPortfolio SpiderGroup
Portfolio SpiderGroup
Julia Solyanik
VRability - презентация проекта в VR360
VRability - презентация проекта в VR360VRability - презентация проекта в VR360
VRability - презентация проекта в VR360
Moscow IFF
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентацийEligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision
Android for-indoor-services
Android for-indoor-servicesAndroid for-indoor-services
Android for-indoor-services
OSLL
Augmented reality: development, use, ask
Augmented reality: development, use, askAugmented reality: development, use, ask
Augmented reality: development, use, ask
Sergey Vitukhin
Дополненная реальность
Дополненная реальностьДополненная реальность
Дополненная реальность
RED{CAT}PROMO
Spider Group Mobile Development
Spider Group Mobile DevelopmentSpider Group Mobile Development
Spider Group Mobile Development
Spider Group
Дополненная реальность для печатных СМИ - ARMee Media
Дополненная реальность для печатных СМИ - ARMee MediaДополненная реальность для печатных СМИ - ARMee Media
Дополненная реальность для печатных СМИ - ARMee Media
SaaS.ru Portal
VRability - презентация проекта в VR360
VRability - презентация проекта в VR360VRability - презентация проекта в VR360
VRability - презентация проекта в VR360
Moscow IFF
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентацийEligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision: Интерактивные технологии и 3D визуализация для WOW презентаций
EligoVision

More from Alex Tumanoff (20)

Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
Alex Tumanoff
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikOdessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Alex Tumanoff
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
Alex Tumanoff
Sdlc by Anatoliy Anthony Cox
Sdlc by  Anatoliy Anthony CoxSdlc by  Anatoliy Anthony Cox
Sdlc by Anatoliy Anthony Cox
Alex Tumanoff
Kostenko ux november-2014_1
Kostenko ux november-2014_1Kostenko ux november-2014_1
Kostenko ux november-2014_1
Alex Tumanoff
Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3
Alex Tumanoff
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас..."Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
Alex Tumanoff
Spring.new hope.1.3
Spring.new hope.1.3Spring.new hope.1.3
Spring.new hope.1.3
Alex Tumanoff
Sql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevSql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton Vidishchev
Alex Tumanoff
Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey Klimenko
Alex Tumanoff
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
Alex Tumanoff
Игры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковИгры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей Рыбаков
Alex Tumanoff
Android sync adapter
Android sync adapterAndroid sync adapter
Android sync adapter
Alex Tumanoff
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
Alex Tumanoff
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
Alex Tumanoff
Неформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITНеформальные размышления о сертификации в IT
Неформальные размышления о сертификации в IT
Alex Tumanoff
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений Firefox
Alex Tumanoff
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So..."AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
Alex Tumanoff
Patterns of parallel programming
Patterns of parallel programmingPatterns of parallel programming
Patterns of parallel programming
Alex Tumanoff
Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
Alex Tumanoff
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikOdessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Alex Tumanoff
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
Alex Tumanoff
Sdlc by Anatoliy Anthony Cox
Sdlc by  Anatoliy Anthony CoxSdlc by  Anatoliy Anthony Cox
Sdlc by Anatoliy Anthony Cox
Alex Tumanoff
Kostenko ux november-2014_1
Kostenko ux november-2014_1Kostenko ux november-2014_1
Kostenko ux november-2014_1
Alex Tumanoff
Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3
Alex Tumanoff
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас..."Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
Alex Tumanoff
Sql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevSql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton Vidishchev
Alex Tumanoff
Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey Klimenko
Alex Tumanoff
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
Alex Tumanoff
Игры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковИгры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей Рыбаков
Alex Tumanoff
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
Alex Tumanoff
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
Alex Tumanoff
Неформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITНеформальные размышления о сертификации в IT
Неформальные размышления о сертификации в IT
Alex Tumanoff
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений Firefox
Alex Tumanoff
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So..."AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
Alex Tumanoff
Patterns of parallel programming
Patterns of parallel programmingPatterns of parallel programming
Patterns of parallel programming
Alex Tumanoff

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

  • 1. Использование Qualcomm Augmented Reality в приложениях для Android Трофимов Борис Team Lead, SIGMA Ukraine [email_address] Одесская Java User Group http://odjug.blogspot.com/
  • 2. План доклада 1. Что такое Augmented Reality и почему это интересно? 2. Почему мобильная платформа Android? 3. Обзор Qualcomm AR API возможности и ограничения 4. Взгляд на Qualcomm AR API изнутри. 5. Интеграция QCAR с приложением пользователя. 6. Опыт использования QCAR в SIGMA Ukraine. 7. Qualcomm Challenge. 8. Увидеть своими глазами: тестовое приложение ARCheckers.
  • 3. Что такое Augmented Reality и почему это интересно и актуально? Дополненная реальность (англ. augmented reality, AR), — термин, относящийся ко всем проектам, направленным на дополнение реальности любыми виртуальными элементами. Дополненная реальность — добавление к поступающим из реального мира ощущениям мнимых объектов, обычно вспомогательно-информативного свойства.
  • 4. Фантастика, воплощающая реальность Что такое Augmented Reality и почему это интересно?
  • 5. AR. Military Что такое Augmented Reality и почему это интересно?
  • 6. AR. Social Networking Что такое Augmented Reality и почему это интересно?
  • 7. AR. Tourism Что такое Augmented Reality и почему это интересно?
  • 8. AR. Gadgets Что такое Augmented Reality и почему это интересно?
  • 9. AR. Образование и наука Что такое Augmented Reality и почему это интересно?
  • 10. AR. Games Что такое Augmented Reality и почему это интересно?
  • 11. AR. Sport Что такое Augmented Reality и почему это интересно?
  • 12. Just for fun. http://www.livingsasquatch.com/ Что такое Augmented Reality и почему это интересно?
  • 13. Основные строительные кирпичики AR в общем виде Камеры, иногда много камер Данные со спутников, в т.ч. GPS Данные компаса Алгоритмы распознования известных артефактов, такие как trackable surfaces, лица, автомобильные номера, дороги Что такое Augmented Reality и почему это интересно?
  • 14. Почему мобильная платформа Android? Мобильный телефон всегда под рукой Относительно легкий способ получить выгоду от использования AR Быстрая разработка ПО, относительно простая интеграция как со сторонними Java и C++ библиотеками Разработанный и простой в использовании Qualcomm AR API Обстоятельные примеры использования QCAR Почему мобильная платформа Android?
  • 15. Обзор Qualcomm AR API. Возможности и ограничения Qualcomm AR (QCAR) является ярким представителем AR технологий на основе trackable surfaces и данных, снимаемых с камеры мобильного устройства. Обзор Qualcomm AR API возможности и ограничения
  • 16. Приблизительный стек приложения AR Обзор Qualcomm AR API возможности и ограничения
  • 17. Что может Qualcomm AR Обрабатывать живой поток с видеокамеры устройства Android Искать в реальном времени заранее известные trackable surfaces На основе найденных trackable surfaces строится модельная система координат Пользователь может в реальном времени строить в модельной системе координат свои 3D объекты с помощью Open GL ES 3D обекты интегрируются в видео поток, который в конце цепочки выводится на экран устройства. Это все, что умеет QCAR Обзор Qualcomm AR API возможности и ограничения
  • 18. Управление trackable surfaces Информация о trackable surfaces “зашивается” в приложение Все используемые trackable surfaces должны быть предварительно обработаны через WEB портал Qualcomm Текстуры не должны содержать регулярные элементы Обработанные изображения в специальном формате возвращаются разработчику и готовы к интеграции в приложение Обзор Qualcomm AR API возможности и ограничения
  • 19. Виды trackable surfaces Qualcomm AR предлагает три вида поверхностей: Image targets Multi Image targets Рамочные маркеры (Frame markers) Взимодействие с реальным миром: подержка виртуальных кнопок Общие замечания: Каждая поверхность имеет уникальный ID, по которому можно отследить ее в программе Каждая поверхность имеет свою уникальную систему координат, и информация о ней обновляется в State Object как только изменилось ее положение в пространстве. Взгляд на Qualcomm AR API изнутри
  • 20. Image targets Взгляд на Qualcomm AR API изнутри В качестве Image targets могут выступать любые нерегулярные текстуры, что является преимуществом по сравнению с традиционным QR кодами. Текстурам необязательно содержать специальные черные или белые области QCAR способен одновременно обрабатывать до 5 image targets . Каждый image target имеет уникальный идентификатор. Центр координат находится по центру текстуры. После обработки на сервере QCAR возвращает необходимую информацию, в том числе размеры текстуры в модельной системе координат пользователя.
  • 21. MultiImage targets Взгляд на Qualcomm AR API изнутри MultiImage targets это объекты, состоящие из нескольких Image targets, закрепленных в пространстве в некотором отношении друг к другу. Multi Image Targets могут быть созданы на лету в на основе существующих Image Targets. MultiImage targets идентифицируются и отображаются хотя бы по одной их найденых MultiImage targets.
  • 22. Рамочные маркеры Взгляд на Qualcomm AR API изнутри Рамочные маркеры (Frame Markers) в отличие от Image Targets в виду простоты не требуют регистрации на TMA. Кроме того привязку к новым frame markers можно совершать в runtime. Маркеры дают прекрасную возможность получить дополнительную информацию в реальном времени. Маркер позволяет вставлять внутрь произвольную картинку. Всего может быть использовано 512 frame markers в приложении, однако одновременно определяться могут только 5. Маркеры доступны как и остальные trackable surfaces через общий список активных поверхностей.
  • 23. Виртуальные кнопки Взгляд на Qualcomm AR API изнутри Виртуальные кнопки это разработанные разработчиком прямоугольные регионы на Image Targets, которые, когда к ним прикасаются(фактически перекрывают) , генерируют событие нажатия. Виртуальные кнопки могут быть использованы для получения событий таких как нажатие кнопки или определение того что некоторые области в Image Target перекрыты другим объектом. Виртуальные кнопки могут срабатывать только находясь в прямой видимости камеры. Virtual buttons могут создаваться и удаляться в реальном времени и т.о. не требуют регистрации на сервере.
  • 24. Ключевые компоненты 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
  • 25. Что доступно разработчику Интеграция QCAR с приложением пользователя. Высокоуровневый доступ к аппаратным элементам (напр. Camera start/stop) Событийные обработчики (напр. Новый кадр с камеры доступен) Настройка и обработка trackable surface различных типов: Image Targets Multi-Image Targets Frame Markers Взаимодействие с внешним миром Virtual Buttons Open GL ES 1.1/2.0 совместимый интерфейс
  • 26. Интеграция с QCAR на уровне приложения QCAR предоставляет API доступ через Android NDK Логика основного приложения должна быть разделена между Android java уровнем и С++ NDK уровнем Инициализация всего приложения происходит на java уровне Два способа взаимодействия логики приложения и QCAR Интеграция QCAR с приложением пользователя I II
  • 27. Интеграция QCAR с приложением пользователя Работа с координатами QCAR управляет заполнением всех матриц Мировая матрица ModelView зависит от конкретной trackable surface Матрица перспективной проекции зависит от настроек камеры
  • 28. Алгоритм обработки каждого кадра для типичного приложения Работа с 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 с приложением пользователя
  • 29. Опыт использования QСAR в SIGMA Ukraine. Приложение AR-шашки Приложение является экспериментальным проектом и предлагает game play для двоих человек посредством одного устройства. Основные моменты: Был выбран второй способ взаимодействия с Android NDK как наиболее производительный на момент написания приложения QCAR OpenGLES поддерживает не все функции, так не работали вершинные нормали, решение – наложение карты освещенности на текстуры Текущая реализация QCAR библиотеки не позволяла корректно закрывать приложение. Шахматная доска имеет регулянную структуру.
  • 30. 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.
  • 31. Спасибо за внимание 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

Editor's Notes

  • #2: \n \n \n \n Tadaaaaaaaaa...... \n (Dalo) \n \n \n
  • #3: \n \n \n \n \n
  • #4: \n \n \n \n \n
  • #5: \n \n \n \n \n
  • #6: \n \n \n \n \n
  • #7: \n \n \n \n \n
  • #8: \n \n \n \n \n
  • #9: \n \n \n \n \n
  • #10: \n \n \n \n \n
  • #11: \n \n \n \n \n
  • #12: \n \n \n \n \n
  • #13: \n \n \n \n \n
  • #14: \n \n \n \n \n
  • #15: \n \n \n \n \n
  • #16: \n \n \n \n \n
  • #17: \n \n \n \n \n
  • #18: \n \n \n \n \n
  • #19: \n \n \n \n \n
  • #20: \n \n \n \n \n
  • #21: \n \n \n \n \n
  • #22: \n \n \n \n \n
  • #23: \n \n \n \n \n
  • #24: \n \n \n \n \n
  • #25: \n \n \n \n \n
  • #26: \n \n \n \n \n
  • #27: \n \n \n \n \n
  • #28: \n \n \n \n \n
  • #29: \n \n \n \n \n
  • #30: \n \n \n \n \n
  • #31: \n \n \n \n \n
  • #32: \n \n \n \n \n