SlideShare a Scribd company logo
1 of 29
Download to read offline
A Step-by-step guide to

Building a Mobile Outdoor AR
Application
Gun Lee
21 Nov. 2013
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Outdoor AR Browsers

Wikitude

Layar

Junaio
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

SW Dev. Tools & Frameworks
 High-level content description
 AR Browsers
 Hard to customize app logic and UI

 Low-level functional modules
 Programming libraries
 Lack of higher-level abstraction of AR scene
and content (BYO)
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Outdoor AR Framework
 High-level abstraction and low-level
programming support in a seamless way.
 Low-level functional modules
- Flexible and highly customizable

 Ready-to-use high level components
- Focus on building the interface, behavior and
content of the application rather than system
integration

 The high-level and low-level tools share the
common scene (or POI) data structure
- Both skilled and novice developers can work
together under the same framework.
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Apps built with OAR Framework

[CityViewAR 2011]

[CCDU 3D 2012]

[GeoBoids 3D 2012]

[AntarcticAR 2012]
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Outdoor AR Framework
 Covers full tier of ready-to-use
components, yet highly customizable
Mobile Device (Client)

Server

Mobile AR Application

Application Service

Mobile SW Library

Data
Communication

Server SW Library

(Optional)
Scene
data

Media
data

Mobile OS

Scene
data

Media
data

Server OS
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Server Software and Tools
Mobile Client
(App)

Server

Web Client
(Browser)

AR View

Web-based
Authoring Tool

HTML

Data
Manager

RESTful API

Javascript

Local
cache

Scene
Database
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Server Software and Tools
 Web-based Authoring Tool
 Please sign up for closed beta – Jan 2014
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Outdoor AR Library
 For mobile app (client)
 Android (v2.2 or above)
 Google Maps API

 Scenegraph based rendering engine
 OpenGL ES (1.1 and 2.0)

 Free download from our website:
http://www.hitlabnz.org/mobileAR
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Outdoor AR Library Structure
Service Component Layer
Views
Controllers
Models

Map View

AR View

List View

Map
Component

AR
Component

List
Component

Scene Data Manager

Tracking Data Manager

Functional Component Layer

Scene Data
Structures

Tracking
Sensors

3D Graphics
Rendering

3D
Sound

UI Views

Tools &
Utilities
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Model-View-Component
Controller
Application Logic &
Data Binding

Model

View

Scene & Tracking
Data Managers

Visualization &
UI Elements
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Mobile App Software Library
 Customization by extending components
 Customized AR scenes
- Customize scene class data structure

 Customized user interface
- Customize UI layout
- Customize UI behavior (e.g. onSceneSelected)
- Motion and touch gesture based interaction
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Step-by-step Guide






Setup the development environment
Create an Android app
Using the Outdoor AR Library in your app
Adding outdoor AR scenes with 3D models
Customizing UI

 Run your app on a Google Glass
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Setup the dev environment
 Prerequisite
 Android Development Environment
- http://developer.android.com/sdk/index.html
- Eclipse, Android SDK

 Google Play Services Library (for maps)

 Download the Outdoor AR Library
 http://www.hitlabnz.org/mobileAR
- Download, Tutorials, Forum
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Setup the dev environment
 Import the library and sample projects
 OutdoorARLibrary
 SampleOAComponent

 Dependency
 Google (not Android) API 4.1.2 (API Level 16)
 Google Play Services Library
- extras/google/google_play_services/libproject

 Android Support Library 4
- extras/android/compatibility/v4/
android-support-v4.jar
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Create an Android app
 Create a new Android Application project
 Blank Activity
- “An activity is a single, focused thing that the user
can do.” – Android SDK API Reference

 Anatomy of an Android App project





src
res & gen
assets
AndroidManifest.xml

 Add a “Hello MGIA” button
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Using the OA Library in your app
 Add the Outdoor AR Library to your
project’s build path
 Add permissions in the manifest
 Add a new AR view (activity)
 Create a custom class inheriting
OAARComponentBase
 Add activity to the manifest
- Full screen landscape style preferred

 Wire a button to start the AR view
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Adding scenes with 3D models
 Preparing 3D model
 OBJ/MTL with JPEG or PNG textures
 OpenGL Coordinate frame
- X-right, Y-up, Z-out from screen
- North = -Z

 Placing the 3D model in the real world
 Latitude, Longitude
- http://itouchmap.com/latlong.html

 Optionally, elevation from the ground plane
 SketchUp – 3D model on Google Earth
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Adding scenes with 3D models
 Adding 3D models to the project
 assets/OutdoorAR/3Dmodels(/name/model.obj)

 Adding scenes to the data manager
 Override onSetupScenes()

 Handling the scene selection event
 Override onSceneSelected()

 Using a mock location
 Override onCreate()
 Sensor manager’s enableMockLocation()
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Loading and managing scenes
 Add scenes by code – difficult to manage
 Load from assets or local file storage
 OADataManagerAssets
 OADataManagerLocal

 SQLite or XML file
 SQLite Database Browser
 Default path
- (assets/)OutdoorAR/scenes.db
- (assets/)OutdoorAR/scenes.xml
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Custom scene class
 OAScene
 Lat/Lon, 3D model, Name, Description,
Category

 Custom scene classes extend OAScene
 Override OADataManager’s loadScene()
to load in custom properties of your scene
 Cast OAScene to your custom class in
onSceneSelected() or onTouchedScene()
 Different scene classes can live together
- if(scene instanceof MyCustomScene)
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Customizing UI
 Add layout resource
 Override setupUILayout()
 LayoutInflater - read in the layout res file
 addContentView() - overlay UI layout on top
of AR view
 findViewById() - get reference to the UI
elements

 onSceneSelected() vs. onTouchedScene()
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Map and List views
 OAMapComponentBase, OAListComponentBase
 Similar class structure with OAARComponentBase
- Load scenes from a data manager
- setupXYZ() methods
- onSceneSelected() callback

 Map components needs API key
 Google Maps Android API v2
- OAGoogleMapsV2ComponentBase

 https://developers.google.com/maps/documentation/an
droid/start
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Run your app on Google Glass
 Startup with AR
 Set AR view as a launcher activity in the app
manifest file

 Aim to select
 Use Timer to trigger touch events at the
center of the screen
 Override onResume() and onPause() to
start/stop the timer
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Other tips for Google Glass
 Touch gestures
 onGenericMotionEvent()
 Swipe forward/backward/up
 Tap, double tap, tap and hold, etc.

 Head motion
 Add orientation listener to sensor manager
- getSensorManager().addSensorListener()

 Avoid conflicts with AR scene viewing motions
- Time-outs
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

Other tips for Google Glass
 GPS sensor blocked
 Stream location from a phone through
Bluetooth
 Mock location

 Turning off camera background
 Application dependent
 Override setupOptions()
 enableCameraBackground()
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

CityViewAR for Glass
Demo
Thank you!
SYMPOSIUM ON MOBILE GRAPHICS
AND INTERACTIVE APPLICATIONS

More Information
 Website
 http://www.hitlabnz.org/mobileAR
 http://arforglass.org

 Gun Lee
 gun.lee@hitlabnz.org

 Mark Billinghurst
 mark.billinghurst@hitlabnz.org

More Related Content

What's hot

2013 426 Lecture 2: Augmented Reality Technology
2013 426 Lecture 2:  Augmented Reality Technology2013 426 Lecture 2:  Augmented Reality Technology
2013 426 Lecture 2: Augmented Reality TechnologyMark Billinghurst
 
Augmented Reality Application - Final Year Project
Augmented Reality Application - Final Year ProjectAugmented Reality Application - Final Year Project
Augmented Reality Application - Final Year ProjectYash Kaushik
 
google tango technology Seminar report
google tango technology Seminar reportgoogle tango technology Seminar report
google tango technology Seminar reportRUPESHKUMAR633
 
Geospatial Visualization in Place
Geospatial Visualization in PlaceGeospatial Visualization in Place
Geospatial Visualization in PlaceMark Billinghurst
 
2014 COSC 426 Lecture 2: Augmented Reality Technology
2014 COSC 426 Lecture 2: Augmented Reality Technology2014 COSC 426 Lecture 2: Augmented Reality Technology
2014 COSC 426 Lecture 2: Augmented Reality TechnologyMark Billinghurst
 
Project tango
Project tangoProject tango
Project tangosabi_123
 
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_larger
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_largerRilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_larger
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_largerRilwan Kujenya
 
IRJET - Optimized Travel Planner
IRJET -  	  Optimized Travel PlannerIRJET -  	  Optimized Travel Planner
IRJET - Optimized Travel PlannerIRJET Journal
 
UbiquitousVirtualReality2010
UbiquitousVirtualReality2010 UbiquitousVirtualReality2010
UbiquitousVirtualReality2010 Woontack Woo
 
Google's project tango seminar ppt
Google's project tango seminar pptGoogle's project tango seminar ppt
Google's project tango seminar pptAamir Hilal
 
Augmented Reality with Project Tango - Droidcon 2016 Berlin
Augmented Reality with Project Tango - Droidcon 2016 BerlinAugmented Reality with Project Tango - Droidcon 2016 Berlin
Augmented Reality with Project Tango - Droidcon 2016 BerlinDominik Helleberg
 
Geo location based augmented reality application
Geo location based augmented reality applicationGeo location based augmented reality application
Geo location based augmented reality applicationeSAT Journals
 
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project Tango
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project TangoJared Finder (Google) Creating Mixed Reality Apps and Games with Project Tango
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project TangoAugmentedWorldExpo
 
Augmented Reality
Augmented Reality Augmented Reality
Augmented Reality slire
 

What's hot (20)

2013 426 Lecture 2: Augmented Reality Technology
2013 426 Lecture 2:  Augmented Reality Technology2013 426 Lecture 2:  Augmented Reality Technology
2013 426 Lecture 2: Augmented Reality Technology
 
Augmented reality
Augmented realityAugmented reality
Augmented reality
 
Augmented Reality Application - Final Year Project
Augmented Reality Application - Final Year ProjectAugmented Reality Application - Final Year Project
Augmented Reality Application - Final Year Project
 
Augmented reality
Augmented realityAugmented reality
Augmented reality
 
google tango technology Seminar report
google tango technology Seminar reportgoogle tango technology Seminar report
google tango technology Seminar report
 
Geospatial Visualization in Place
Geospatial Visualization in PlaceGeospatial Visualization in Place
Geospatial Visualization in Place
 
2014 COSC 426 Lecture 2: Augmented Reality Technology
2014 COSC 426 Lecture 2: Augmented Reality Technology2014 COSC 426 Lecture 2: Augmented Reality Technology
2014 COSC 426 Lecture 2: Augmented Reality Technology
 
Ijetcas16 208
Ijetcas16 208Ijetcas16 208
Ijetcas16 208
 
3D in Android
3D in Android3D in Android
3D in Android
 
Project tango
Project tangoProject tango
Project tango
 
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_larger
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_largerRilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_larger
RilwanKujenyaBDSDDVBAC-Thesis-HYDRAAR_larger
 
IRJET - Optimized Travel Planner
IRJET -  	  Optimized Travel PlannerIRJET -  	  Optimized Travel Planner
IRJET - Optimized Travel Planner
 
UbiquitousVirtualReality2010
UbiquitousVirtualReality2010 UbiquitousVirtualReality2010
UbiquitousVirtualReality2010
 
Google's project tango seminar ppt
Google's project tango seminar pptGoogle's project tango seminar ppt
Google's project tango seminar ppt
 
426 lecture2: AR Technology
426 lecture2: AR Technology426 lecture2: AR Technology
426 lecture2: AR Technology
 
Augmented Reality with Project Tango - Droidcon 2016 Berlin
Augmented Reality with Project Tango - Droidcon 2016 BerlinAugmented Reality with Project Tango - Droidcon 2016 Berlin
Augmented Reality with Project Tango - Droidcon 2016 Berlin
 
Geo location based augmented reality application
Geo location based augmented reality applicationGeo location based augmented reality application
Geo location based augmented reality application
 
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project Tango
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project TangoJared Finder (Google) Creating Mixed Reality Apps and Games with Project Tango
Jared Finder (Google) Creating Mixed Reality Apps and Games with Project Tango
 
Augmented reality
Augmented realityAugmented reality
Augmented reality
 
Augmented Reality
Augmented Reality Augmented Reality
Augmented Reality
 

Similar to A Step-by-step guide to Building a Mobile Outdoor AR Application

Power of React Native
Power of React NativePower of React Native
Power of React NativeMurugan Durai
 
IRJET- Augmented Reality based Building Modelling
IRJET- Augmented Reality based Building Modelling IRJET- Augmented Reality based Building Modelling
IRJET- Augmented Reality based Building Modelling IRJET Journal
 
Technology and Android.pptx
Technology and Android.pptxTechnology and Android.pptx
Technology and Android.pptxmuthulakshmi cse
 
Android L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesAndroid L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesMohammad Shaker
 
Design and development of a CityGML Visualization Tool
Design and development of a CityGML Visualization ToolDesign and development of a CityGML Visualization Tool
Design and development of a CityGML Visualization Tool3DGIS
 
Highly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and MagnoliaHighly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and MagnoliaMagnolia
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android AppsGil Irizarry
 
Basic android development
Basic android developmentBasic android development
Basic android developmentUpanya Singh
 
Basic android development
Basic android developmentBasic android development
Basic android developmentUpanya Singh
 
GIS Based Project Planning and Management
GIS Based Project Planning and ManagementGIS Based Project Planning and Management
GIS Based Project Planning and ManagementSaurabhChobe
 
Handheld augmented reality_for_underground_infrast
Handheld augmented reality_for_underground_infrastHandheld augmented reality_for_underground_infrast
Handheld augmented reality_for_underground_infrastHelloWorld121381
 
Self Guiding User Experience
Self Guiding User ExperienceSelf Guiding User Experience
Self Guiding User ExperienceSri Ambati
 
GI2013 ppt buono_seismic_geo_sdi
GI2013 ppt buono_seismic_geo_sdiGI2013 ppt buono_seismic_geo_sdi
GI2013 ppt buono_seismic_geo_sdiIGN Vorstand
 
mobile application development -unit-3-
mobile application development  -unit-3-mobile application development  -unit-3-
mobile application development -unit-3-TejamFandat
 
IRJET- Proposed Design for 3D Map Generation using UAV
IRJET- Proposed Design for 3D Map Generation using UAVIRJET- Proposed Design for 3D Map Generation using UAV
IRJET- Proposed Design for 3D Map Generation using UAVIRJET Journal
 
Introduction to Android Programming
Introduction to Android ProgrammingIntroduction to Android Programming
Introduction to Android ProgrammingRaveendra R
 
A Uniform Specification Of Mixed Reality Interface Components
A Uniform Specification Of Mixed Reality Interface ComponentsA Uniform Specification Of Mixed Reality Interface Components
A Uniform Specification Of Mixed Reality Interface ComponentsNicole Heredia
 

Similar to A Step-by-step guide to Building a Mobile Outdoor AR Application (20)

Power of React Native
Power of React NativePower of React Native
Power of React Native
 
IRJET- Augmented Reality based Building Modelling
IRJET- Augmented Reality based Building Modelling IRJET- Augmented Reality based Building Modelling
IRJET- Augmented Reality based Building Modelling
 
Technology and Android.pptx
Technology and Android.pptxTechnology and Android.pptx
Technology and Android.pptx
 
Android L08 - Google Maps and Utilities
Android L08 - Google Maps and UtilitiesAndroid L08 - Google Maps and Utilities
Android L08 - Google Maps and Utilities
 
Design and development of a CityGML Visualization Tool
Design and development of a CityGML Visualization ToolDesign and development of a CityGML Visualization Tool
Design and development of a CityGML Visualization Tool
 
Android ui with xml
Android ui with xmlAndroid ui with xml
Android ui with xml
 
Highly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and MagnoliaHighly Scalable User Experience Design: Vaadin and Magnolia
Highly Scalable User Experience Design: Vaadin and Magnolia
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
Basic android development
Basic android developmentBasic android development
Basic android development
 
Basic android development
Basic android developmentBasic android development
Basic android development
 
GIS Based Project Planning and Management
GIS Based Project Planning and ManagementGIS Based Project Planning and Management
GIS Based Project Planning and Management
 
Handheld augmented reality_for_underground_infrast
Handheld augmented reality_for_underground_infrastHandheld augmented reality_for_underground_infrast
Handheld augmented reality_for_underground_infrast
 
Self Guiding User Experience
Self Guiding User ExperienceSelf Guiding User Experience
Self Guiding User Experience
 
GI2013 ppt buono_seismic_geo_sdi
GI2013 ppt buono_seismic_geo_sdiGI2013 ppt buono_seismic_geo_sdi
GI2013 ppt buono_seismic_geo_sdi
 
mobile application development -unit-3-
mobile application development  -unit-3-mobile application development  -unit-3-
mobile application development -unit-3-
 
Mobile Application Developer
Mobile Application DeveloperMobile Application Developer
Mobile Application Developer
 
Location Based Services Without the Cocoa
Location Based Services Without the CocoaLocation Based Services Without the Cocoa
Location Based Services Without the Cocoa
 
IRJET- Proposed Design for 3D Map Generation using UAV
IRJET- Proposed Design for 3D Map Generation using UAVIRJET- Proposed Design for 3D Map Generation using UAV
IRJET- Proposed Design for 3D Map Generation using UAV
 
Introduction to Android Programming
Introduction to Android ProgrammingIntroduction to Android Programming
Introduction to Android Programming
 
A Uniform Specification Of Mixed Reality Interface Components
A Uniform Specification Of Mixed Reality Interface ComponentsA Uniform Specification Of Mixed Reality Interface Components
A Uniform Specification Of Mixed Reality Interface Components
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
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
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
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
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 

A Step-by-step guide to Building a Mobile Outdoor AR Application

  • 1. A Step-by-step guide to Building a Mobile Outdoor AR Application Gun Lee 21 Nov. 2013
  • 2. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Outdoor AR Browsers Wikitude Layar Junaio
  • 3. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS SW Dev. Tools & Frameworks  High-level content description  AR Browsers  Hard to customize app logic and UI  Low-level functional modules  Programming libraries  Lack of higher-level abstraction of AR scene and content (BYO)
  • 4. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Outdoor AR Framework  High-level abstraction and low-level programming support in a seamless way.  Low-level functional modules - Flexible and highly customizable  Ready-to-use high level components - Focus on building the interface, behavior and content of the application rather than system integration  The high-level and low-level tools share the common scene (or POI) data structure - Both skilled and novice developers can work together under the same framework.
  • 5. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Apps built with OAR Framework [CityViewAR 2011] [CCDU 3D 2012] [GeoBoids 3D 2012] [AntarcticAR 2012]
  • 6. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Outdoor AR Framework  Covers full tier of ready-to-use components, yet highly customizable Mobile Device (Client) Server Mobile AR Application Application Service Mobile SW Library Data Communication Server SW Library (Optional) Scene data Media data Mobile OS Scene data Media data Server OS
  • 7. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Server Software and Tools Mobile Client (App) Server Web Client (Browser) AR View Web-based Authoring Tool HTML Data Manager RESTful API Javascript Local cache Scene Database
  • 8. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Server Software and Tools  Web-based Authoring Tool  Please sign up for closed beta – Jan 2014
  • 9. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Outdoor AR Library  For mobile app (client)  Android (v2.2 or above)  Google Maps API  Scenegraph based rendering engine  OpenGL ES (1.1 and 2.0)  Free download from our website: http://www.hitlabnz.org/mobileAR
  • 10. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Outdoor AR Library Structure Service Component Layer Views Controllers Models Map View AR View List View Map Component AR Component List Component Scene Data Manager Tracking Data Manager Functional Component Layer Scene Data Structures Tracking Sensors 3D Graphics Rendering 3D Sound UI Views Tools & Utilities
  • 11. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Model-View-Component Controller Application Logic & Data Binding Model View Scene & Tracking Data Managers Visualization & UI Elements
  • 12. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Mobile App Software Library  Customization by extending components  Customized AR scenes - Customize scene class data structure  Customized user interface - Customize UI layout - Customize UI behavior (e.g. onSceneSelected) - Motion and touch gesture based interaction
  • 13. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Step-by-step Guide      Setup the development environment Create an Android app Using the Outdoor AR Library in your app Adding outdoor AR scenes with 3D models Customizing UI  Run your app on a Google Glass
  • 14. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Setup the dev environment  Prerequisite  Android Development Environment - http://developer.android.com/sdk/index.html - Eclipse, Android SDK  Google Play Services Library (for maps)  Download the Outdoor AR Library  http://www.hitlabnz.org/mobileAR - Download, Tutorials, Forum
  • 15. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Setup the dev environment  Import the library and sample projects  OutdoorARLibrary  SampleOAComponent  Dependency  Google (not Android) API 4.1.2 (API Level 16)  Google Play Services Library - extras/google/google_play_services/libproject  Android Support Library 4 - extras/android/compatibility/v4/ android-support-v4.jar
  • 16. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Create an Android app  Create a new Android Application project  Blank Activity - “An activity is a single, focused thing that the user can do.” – Android SDK API Reference  Anatomy of an Android App project     src res & gen assets AndroidManifest.xml  Add a “Hello MGIA” button
  • 17. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Using the OA Library in your app  Add the Outdoor AR Library to your project’s build path  Add permissions in the manifest  Add a new AR view (activity)  Create a custom class inheriting OAARComponentBase  Add activity to the manifest - Full screen landscape style preferred  Wire a button to start the AR view
  • 18. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Adding scenes with 3D models  Preparing 3D model  OBJ/MTL with JPEG or PNG textures  OpenGL Coordinate frame - X-right, Y-up, Z-out from screen - North = -Z  Placing the 3D model in the real world  Latitude, Longitude - http://itouchmap.com/latlong.html  Optionally, elevation from the ground plane  SketchUp – 3D model on Google Earth
  • 19. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Adding scenes with 3D models  Adding 3D models to the project  assets/OutdoorAR/3Dmodels(/name/model.obj)  Adding scenes to the data manager  Override onSetupScenes()  Handling the scene selection event  Override onSceneSelected()  Using a mock location  Override onCreate()  Sensor manager’s enableMockLocation()
  • 20. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Loading and managing scenes  Add scenes by code – difficult to manage  Load from assets or local file storage  OADataManagerAssets  OADataManagerLocal  SQLite or XML file  SQLite Database Browser  Default path - (assets/)OutdoorAR/scenes.db - (assets/)OutdoorAR/scenes.xml
  • 21. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Custom scene class  OAScene  Lat/Lon, 3D model, Name, Description, Category  Custom scene classes extend OAScene  Override OADataManager’s loadScene() to load in custom properties of your scene  Cast OAScene to your custom class in onSceneSelected() or onTouchedScene()  Different scene classes can live together - if(scene instanceof MyCustomScene)
  • 22. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Customizing UI  Add layout resource  Override setupUILayout()  LayoutInflater - read in the layout res file  addContentView() - overlay UI layout on top of AR view  findViewById() - get reference to the UI elements  onSceneSelected() vs. onTouchedScene()
  • 23. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Map and List views  OAMapComponentBase, OAListComponentBase  Similar class structure with OAARComponentBase - Load scenes from a data manager - setupXYZ() methods - onSceneSelected() callback  Map components needs API key  Google Maps Android API v2 - OAGoogleMapsV2ComponentBase  https://developers.google.com/maps/documentation/an droid/start
  • 24. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Run your app on Google Glass  Startup with AR  Set AR view as a launcher activity in the app manifest file  Aim to select  Use Timer to trigger touch events at the center of the screen  Override onResume() and onPause() to start/stop the timer
  • 25. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Other tips for Google Glass  Touch gestures  onGenericMotionEvent()  Swipe forward/backward/up  Tap, double tap, tap and hold, etc.  Head motion  Add orientation listener to sensor manager - getSensorManager().addSensorListener()  Avoid conflicts with AR scene viewing motions - Time-outs
  • 26. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS Other tips for Google Glass  GPS sensor blocked  Stream location from a phone through Bluetooth  Mock location  Turning off camera background  Application dependent  Override setupOptions()  enableCameraBackground()
  • 27. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS CityViewAR for Glass Demo
  • 29. SYMPOSIUM ON MOBILE GRAPHICS AND INTERACTIVE APPLICATIONS More Information  Website  http://www.hitlabnz.org/mobileAR  http://arforglass.org  Gun Lee  gun.lee@hitlabnz.org  Mark Billinghurst  mark.billinghurst@hitlabnz.org