SlideShare a Scribd company logo
1 of 32
Creating Novel Augmented Reality
  Applications for Mobile Users

                    www.diotasoft.com

Sebastian Knödel                        Ludovic Perrier

skn@diotasoft.com
                                     lpe@diotasoft.com
sekont.tumblr.com
                                         ludovic_perrier
      sekond


                        Breizhcamp                         1
Content

Brief History of Mobile AR
Mobile AR SDKs & APIs
iCyclope for IPhone
Qualcomm AR SDK (QCAR)
QCAR & Unity3D
Mobile AR Games
Future of mobile AR

                  Breizhcamp   2
What is mobile AR good for?
        Services
                 - Information visualization
                 - Navigation
        Games
        Promotion, Advertising
        Industrial Applications                                                        Courtesy Qualcomm




                                                    Why now?
                                                    Because todays Smart Phones are able to!

                                                    - Hardware (computing capacity, sensors,
                                                     cameras, screensize, …)
                                                    - Software, powerful SDKs (Android, Iphone,
                                                     QCAR, …)
Courtesy Layar

                                               Breizhcamp                                 3
Mobile Augmented Reality


Milgram's Continuum
                        Mixed Reality


     Real      Augmented                  Augmented        Virtual
 Environment   Environment                 Virtuality   Environment




                             Breizhcamp                               4
Whats the problem?




Where am I ?




               Breizhcamp   5
Brief History of Mobile AR

Sensor based tracking
   GPS position
   Compass orientation
                                          Courtesy Wikitude   Wikitude   2009




Vision based tracking




                           Courtesy TU Graz


  Special Marker 1999    ARToolkitPlus 2007                    NyARToolkit 2009
                           Breizhcamp                                      6
Vision-based Tracking
Calculate camera position and orientation relative to
markers – image registration



1. Stage                            2. Stage
  Feature Detection                   Coordinate system




                       Breizhcamp                     7
ARToolkit




  Breizhcamp   8
Natural feature-based tracking




             Breizhcamp     9
Brief History of Mobile AR
            Vision based tracking




                                     Courtesy Qualcomm


                                     Qualcomm AR




                                        Courtesy Metaio

                                     Metaio/Juneio
Diotasoft – iCyclope – Werber 2010

                     Breizhcamp                10
iCylcope

Video & Sound




    Capture Camera & Tracking




                       Rendering OpenGL ES


                Breizhcamp                   11
Video & Sound

             Sound mp3                 Video pvr




video = [Video alloc];

for (int i = 0; i < countFile; i++){

     [imgDataArray addObject:[[NSData alloc] 

     
     
     
     
     initWithContentsOfFile:path]];
}




                          Breizhcamp                12
Camera Capture & Tracking

 Capture camera image
/*We setup the input*/
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput …];

/*We setup the output*/
AVCaptureVideoDataOutput *captureOutput =

      
     
      
      [AVCaptureVideoDataOutput alloc] ..]; 




From image to position
bool mTracked = 

      [tracking imgPointer width:width height:height :position];


                            Breizhcamp                    13
Rendering OpenGL ES

    initTexture();

    updateTexture();

    updatePlaneForVideo();




updateTexture(){

      NSData * data = [mVideo getCurrentImage];

       glCompressedTexImage2D(GL_TEXTURE_2D, …, [data bytes])

}

                              Breizhcamp              14
Mobile AR SDKs & APIs

Proprietary                Public




              Breizhcamp            15
Qualcomm AR SDK (QCAR)
Different target types




                         Breizhcamp   16
Workflow QCAR
Target Images

                             Mobile application

                               App Logic &
                             Rendering Engine




                                Target Position
  QDevNet

                                QCAR library


                              Target Resources


                Breizhcamp                        17
QCAR API



Virtual   Multi Image      Image
Button      Target         Target
                                       Marker    Developer Application



                 Tracker



                        Camera                      Rendering



                                     Android


                                    Breizhcamp                    18
Developing with QCAR
myAR_App.java
/** The main activity for the myAR_App */
public class myAR_App extends Activity{…}



      myAR_Renderer.java
      /** The renderer class for the myAR_App activity. */
      public class myAR_Renderer implements GLSurfaceView.Renderer{…}



              myAR_GLView.java
              /** Configuring an translucent OpenGL surface view */
              public class myAR_GLView extends GLSurfaceView{…}



                       myAR_NativeRenderer.cpp
                       /** OpenGL Rendering */
                       myNativeRenderFrame(JNIEnv *, jobject){…}



                                      Breizhcamp                         19
Developing with QCAR
myAR_App


/** The main activity for the myAR_App */
public class myAR_App extends Activity
{
     protected void onCreate(Bundle savedInstanceState)
     {
        loadTextures();

          // init myAR_GLView, init myAR_Renderer, ScreenOrientation, SplashScreen 
          initApplication(); 

          mInitQCARTask = new InitQCARTask(); // Initialize QCAR asynchronously.
          mInitQCARTask.execute();

          mLoadTrackerTask = new LoadTrackerTask();   // Load the tracking data
          mInitQCARTask.execute();

          onQCARInitializedNative();//tracking of multiple targets simultaneously

          startCamera(); 
     }
}



                                      Breizhcamp                                     20
Developing with QCAR
myAR_GLView


/** Configuring an translucent OpenGL surface view */
public class myAR_GLView extends GLSurfaceView
{
    public void init(int flags, boolean translucent, int depth, int stencil)
    {
        this.getHolder().setFormat(PixelFormat.TRANSLUCENT);

          setOpenGLContext(1.1/2.0);
     }
}




                                        Breizhcamp                              21
Developing with QCAR
myAR_Renderer

/** The renderer class for the myAR_App activity. */
public class myAR_Renderer implements GLSurfaceView.Renderer
{
    public void onSurfaceCreated(GL10 gl, EGLConfig config)
    {
        initRendering(); // native fct
        QCAR.onSurfaceCreated();
    }

     /** Called when the surface changed size. */
     public void onSurfaceChanged(GL10 gl, int width, int height)
     {
         updateRendering(width, height); // native fct
         QCAR.onSurfaceChanged(width, height);
     }    

     /** Called to draw the current frame. */
     public void onDrawFrame(GL10 gl)
     {
         // Call native function to render content
         myRenderFrameNative();
     }
}



                                   Breizhcamp                        22
Developing with QCAR
myAR_NativeRenderer.cpp
myRenderFrameNative(JNIEnv *, jobject){

     glClear(…);

     // Render video background:    
     QCAR::Renderer::getInstance().begin();

     for(i … state.getNumActiveTrackables()) {

          QCAR::Trackable* trackable = state.getActiveTrackable(i);        

          modelViewMatrix = convertPose2GLMatrix(trackable->getPose());

          glMatrixMode(GL_MODELVIEW);          
          glLoadMatrixf(modelViewMatrix.data); 

          // Add Your OpenGLES 1.1/2.0 Render Code Here
          drawTeapot(); 

     }

     // finish GL Rendering
     QCAR::Renderer::getInstance().end();

}


                                     Breizhcamp                                23
Developing with QCAR




        Breizhcamp     24
QCAR and Unity3D




      Breizhcamp   25
QCAR and Unity3D




                   Workflow

                   •    Create Target QDevNet
                   •    Add target resources to project

                   •    Add ARCamera Prefab
                   •    Add myTarget Prefab
                   •    Add 3D objects, physics, shaders,
                        Game Logic, etc.
                   •    Deploy on Android device




      Breizhcamp                              26
Sound-plugin for Unity3D
                                JavaActivity.java
 SDK
                             SoundManager.java




 NDK                   NativeJavaBridge.CPP (JNI)




Unity3D            AndroidSoundPlugin.CS (C#)



          Breizhcamp                         27
Sound-plugin for Unity3D
        public class JavaClass{	     JavaActivity.java                                 SoundManager.java
        private Activity mActivity;	
                                                               public static void initSounds(Context theContext) 	
        public JavaClass(Activity currentActivity) {	
           mActivity = currentActivity;	
                                                               { 	
           SoundManager.initSounds(mActivity);	                   …	

SDK     }	                                                        mAudioManager = 	
                                                                  (AudioManager) mContext.getSystemService   	
        public int ActivitySoundPlay(int id, 	                    (Context.AUDIO_SERVICE); 	        	
           float volume) {	                                    }	
           return SoundManager.playSound(id, volume,…);	
        }	



         jint JNI_OnLoad(JavaVM* vm, void* reserved) {	
                                                                               NativeJavaBridge.CPP (JNI)
              jclass cls_Activity    = jni_env->FindClass("com/unity3d/player/UnityPlayer");	
              jclass cls_JavaClass   = jni_env->FindClass("com/diotasoft/pluginunity/JavaClass");	
              activitySoundPlay      = jni_env->GetMethodID(cls_JavaClass, "ActivitySoundPlay", "(IFFIF)I");	
              …	
         }	
NDK      int playSound(int index, float volume, int repeat, float pitch) {	
            jint currentStream = (jint)jni_env->CallObjectMethod(JavaClass, activitySoundPlay, index, volume,
         repeat, pitch);	
            …	
         }	




        public class AndroidSoundPoolPlugin : MonoBehaviour {	
                                                                            AndroidSoundPlugin.CS (C#)

              [DllImport("javabridge")]	
Unity         private static extern int playSound(int index, float volume, int repeat, float pitch);	
              [DllImport("javabridge")]	
              private static extern void stopSound(int currentStream);	
        };	
                                                           Breizhcamp                                           28
Diotasoft Games




The Circus                ARLabyrinth


             Breizhcamp                 29
Conclusions

     QCAR Android                             QCAR Unity
       SDK/NDK
                                       • Closed system
• Open system (hands on)

                                       • Fast content creation
• Existant code integration

                                       • Plugins & profiling
• Features you implement

                                       • Rich feature sets provided
• Developer community




                              Breizhcamp                         30
Future is Markerless




        Breizhcamp     31
Merci beaucoup




     Breizhcamp   32

More Related Content

What's hot

List ofsuparco projectsforuniversities
List ofsuparco projectsforuniversitiesList ofsuparco projectsforuniversities
List ofsuparco projectsforuniversitiesMr SMAK
 
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​KLab Inc. / Tech
 
TechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance InteroperabilityTechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance InteroperabilityTrivadis
 
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PXNVIDIA Japan
 
sdc-2016-gvrf-and-io_public
sdc-2016-gvrf-and-io_publicsdc-2016-gvrf-and-io_public
sdc-2016-gvrf-and-io_publicRick Lau
 
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin Coumans
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin CoumansGS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin Coumans
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin CoumansAMD Developer Central
 

What's hot (9)

List ofsuparco projectsforuniversities
List ofsuparco projectsforuniversitiesList ofsuparco projectsforuniversities
List ofsuparco projectsforuniversities
 
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~​
 
Parallel Vision by GPGPU/CUDA
Parallel Vision by GPGPU/CUDAParallel Vision by GPGPU/CUDA
Parallel Vision by GPGPU/CUDA
 
Duel of Two Libraries: Cairo & Skia
Duel of Two Libraries: Cairo & SkiaDuel of Two Libraries: Cairo & Skia
Duel of Two Libraries: Cairo & Skia
 
TechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance InteroperabilityTechEvent Graal(VM) Performance Interoperability
TechEvent Graal(VM) Performance Interoperability
 
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
 
sdc-2016-gvrf-and-io_public
sdc-2016-gvrf-and-io_publicsdc-2016-gvrf-and-io_public
sdc-2016-gvrf-and-io_public
 
Qt Programming on TI Processors
Qt Programming on TI ProcessorsQt Programming on TI Processors
Qt Programming on TI Processors
 
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin Coumans
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin CoumansGS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin Coumans
GS-4150, Bullet 3 OpenCL Rigid Body Simulation, by Erwin Coumans
 

Similar to Breizhcamp Rennes 2011

Paug paris 2011
Paug paris 2011Paug paris 2011
Paug paris 2011sekond0
 
Philipp Nagele (Wikitude) Wikitude SDK Tutorial
Philipp Nagele (Wikitude) Wikitude SDK Tutorial Philipp Nagele (Wikitude) Wikitude SDK Tutorial
Philipp Nagele (Wikitude) Wikitude SDK Tutorial AugmentedWorldExpo
 
Augmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
Augmented World Expo 2013 Mobile AR SDK Comparison and TutorialAugmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
Augmented World Expo 2013 Mobile AR SDK Comparison and TutorialPatrick O'Shaughnessey
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer ToolsMark Billinghurst
 
Philipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with WikitudePhilipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with WikitudeAugmentedWorldExpo
 
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita GarciaUltracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita GarciaBeMyApp
 
COSC 426 Lect. 3 -AR Developer Tools
COSC 426 Lect. 3 -AR Developer ToolsCOSC 426 Lect. 3 -AR Developer Tools
COSC 426 Lect. 3 -AR Developer ToolsMark Billinghurst
 
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK AugmentedWorldExpo
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeMariano Carrizo
 
Extended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesExtended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesPhil Estes
 
Marker less augmentedd reality using computer vision
Marker less augmentedd reality using computer visionMarker less augmentedd reality using computer vision
Marker less augmentedd reality using computer visiongametester6
 
Shape12 6
Shape12 6Shape12 6
Shape12 6pslulli
 
Using Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision ApplicationsUsing Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision ApplicationsFarshid Pirahansiah
 
Rendering Techniques for Augmented Reality and a Look Ahead at AR Foundation
Rendering Techniques for Augmented Reality and a Look Ahead at AR FoundationRendering Techniques for Augmented Reality and a Look Ahead at AR Foundation
Rendering Techniques for Augmented Reality and a Look Ahead at AR FoundationUnity Technologies
 
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App..."Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...Edge AI and Vision Alliance
 
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014Patrick O'Shaughnessey
 
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro..."High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...Edge AI and Vision Alliance
 

Similar to Breizhcamp Rennes 2011 (20)

Paug paris 2011
Paug paris 2011Paug paris 2011
Paug paris 2011
 
Philipp Nagele (Wikitude) Wikitude SDK Tutorial
Philipp Nagele (Wikitude) Wikitude SDK Tutorial Philipp Nagele (Wikitude) Wikitude SDK Tutorial
Philipp Nagele (Wikitude) Wikitude SDK Tutorial
 
Augmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
Augmented World Expo 2013 Mobile AR SDK Comparison and TutorialAugmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
Augmented World Expo 2013 Mobile AR SDK Comparison and Tutorial
 
FLAR Workflow
FLAR WorkflowFLAR Workflow
FLAR Workflow
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools
 
Philipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with WikitudePhilipp Nagele (Wikitude): What's Next with Wikitude
Philipp Nagele (Wikitude): What's Next with Wikitude
 
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita GarciaUltracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
Ultracode Berlin #2 : Introduction to Perceptual Computing by Sulamita Garcia
 
COSC 426 Lect. 3 -AR Developer Tools
COSC 426 Lect. 3 -AR Developer ToolsCOSC 426 Lect. 3 -AR Developer Tools
COSC 426 Lect. 3 -AR Developer Tools
 
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK
Philipp Nagele (CTO, Wikitude) An Insider Deep-Dive into the Wikitude SDK
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
 
Extended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesExtended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use cases
 
Marker less augmentedd reality using computer vision
Marker less augmentedd reality using computer visionMarker less augmentedd reality using computer vision
Marker less augmentedd reality using computer vision
 
Shape12 6
Shape12 6Shape12 6
Shape12 6
 
AR
ARAR
AR
 
Using Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision ApplicationsUsing Deep Learning for Computer Vision Applications
Using Deep Learning for Computer Vision Applications
 
Rendering Techniques for Augmented Reality and a Look Ahead at AR Foundation
Rendering Techniques for Augmented Reality and a Look Ahead at AR FoundationRendering Techniques for Augmented Reality and a Look Ahead at AR Foundation
Rendering Techniques for Augmented Reality and a Look Ahead at AR Foundation
 
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App..."Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
"Snapdragon Hybrid Computer Vision/Deep Learning Architecture for Imaging App...
 
Augmented Reality Games
Augmented Reality GamesAugmented Reality Games
Augmented Reality Games
 
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014Mobile AR SDK Tutorial - Augmented World Expo New York 2014
Mobile AR SDK Tutorial - Augmented World Expo New York 2014
 
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro..."High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...
"High-resolution 3D Reconstruction on a Mobile Processor," a Presentation fro...
 

Recently uploaded

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Breizhcamp Rennes 2011

  • 1. Creating Novel Augmented Reality Applications for Mobile Users www.diotasoft.com Sebastian Knödel Ludovic Perrier skn@diotasoft.com lpe@diotasoft.com sekont.tumblr.com ludovic_perrier sekond Breizhcamp 1
  • 2. Content Brief History of Mobile AR Mobile AR SDKs & APIs iCyclope for IPhone Qualcomm AR SDK (QCAR) QCAR & Unity3D Mobile AR Games Future of mobile AR Breizhcamp 2
  • 3. What is mobile AR good for? Services - Information visualization - Navigation Games Promotion, Advertising Industrial Applications Courtesy Qualcomm Why now? Because todays Smart Phones are able to! - Hardware (computing capacity, sensors, cameras, screensize, …) - Software, powerful SDKs (Android, Iphone, QCAR, …) Courtesy Layar Breizhcamp 3
  • 4. Mobile Augmented Reality Milgram's Continuum Mixed Reality Real Augmented Augmented Virtual Environment Environment Virtuality Environment Breizhcamp 4
  • 5. Whats the problem? Where am I ? Breizhcamp 5
  • 6. Brief History of Mobile AR Sensor based tracking GPS position Compass orientation Courtesy Wikitude Wikitude 2009 Vision based tracking Courtesy TU Graz Special Marker 1999 ARToolkitPlus 2007 NyARToolkit 2009 Breizhcamp 6
  • 7. Vision-based Tracking Calculate camera position and orientation relative to markers – image registration 1. Stage 2. Stage Feature Detection Coordinate system Breizhcamp 7
  • 10. Brief History of Mobile AR Vision based tracking Courtesy Qualcomm Qualcomm AR Courtesy Metaio Metaio/Juneio Diotasoft – iCyclope – Werber 2010 Breizhcamp 10
  • 11. iCylcope Video & Sound Capture Camera & Tracking Rendering OpenGL ES Breizhcamp 11
  • 12. Video & Sound Sound mp3 Video pvr video = [Video alloc]; for (int i = 0; i < countFile; i++){ [imgDataArray addObject:[[NSData alloc] initWithContentsOfFile:path]]; } Breizhcamp 12
  • 13. Camera Capture & Tracking Capture camera image /*We setup the input*/ AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput …]; /*We setup the output*/ AVCaptureVideoDataOutput *captureOutput = [AVCaptureVideoDataOutput alloc] ..]; From image to position bool mTracked = [tracking imgPointer width:width height:height :position]; Breizhcamp 13
  • 14. Rendering OpenGL ES initTexture(); updateTexture(); updatePlaneForVideo(); updateTexture(){ NSData * data = [mVideo getCurrentImage]; glCompressedTexImage2D(GL_TEXTURE_2D, …, [data bytes]) } Breizhcamp 14
  • 15. Mobile AR SDKs & APIs Proprietary Public Breizhcamp 15
  • 16. Qualcomm AR SDK (QCAR) Different target types Breizhcamp 16
  • 17. Workflow QCAR Target Images Mobile application App Logic & Rendering Engine Target Position QDevNet QCAR library Target Resources Breizhcamp 17
  • 18. QCAR API Virtual Multi Image Image Button Target Target Marker Developer Application Tracker Camera Rendering Android Breizhcamp 18
  • 19. Developing with QCAR myAR_App.java /** The main activity for the myAR_App */ public class myAR_App extends Activity{…} myAR_Renderer.java /** The renderer class for the myAR_App activity. */ public class myAR_Renderer implements GLSurfaceView.Renderer{…} myAR_GLView.java /** Configuring an translucent OpenGL surface view */ public class myAR_GLView extends GLSurfaceView{…} myAR_NativeRenderer.cpp /** OpenGL Rendering */ myNativeRenderFrame(JNIEnv *, jobject){…} Breizhcamp 19
  • 20. Developing with QCAR myAR_App /** The main activity for the myAR_App */ public class myAR_App extends Activity { protected void onCreate(Bundle savedInstanceState) { loadTextures(); // init myAR_GLView, init myAR_Renderer, ScreenOrientation, SplashScreen initApplication(); mInitQCARTask = new InitQCARTask(); // Initialize QCAR asynchronously. mInitQCARTask.execute(); mLoadTrackerTask = new LoadTrackerTask(); // Load the tracking data mInitQCARTask.execute(); onQCARInitializedNative();//tracking of multiple targets simultaneously startCamera(); } } Breizhcamp 20
  • 21. Developing with QCAR myAR_GLView /** Configuring an translucent OpenGL surface view */ public class myAR_GLView extends GLSurfaceView { public void init(int flags, boolean translucent, int depth, int stencil) { this.getHolder().setFormat(PixelFormat.TRANSLUCENT); setOpenGLContext(1.1/2.0); } } Breizhcamp 21
  • 22. Developing with QCAR myAR_Renderer /** The renderer class for the myAR_App activity. */ public class myAR_Renderer implements GLSurfaceView.Renderer { public void onSurfaceCreated(GL10 gl, EGLConfig config) { initRendering(); // native fct QCAR.onSurfaceCreated(); } /** Called when the surface changed size. */ public void onSurfaceChanged(GL10 gl, int width, int height) { updateRendering(width, height); // native fct QCAR.onSurfaceChanged(width, height); } /** Called to draw the current frame. */ public void onDrawFrame(GL10 gl) { // Call native function to render content myRenderFrameNative(); } } Breizhcamp 22
  • 23. Developing with QCAR myAR_NativeRenderer.cpp myRenderFrameNative(JNIEnv *, jobject){ glClear(…); // Render video background: QCAR::Renderer::getInstance().begin(); for(i … state.getNumActiveTrackables()) { QCAR::Trackable* trackable = state.getActiveTrackable(i); modelViewMatrix = convertPose2GLMatrix(trackable->getPose()); glMatrixMode(GL_MODELVIEW); glLoadMatrixf(modelViewMatrix.data); // Add Your OpenGLES 1.1/2.0 Render Code Here drawTeapot(); } // finish GL Rendering QCAR::Renderer::getInstance().end(); } Breizhcamp 23
  • 24. Developing with QCAR Breizhcamp 24
  • 25. QCAR and Unity3D Breizhcamp 25
  • 26. QCAR and Unity3D Workflow •  Create Target QDevNet •  Add target resources to project •  Add ARCamera Prefab •  Add myTarget Prefab •  Add 3D objects, physics, shaders, Game Logic, etc. •  Deploy on Android device Breizhcamp 26
  • 27. Sound-plugin for Unity3D JavaActivity.java SDK SoundManager.java NDK NativeJavaBridge.CPP (JNI) Unity3D AndroidSoundPlugin.CS (C#) Breizhcamp 27
  • 28. Sound-plugin for Unity3D public class JavaClass{ JavaActivity.java SoundManager.java private Activity mActivity; public static void initSounds(Context theContext) public JavaClass(Activity currentActivity) { mActivity = currentActivity; { SoundManager.initSounds(mActivity); … SDK } mAudioManager = (AudioManager) mContext.getSystemService public int ActivitySoundPlay(int id, (Context.AUDIO_SERVICE); float volume) { } return SoundManager.playSound(id, volume,…); } jint JNI_OnLoad(JavaVM* vm, void* reserved) { NativeJavaBridge.CPP (JNI) jclass cls_Activity = jni_env->FindClass("com/unity3d/player/UnityPlayer"); jclass cls_JavaClass = jni_env->FindClass("com/diotasoft/pluginunity/JavaClass"); activitySoundPlay = jni_env->GetMethodID(cls_JavaClass, "ActivitySoundPlay", "(IFFIF)I"); … } NDK int playSound(int index, float volume, int repeat, float pitch) { jint currentStream = (jint)jni_env->CallObjectMethod(JavaClass, activitySoundPlay, index, volume, repeat, pitch); … } public class AndroidSoundPoolPlugin : MonoBehaviour { AndroidSoundPlugin.CS (C#) [DllImport("javabridge")] Unity private static extern int playSound(int index, float volume, int repeat, float pitch); [DllImport("javabridge")] private static extern void stopSound(int currentStream); }; Breizhcamp 28
  • 29. Diotasoft Games The Circus ARLabyrinth Breizhcamp 29
  • 30. Conclusions QCAR Android QCAR Unity SDK/NDK • Closed system • Open system (hands on) • Fast content creation • Existant code integration • Plugins & profiling • Features you implement • Rich feature sets provided • Developer community Breizhcamp 30
  • 31. Future is Markerless Breizhcamp 31
  • 32. Merci beaucoup Breizhcamp 32