SlideShare une entreprise Scribd logo
1  sur  39
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

Contenu connexe

Similaire à Taking a Leap Forward With JavaFX

Александр Белокрылов, Александр Мироненко. Java Embedded у вас дома
Александр Белокрылов, Александр Мироненко. Java Embedded у вас домаАлександр Белокрылов, Александр Мироненко. Java Embedded у вас дома
Александр Белокрылов, Александр Мироненко. Java Embedded у вас дома
Volha Banadyseva
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
Martin Fousek
 
Java: how to thrive in the changing world
Java: how to thrive in the changing worldJava: how to thrive in the changing world
Java: how to thrive in the changing world
Alexey Fyodorov
 

Similaire à Taking a Leap Forward With JavaFX (20)

Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JET
 
Александр Белокрылов, Александр Мироненко. Java Embedded у вас дома
Александр Белокрылов, Александр Мироненко. Java Embedded у вас домаАлександр Белокрылов, Александр Мироненко. Java Embedded у вас дома
Александр Белокрылов, Александр Мироненко. Java Embedded у вас дома
 
Innoslate 4.5 and Sopatra
Innoslate 4.5 and SopatraInnoslate 4.5 and Sopatra
Innoslate 4.5 and Sopatra
 
Delivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with OracleDelivering Mobile Apps to the Field with Oracle
Delivering Mobile Apps to the Field with Oracle
 
Java Embedded у вас дома
Java Embedded у вас домаJava Embedded у вас дома
Java Embedded у вас дома
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
 
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)
 
Java: how to thrive in the changing world
Java: how to thrive in the changing worldJava: how to thrive in the changing world
Java: how to thrive in the changing world
 
Using Eclipse EMF/GEF to develop an offline designer for identity manager
Using Eclipse EMF/GEF to develop an offline designer for identity managerUsing Eclipse EMF/GEF to develop an offline designer for identity manager
Using Eclipse EMF/GEF to develop an offline designer for identity manager
 
OSI_MySQL_Performance Schema
OSI_MySQL_Performance SchemaOSI_MySQL_Performance Schema
OSI_MySQL_Performance Schema
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
 
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
The Mobile Enterprise in Action: Managing Business Processes from Your Mobile...
 
Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]Continuous Performance Monitoring of a Distributed Application [CON4730]
Continuous Performance Monitoring of a Distributed Application [CON4730]
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Dive
 
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
CRUX (CRUD meets UX) Case Study: Building a Modern Applications User Experien...
 
Mobile Cloud Demo
Mobile Cloud DemoMobile Cloud Demo
Mobile Cloud Demo
 
Delivering Mobile Apps to the field using Oracle
Delivering Mobile Apps to the field using OracleDelivering Mobile Apps to the field using Oracle
Delivering Mobile Apps to the field using Oracle
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
 

Plus de Simon Ritter

Plus de Simon Ritter (20)

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native Compiler
 
Java On CRaC
Java On CRaCJava On CRaC
Java On CRaC
 
The Art of Java Type Patterns
The Art of Java Type PatternsThe Art of Java Type Patterns
The Art of Java Type Patterns
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
 
Building a Better JVM
Building a Better JVMBuilding a Better JVM
Building a Better JVM
 
JDK 14 Lots of New Features
JDK 14 Lots of New FeaturesJDK 14 Lots of New Features
JDK 14 Lots of New Features
 
Java after 8
Java after 8Java after 8
Java after 8
 
How to Choose a JDK
How to Choose a JDKHow to Choose a JDK
How to Choose a JDK
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans Technology
 
Developing Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologyDeveloping Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java Technology
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
Java Is Still Free
Java Is Still FreeJava Is Still Free
Java Is Still Free
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
JDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveJDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep Dive
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Taking a Leap Forward With JavaFX

  • 1. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.1
  • 2. Taking A Leap Forward With JavaFX Simon Ritter, Oracle Corporation Gerrit Grunwald, Canoo Engineering AG Johan Vos, Lodgon José Pereda, Universidad de Valladolid
  • 3. 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.
  • 4. 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
  • 5. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.5 The Man Machine Interface
  • 6. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.6 How It All Started
  • 7. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.7 Progress was made…
  • 8. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.8 Multi-touch has become popular
  • 9. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.9 Gaming Has Driven Several Interfaces
  • 10. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.10 Now It’s About Gestures
  • 11. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.11 The Leap Motion Controller
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.15 Leap Motion Java API Co-ordinate System Right hand Cartesian co-ordinate system
  • 16. 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
  • 17. 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
  • 18. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.18 JavaFX Basics and 3D
  • 19. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.19 JavaFX: The New Way To Build Java UIs
  • 20. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.20 Scene Graph  Directed Acyclic Graph  Parents and children  Representation of the GUI components
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.29 Leap Motion Java API
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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); ...
  • 34. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.34 Conclusions and More Information
  • 35. 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!
  • 36. 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
  • 37. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.37 Demos
  • 38. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.38 Graphic Section Divider
  • 39. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.39

Notes de l'éditeur

  1. AWT and Swing use a container/component hierarchy for organising the GUI. Layout managers are fundamental to this, but can make development difficult and involved. JavaFX uses a scenegraph which will be familiar to developers who have programmed in 3D. The concept is that all components in the GUI are represented by nodes. Each node can have one parent and groupings can be made by attaching multiple nodes (which may themselves be parents) to a parent. Applying effects to groups of nodes is simply a matter of applying the effect to the parent node. Z ordering can also be altered within a group and for a group as a whole.
  2. Binding is one of the most powerful features of JavaFX. It allows developers to specify the relationship between properties and values so that when the value changes the property is automatically modified byt the JavaFX runtime system. This is analogous to the listener pattern used extensively in AWT/Swing but requires less coding by the developer.The API is separated into a high level version that covers most of the common tasks, but does not provide total flexibility. For tasks that require complete flexibility the low-level API can be used. This, however, requires more coding.
  3. Properties are the basis for high-level binding. There are property types for all Java primitives as well as String and Object. The API for this is simple, allowing you to bind or unbind the property. Bi-directional binding is also supported.
  4. Animations are changes in properties that happen over time (fading by modifying opacity, moving the position of a node, etc).JavaFX uses a Timeline to implement this; each one consisting of a series of KeyFrames. These are points in time where a property will have a specified value (it can also be used to start an action through a method call). The KeyValue has one or more KeyValues that represent the property-value tuple. When a Timeline is started the JavaFX runtime will alter the value of the property automatically. By binding to the changing property the GUI can be animated.
  5. To simplify comman tasks JavaFX includes a number of animated transitions to automate things like fading, rotation, scaling and so on. The start end and intermediate points can all be specificed. These can then be grouped together to provide either sequential or parallel transitions. For non-standard animations arbitary Timelines can also be included in the parallel or sequential transitions.