View
2.160
Download
3
Embed Size (px)
DESCRIPTION
This is the Leap Motion and JavaFX session I presented at JavaOne 2013
Citation preview
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.1
Taking A Leap Forward With JavaFXSimon Ritter, Oracle CorporationGerrit Grunwald, Canoo Engineering AGJohan Vos, LodgonJosé Pereda, Universidad de Valladolid
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.3
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.4
Program Agenda
The Man Machine Interface
Leap Motion Controller
JavaFX Basics and 3D
Leap Motion Java API
Demos
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.5
The Man Machine Interface
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.6
How It All Started
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.7
Progress was made…
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.8
Multi-touch has become popular
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.9
Gaming Has Driven Several Interfaces
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.10
Now It’s About Gestures
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.11
The Leap Motion Controller
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.12
The Basics
Small device (80 x 30 x 12mm) USB connection
– No external power required
Multiple OS support– Windows
– Mac OSX
– Linux
Low cost: $80
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.13
The Technology
Array of infra-red sensors– Can be susceptible to bright light
Proprietary motion detection algorithm– Tracks to 0.01mm resolution
– The secret sauce
1-2% CPU load No GPU requirement
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.14
The Details
The Leap Motion sensor detects hands, fingers and tools Data captured as frames continuously Listener handles events from frames Controller is the connection between device and application Gesture recognition must be enabled through the controller
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.15
Leap Motion Java APICo-ordinate System
Right hand Cartesian co-ordinate system
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.16
60cm range 150° view angle (left/right) 120° view angle (front/back)
Field Of View
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.17
Gestures
Predefined gestures– Circle
– Swipe
– Key tap (downward movement: y-axis)
– Screen tap (forward movement: z-axis)
Turn, twist, tilt, make a fist– Use motion factors from frame
Translation, rotation axis, rotation angle, scale factor
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.18
JavaFX Basics and 3D
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.19
JavaFX: The New Way To Build Java UIs
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.20
Scene Graph
Directed Acyclic Graph Parents and children Representation of the GUI components
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.21
Binding
Creates a dependency between a property and a changeable value
High level API– Easy to use
– Covers most common situations
Low level API– Allows for more complex interactions
– Optimised for fast execution and small footprint
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.22
Properties
Basis for high level binding API Concrete types for all primitives, String and Object
– DoubleProperty, StringProperty, etc
Simple API– bind / unbind– bindBidirectional / unbindBidirectional– isBound
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.23
Timeline Based Animations
Timeline– Modifies values of variables specified in KeyFrames
KeyFrame: specifies that a variable should have– A particular value at a particular time
KeyValue: Value to be interpolated for an interval
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.24
Animated Transitions
Pre-defined, single-purpose animations– Fade, Path, Pause, Rotate, Scale, Translate
– Can specify to, from and by values
Container transitions– Parallel, sequential
– Can be nested arbitarily
Transitions and Timelines share ancestary– A Timeline can be added to a Parallel / Sequential transition
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.25
JavaFX And The Third Dimension
Basic collection of 3D shapes– Box
– Cylinder
– Sphere
– MeshView (everything else)
javafx.scene.shape
Shapes
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.26
JavaFX And The Third Dimension
PhongMaterial– Way to cover a 3D object in a colour or image
– Uses interpolation to smooth polygon effects
Surfaces
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.27
JavaFX And The Third Dimension
How to illuminate the scene javafx.scene.effect.LightBase AmbientLight
– A light source that seems to come from all directions
PointLight– An attenuated light source that has a fixed point in space and radiates light
equally away from itself in all directions
Lighting
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.28
JavaFX And The Third Dimension
Where the scene is viewed from PerspectiveCamera
– Field of view is configurable (default is 30°)
ParallelCamera– Renders a scene without perspective correction
Cameras
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.29
Leap Motion Java API
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.30
Interaction Principles
Frame
Application Code
Listener
GUI Node
GUI Node
GUI Node
Controller
LeapMotion
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.31
Basic Approach
Create Controller Register Listener
– Subclass to implement specific functionality
onFrame callback method in Listener called by Controller Or you can use polling Frame contains all data
– Hand position, orientation
– Fingers
– Pointer position, orientation
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.32
Frame By Frame
Set of hand and finger tracking data detected at a point in time Hand provides:
– Direction of palm
– List of visible Fingers
Finger (which is a subclass of Pointable) provides:– Direction
– Tip position and velocity
– Length, width
– Time visible
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.33
Handling Gestures
Enable the gestures you want to use Recognised gesture data is added to the Frame
GestureList gl = frame.gestures();
for (int i = 0; i < gl.count(); i++) { Gesture g = gl.get(i); if (g.type == TYPE_SWIPE) SwipeGesture sw = new SwipeGesture(g);
...
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.34
Conclusions and More Information
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.35
Conclusions
Leap Motion adds a great new way to interact with applications Java support makes integration with existing applications simple
– Clean, straightforward API
– Simple gesture recognition
Use your imagination!
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.36
Further Information
www.leapmotion.com www.oracle.com/javafx jperedadnr.blogspot.co.uk blogs.oracle.com/speakjava
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.37
Demos
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.38
Graphic Section Divider
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.39