SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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...
 

Último

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Último (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

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