29
The Glass Class: AR on Glass July 7 th 11 th 2014 Mark Billinghurst, Gun Lee HIT Lab NZ University of Canterbury

The Glass Class - Tutorial 5 - Augmented Reality on Glass

  • Upload
    gun-lee

  • View
    1.397

  • Download
    3

Embed Size (px)

DESCRIPTION

Tutorial 5: Augmented Reality on Glass The Glass Class at HIT Lab NZ Learn how to program and develop for Google Glass. https://www.youtube.com/watch?v=smtvWeXLgJg&list=PLsIGb72j1WOlLFoJqkhyugDv-juTEAtas http://arforglass.org http://www.hitlabnz.org

Citation preview

Page 1: The Glass Class - Tutorial 5  - Augmented Reality on Glass

The Glass Class:

AR on Glass

July 7th – 11th 2014

Mark Billinghurst, Gun Lee

HIT Lab NZ

University of Canterbury

Page 2: The Glass Class - Tutorial 5  - Augmented Reality on Glass

http://www.arforglass.org

Page 3: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Demo

- CityViewAR for Glass

Page 4: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Outdoor AR Framework

Outdoor AR Visualization

OpenGL ES based scene rendering

GPS, inertial, compass

Component based Framework

Easily customizable UI

Supports various styles of apps

Android (+ Web Tools)

Free download on our website

http://www.hitlabnz.org/mobileAR

Page 5: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Outdoor AR Browsers

Wikitude Layar Junaio

Page 6: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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)

Page 7: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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.

Page 8: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Apps built with OAR Framework

[CityViewAR 2011] [CCDU 3D 2012]

[GeoBoids 3D 2012] [AntarcticAR 2012]

Page 9: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Outdoor AR Framework

Covers full tier of ready-to-use

components, yet highly customizable

Mobile Device (Client)

Mobile OS

Mobile AR Application

Scene

data

Media

data

Mobile SW Library

Server

Server OS

Application Service

Scene

data

Media

data

Server SW Library Data

Communication

(Optional)

Page 10: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Server Software and Tools

Web Client

(Browser)

Server Mobile Client

(App)

HTML Web-based

Authoring Tool

RESTful API

Scene

Database

AR View

Data

Manager

Local

cache

Javascript

Page 11: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Server Software and Tools

Web-based Authoring Tool

Page 12: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Outdoor AR Library

Functional Component Layer

Service Component Layer

Map

Component

Scene Data Manager

AR

Component

List

Component

Tracking Data Manager

Scene Data

Structures

Tracking

Sensors

3D Graphics

Rendering UI Views

Tools &

Utilities

3D

Sound

Map View AR View List View Views

Controllers

Models

Page 13: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Outdoor AR Library

Customization by extending components

Customized AR scenes

- Customize scene data structure

Customized user interface

- Customize UI layout

- Customize UI behavior (e.g. onSceneSelected)

- Motion and touch gesture based interaction

Page 14: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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 on a Google Glass

Page 15: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 16: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 17: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 18: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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 orientation

Wire a button to start the AR view

Page 19: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 20: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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()

Page 21: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 22: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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)

Page 23: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Customizing UI

Add layout resource

Override setupUILayout()

LayoutInflater.from().inflate()

- 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()

Page 24: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 25: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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 - getWindowManager().getDefaultDisplay().getMetrics(dm);

- getSceneView().triggerTouch(x, y)

Override onResume() and onPause() to

start/stop the timer

Page 26: The Glass Class - Tutorial 5  - Augmented Reality on Glass

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

Page 27: The Glass Class - Tutorial 5  - Augmented Reality on Glass

Other tips for Google Glass

GPS not on Glass

Pair with Phone then use remote provider

Stream location from a phone through

Bluetooth

Mock location

Turning off camera background

Application dependent

Override setupOptions()

enableCameraBackground()

http://developer.android.com/guide/topics/connectivity/bluetooth.html

Page 28: The Glass Class - Tutorial 5  - Augmented Reality on Glass

CityViewAR for Glass

Demo Revisited

Page 29: The Glass Class - Tutorial 5  - Augmented Reality on Glass

More Information

Website

http://www.hitlabnz.org/mobileAR

http://arforglass.org

Gun Lee

[email protected]

Mark Billinghurst

[email protected]