Использование 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.
14.
15.
16.
Приблизительный стек приложения AR
Обзор Qualcomm AR API возможности и ограничения
17.
18.
19.
20.
21.
22.
23.
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.
26.
27.
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 с приложением пользователя