CON3235_Ritter-CON3235-Taking.A.Leap.JavaFX_SRitterx

cockedhatpocketInternet and Web Development

Dec 11, 2013 (3 years and 4 months ago)

171 views

Copyright

©

2012, Oracle and/or its affiliates. All rights reserved.

1

Taking A Leap Forward With
JavaFX

Simon Ritter, Oracle Corporation

Gerrit Grunwald, Canoo Engineering AG

Johan Vos, Lodgon

José 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 API

Co
-
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

Leap

Motion

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