23
Introduction to Accelerometers and OpenGL ES on the iPhone Jon Liang Mobility Lead – Mobclix http://www.mobclix.com Jeff LaMarche Author - Beginning iPhone Development: Exploring the iPhone SDK http://iphonedevelopment.blogspot.com/

Accelerometer and Open GL

Embed Size (px)

DESCRIPTION

Jon Liang - Accelerometer and Open GL. 360|iDev San Jose '09

Citation preview

Page 1: Accelerometer and Open GL

Introduction to Accelerometers and OpenGL ES on the iPhone

● Jon Liang● Mobility Lead – Mobclix● http://www.mobclix.com

● Jeff LaMarche ● Author - Beginning iPhone Development: Exploring

the iPhone SDK● http://iphonedevelopment.blogspot.com/

Page 2: Accelerometer and Open GL

Introduction to Accelerometers and OpenGL ES on the iPhone

● OpenGL ES● Accelerometer● More OpenGL

Page 3: Accelerometer and Open GL

OpenGL ES 1.1 - Open Graphics Library for Embedded Systems

Page 4: Accelerometer and Open GL

OpenGL

Source:http://www.cs.unc.edu/~walk/pap//fig1.gif

Page 5: Accelerometer and Open GL

OpenGL (continued)

● Platform independent● Input

● Points, Lines, Polygons● Transforms● Textures● Transparency● Lighting

Page 6: Accelerometer and Open GL

OpenGL Pipeline

Source: Apple

Page 7: Accelerometer and Open GL

Code: Hello World

Page 8: Accelerometer and Open GL

Quartz 2D vs. OpenGL for 2D

● Quartz 2D● Higher Level API

– Compatible with CoreAnimation

– Easier to Display Text● Inverted y-axis

● OpenGL● Low Level API

– More Control– Less Overhead

● 3D

Source: Apple

Page 9: Accelerometer and Open GL

iPhone Limitations

● 24 MB of Memory for textures and surfaces.● The maximum texture size is 1024 x 1024.● 2D texture targets are supported; other texture

targets are not.● Stencil buffers aren’t available.● More Info:

– http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/GraphicsandDrawing/chapter_6_section_5.html#//apple_ref/doc/uid/TP40007072-CH10-SW18

Page 10: Accelerometer and Open GL

Open GL → OpenGL ES

● Removed glBegin() and glEnd()● Use glDrawArrays() or glDrawElements()

● Added Fixed Point data types● Embedded systems often don't have FPU's.

● Removed convenience functions● More lightweight implementation.

Page 11: Accelerometer and Open GL

Questions?

Page 12: Accelerometer and Open GL

Accelerometer

Page 13: Accelerometer and Open GL

Accelerometer

● Hardware● 3-Axis MEMS Accelerometer

– Part Number: LIS302DL– Max Sample Rate: 400 Hz– Max Acceleration: ± 8g

● No Gyroscope

● Implications● No Direct Angular Acceleration Data● Zeroed at Free Fall● Limited Amplitude (± 4g per axis)

Page 14: Accelerometer and Open GL

Basic Tasks: Signal Processing

● Isolating Large Movements● Low-Pass Filter:

xn = x

n-1/2 + x/2

● Isolating Small Movements● High-Pass Filter:

xn = x - x

n-1

Sournce: http://jp.physoc.org/content/vol550/issue3/fulltext/873/Figures/HiRes/873-F2.gif

Page 15: Accelerometer and Open GL

Basic Tasks: Ground Angle

● 2 Dimensions:Θ = atan(y/x)

● Axis-Plane:Θ = atan(z/sqrt(x2+y2))

Source: http://www.forestgumpsays.com/wp-content/uploads/2008/03/3iphoneaxes.jpg

Page 16: Accelerometer and Open GL

Basic Tasks: Simple Gestures

● SwipePositive-Negative Spike

● ShakeOscillating Wave

● Rotations2-Axis Change

Page 17: Accelerometer and Open GL

Classes

UIAccelerometer

Methods+ sharedAccelerometer

PropertiesupdateIntervaldelegate

MyClass <UIAccelerationDelegate>

Methods- (void) accelerometer:(UIAccelerometer*) accelerometer

didAccelerate:(UIAcceleration*) acceleration

UIAcceleration

PropertiesUIAccelerationValue xUIAccelerationValue yUIAccelerationValue z NSTimeInterval timestamp

MyOtherClass

Page 18: Accelerometer and Open GL

Code: Hello World (continued)

Page 19: Accelerometer and Open GL

Questions?

Page 20: Accelerometer and Open GL

More Open GL

Page 21: Accelerometer and Open GL

Apple Sample Code

● Accelerometer Graph● Crash Landing● GLGravity● GLPaint● GLSprite● Touchfighter II

Page 22: Accelerometer and Open GL

Additional Resources

● Open GL● http://www.khronos.org/opengles/sdk/1.1/docs/man/● http://www.glprogramming.com/red/

● Accelerometer● www.st.com/stonline/products/literature/ds/12726.p

df● http://squallchua.blogspot.com/2008/12/wiimote-gesture-recognition.html● http://ifiddling.blogspot.com/2009/01/dummy2.html

Page 23: Accelerometer and Open GL

Additional Resources (continued)

● Collision Models● http://www.metanetsoftware.com/technique/tutorialA

.html● http://www.metanetsoftware.com/technique/tutorialB

.html● http://www.euclideanspace.com/physics/dynamics/c

ollision/index.htm