SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Build Your Own Multi-Touch Interface with
Java and JavaFX Technology

  Simon Ritter, Sun Microsystems
  Angela Caicedo, Sun Microsystems
  TS-6127
TM
Learn how to build a Java technology-powered
touch screen that recognises multiple touch
                                              TM
points. Also see how easy it is to use JavaFX
technology to build user interfaces that work
with multi-touch input.




                                  2008 JavaOneSM Conference | java.sun.com/javaone |   2
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   3
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   4
Touch Screen Basics
 Several different approaches
  • Special surface coating - capacitive, resistive
  • Surface acoustic wave, acoustic pulse
  • Optical – Frustrated total internal reflection
 Most screens only respond to single touch point
  • Touch replaces use of mouse
 Multi-touch is becoming more popular
  • Apple iPhone
  • Samsung multi-touch display
  • Microsoft table




                                            2008 JavaOneSM Conference | java.sun.com/javaone |   5
Frustrated Total Internal Reflection
    Similar concept to fibre optic cable
    Touching screen causes IR to appear where touched

                                        Finger

                                                                Acrylic
                                                                Sheet
 Infra-Red
Source (LED)
                                                                              Screen
                          Web-cam      Projector


                                           2008 JavaOneSM Conference | java.sun.com/javaone |   6
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   7
Touch Surface
 Thick acrylic sheet
  • We used 6mm thick, 50x40cm
 Edges need to be polished
 We used a three stage process
  • Back of a hacksaw blade
  • Very fine sandpaper
  • Car polish
 Screen for display needs to be separate
  • Coating the underside of the touch surface was a complete disaster
  • Used a separate 3mm thick acrylic sheet covered in tracing paper




                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   8
Infra-Red Source/Detection
 Infra-red LEDs mounted along edge of screen
  • Initially mounted one LED every 7mm
  • This was reduced to one LED every 3cm (lower power consumption)
 Webcam mounted under screen to observe touch points
  • Webcams can see infra-red, unlike humans
  • Most webcams have an infra-red filter which must be removed
     • This can be difficult (we destroyed several webcams!)
  • Replace this with a filter that only lets IR through
     • Use the filter from a remote control
  • Tricky bit is getting the webcam far enough away to see whole screen
     • Wide angle lens makes this easier




                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   9
Infra-Red LED Wiring
 LEDs wired in parallel
 100 Ohm resistor for each LED
  • Good, bright LED
  • Not too much power consumption
  • Not too hot




                                     2008 JavaOneSM Conference | java.sun.com/javaone |   10
Infra-Red LED Mounting
 Each LED machined flat
 Better optical connectivity to touch surface




                                           2008 JavaOneSM Conference | java.sun.com/javaone |   11
Touch Surface




                   IR LEDs




                2008 JavaOneSM Conference | java.sun.com/javaone |   12
Touch Surface with Screen
                               IR LEDs




    Display screen
    Touch surface



                            2008 JavaOneSM Conference | java.sun.com/javaone |   13
Webcam




   Without filter   With IR bandpass filter
                          2008 JavaOneSM Conference | java.sun.com/javaone |   14
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   15
Getting an Image From a Webcam
 Java Media Framework (JMF) API
  • The forgotten Java API, last update 2003
 Version 1 only for playback, version 2 introduced capture
 Still works well for SolarisTM (SPARC®) technology, Linux and
 Windows
  • Pure Java technology version available
  • Performance packs for specific OS
  • Decision was to use Ubuntu Linux for driver support
 Performance was not an issue
  • Able to grab and process images at suitably high frame rate




                                            2008 JavaOneSM Conference | java.sun.com/javaone |   16
JMF API Frame Grabbing
 Locate device with CaptureDataManager
 Get DataSource through MediaLocator
 Set Format
 Create and Realize Processor
 Create a PushBufferDataSource
  • We really want a PullBufferDataSource, but can't have one
 Get BufferStream through DataSource
 Read Buffer
 Convert Buffer to BufferedImage with
 BufferToImage
 Convert BufferedImage to RGB array with
 PixelGrabber
                                            2008 JavaOneSM Conference | java.sun.com/javaone |   17
Image Processing: Stage 1
 Image from camera was not good for processing
  • Camera had automatic adjustment of white balance, contrast, etc.
 Use webcam device driver ioctls
  • Turn off automatic adjustment
  • Retrieve current settings
  • Manually change settings
 Driver needed modification
  • Yay open source!




                                                2008 JavaOneSM Conference | java.sun.com/javaone |   18
Image Processing: Stage 2
 Java 2DTM and Java Advanced Imaging API
 Convert to 8-bit greyscale for simplified processing
  • ColorConvolveOp
 BufferedImage is really useful for this kind of processing


                         BufferedImage
            ColorModel                     Raster
                                         SampleModel
            ColorSpace
                                         DataBuffer




                                                      2008 JavaOneSM Conference | java.sun.com/javaone |   19
Brightness and Contrast Adjustment
  Filtered Pixel Values




                              Window / 2




                                   Window
                          Level

                             Image Pixel Values
 Create a ByteLookupTable
 Apply LookupOp filter
         LookupOp lop = new LookupOp(byteTable, null);
         filteredImage = lop.filter(oldImage, null);
                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   20
Image Processing: Stage 3
 Identify where bright spots are in image
 Algorithm is basically simple
  • Although certain cases make life a bit harder
 Ensure image is mono-chrome, each pixel is white or black
  • 8-bit greyscale -> 1 bit mono-chrome
  • Tunable level for change from black to white (0-255)
 Sum pixels in each row and column (white = 1, black = 0)
 Rows or columns with high values indicate touch point
 Generate a set of x, y co-ordinates for all touch points




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   21
Image Processing: Stage 3

                                        2
                                        3
                                        3                        y point 1


                                        3
                                        3
                                                                 y point 2
                                        3


x point 1     242        333           x point 2

  Points can be reversed
  Test possible locations to get accurate result

                                              2008 JavaOneSM Conference | java.sun.com/javaone |   22
Generating Touch Events
 We now have a set of touch point co-ordinates
 Simple events are somewhat like mouse events
  • Change of position
  • New touch point
  • Touch point disappeared
 Touch point code is more complex than mouse
  • Must track points and figure out when a new one appears
  • Or an existing one disappears
 Gesture recognition is even more complex
  • Swipe movement
  • expand/shrink/rotate using two points
  • Requires time-based analysis
 We defined an extendable touch event interface

                                                2008 JavaOneSM Conference | java.sun.com/javaone |   23
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   24
JavaFX Technology Basics
 Programming Language for the Java Platform
 Object-oriented
 Declarative Syntax
 Statically-typed with type-inference
 Automatic data binding
 Extensive Widget library encompassing Swing and Java 2D API
 Development tools including NetBeansTM and Eclipse IDE
 plugins




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   25
Java/JavaFX Technology and Multi-Touch
Software Integration
 Why JavaFX technology:
 • Great for image manipulation
 • Data binding simplifies the software implementation
 • Simple and easy to design and implement the user interface
 Why Java technology:
 • Heavy multi-threading implemented in Java technology
 • Java based model bound to the interface with JavaFX technology
    capabilities
  • Model change <-> view change
 Why Multi-touch:
 • Intuitive user interaction
 • Multiple point of interactions
 • Allows multiple users interacting with the software
 • Cool and interesting technology
                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   26
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   27
Multi-Touch Events
 They capture:
  • Initial position (finger down)
  • Direction (finger trajectory)
  • Speed (finger speed)
  • Final position (finger up)
 Dynamically associated with SmartObject
 Dynamically released from SmartObjects
 Universe vs. individual interaction
 Direction = 0 and speed = 0 then locking events
 Speed > threshold then animation triggered




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   28
Smart Objects
 Register multi-touch events
 Object's behavior based on multi-touch events and areas of
 interactions

                                rotating &        rotating,                 rotating &
                                stretching      stretching &                stretching
                                                   flipping



                                  rotating,                                   rotating,
                                stretching &       rotating,                stretching &
                                   flipping                                    flipping




                                rotating &        rotating,                 rotating &
                                stretching      stretching &                stretching
                                                   flipping



                                               2008 JavaOneSM Conference | java.sun.com/javaone |   29
Stretching with Locking Action




                                 2008 JavaOneSM Conference | java.sun.com/javaone |   30
Both Sides Stretching




                        2008 JavaOneSM Conference | java.sun.com/javaone |   31
Flipping




           2008 JavaOneSM Conference | java.sun.com/javaone |   32
Locking and Rotating




                       2008 JavaOneSM Conference | java.sun.com/javaone |   33
Free Rotation




                2008 JavaOneSM Conference | java.sun.com/javaone |   34
Putting Things Together




                          2008 JavaOneSM Conference | java.sun.com/javaone |   35
Universe Interaction (1 of 2)




                                2008 JavaOneSM Conference | java.sun.com/javaone |   36
Universe Interaction (2 of 2)




                                2008 JavaOneSM Conference | java.sun.com/javaone |   37
Smart Objects Still Active (1 of 2)




                                2008 JavaOneSM Conference | java.sun.com/javaone |   38
Smart Objects Still Active (2 of 2)




                                 2008 JavaOneSM Conference | java.sun.com/javaone |   39
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   40
Where Next?
 Infra-red is very useful as we can't see it
  • No interference with rest of display
 Wiimote from Nintendo has IR detector
  • Can track up to four points simultaneously
  • Reports positions via bluetooth interface
  • Used to figure out where the Wiimote is relative to the display
 Why not keep the Wiimote stationary, move the IR?
 Great examples of this
  • Johnny Chung Lee of CMU
  • 3D position interpolation
 Working on combining this with touch screen
  • Using wiiremotej open source project


                                                   2008 JavaOneSM Conference | java.sun.com/javaone |   41
Agenda

 Basic ideas of the multi-touch display
 Construction of the display
 Using Java technology to recognise touch points
 JavaFX technology integration with multi-touch events
 JavaFX technology multi-touch user interfaces
 Future directions
 Summary and further information




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   42
Summary

 Multi-touch screens are simple and cheap to build
  • Most expensive bit is the projector
 Java technology makes the software easy
 JavaFX technology is easy to integrate with new
 types of event
 JavaFX technology makes building multi-touch user
 interfaces simple
 This is just the beginning...




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   43
For More Information

 Java Media Framework
  • java.sun.com/products/java-media/jmf/
 Java Advanced Imaging
  • java.sun.com/javase/technologies/desktop/media/jai/
 JavaFX technology
  • openjfx.org
 Jeff Hahn (FTIR multi-touch screen)
  • cs.nyu.edu/~jhan/ftirtouch/
  • www.perceptivepixel.com/
 Building Imaging Applications With Java
 Technology
  • Lawrence H. Rodrigues


                                              2008 JavaOneSM Conference | java.sun.com/javaone |   44
Multi-touch screen in action with
JavaFX technology




                            2008 JavaOneSM Conference | java.sun.com/javaone |   45
Simon Ritter, Sun Microsystems
Angela Caicedo, Sun Microsystems
TS-6127




                                   2008 JavaOneSM Conference | java.sun.com/javaone |   46

Weitere ähnliche Inhalte

Was ist angesagt?

Conference Handout - Listing of Unmoderated Remote Usability Testing Tools
Conference Handout - Listing of Unmoderated Remote Usability Testing ToolsConference Handout - Listing of Unmoderated Remote Usability Testing Tools
Conference Handout - Listing of Unmoderated Remote Usability Testing ToolsKyle Soucy
 
Sony VPL-DX Series Projectors
Sony VPL-DX Series ProjectorsSony VPL-DX Series Projectors
Sony VPL-DX Series ProjectorsAV ProfShop
 
Motion graphics and_compositing_video_analysis_worksheet
Motion graphics and_compositing_video_analysis_worksheetMotion graphics and_compositing_video_analysis_worksheet
Motion graphics and_compositing_video_analysis_worksheetk_ishii_
 
Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]ozlael ozlael
 
ASC flash lidar technology
ASC flash lidar technologyASC flash lidar technology
ASC flash lidar technologyfrmsnh
 
RoboCV Module 1: Introduction to Machine Vision
RoboCV Module 1: Introduction to Machine VisionRoboCV Module 1: Introduction to Machine Vision
RoboCV Module 1: Introduction to Machine VisionroboVITics club
 
RoboCV - Demo Session Slides
RoboCV - Demo Session SlidesRoboCV - Demo Session Slides
RoboCV - Demo Session SlidesroboVITics club
 

Was ist angesagt? (8)

Conference Handout - Listing of Unmoderated Remote Usability Testing Tools
Conference Handout - Listing of Unmoderated Remote Usability Testing ToolsConference Handout - Listing of Unmoderated Remote Usability Testing Tools
Conference Handout - Listing of Unmoderated Remote Usability Testing Tools
 
Sony VPL-DX Series Projectors
Sony VPL-DX Series ProjectorsSony VPL-DX Series Projectors
Sony VPL-DX Series Projectors
 
Motion graphics and_compositing_video_analysis_worksheet
Motion graphics and_compositing_video_analysis_worksheetMotion graphics and_compositing_video_analysis_worksheet
Motion graphics and_compositing_video_analysis_worksheet
 
Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]
 
ASC flash lidar technology
ASC flash lidar technologyASC flash lidar technology
ASC flash lidar technology
 
RoboCV Module 1: Introduction to Machine Vision
RoboCV Module 1: Introduction to Machine VisionRoboCV Module 1: Introduction to Machine Vision
RoboCV Module 1: Introduction to Machine Vision
 
engine_terminology 2
engine_terminology 2engine_terminology 2
engine_terminology 2
 
RoboCV - Demo Session Slides
RoboCV - Demo Session SlidesRoboCV - Demo Session Slides
RoboCV - Demo Session Slides
 

Andere mochten auch

RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)savageautomate
 
Future tense
Future tenseFuture tense
Future tenseMaths
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singhdheeraj_cse
 
GUI Programming In Java
GUI Programming In JavaGUI Programming In Java
GUI Programming In Javayht4ever
 
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...jaxLondonConference
 
State of the Word 2011
State of the Word 2011State of the Word 2011
State of the Word 2011photomatt
 

Andere mochten auch (7)

RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
 
Future tense
Future tenseFuture tense
Future tense
 
Java interface
Java interfaceJava interface
Java interface
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
 
GUI Programming In Java
GUI Programming In JavaGUI Programming In Java
GUI Programming In Java
 
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
 
State of the Word 2011
State of the Word 2011State of the Word 2011
State of the Word 2011
 

Ähnlich wie Build Your Own Multi-Touch Interface with Java and JavaFX Technology

JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101Jeff Hoffman
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machineelliando dias
 
WebXR and Browsers
WebXR and BrowsersWebXR and Browsers
WebXR and BrowsersIgalia
 
Project SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignProject SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignAbhishek Mishra
 
Boldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone beforeBoldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone beforeelliando dias
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with JavaFabrizio Giudici
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...Nick Dellamaggiore
 
Advanced Silverlight
Advanced SilverlightAdvanced Silverlight
Advanced Silverlightrsnarayanan
 
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSFACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSIRJET Journal
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications Fabrizio Giudici
 
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia Applications
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia ApplicationsCrowdMM2012 - Crowdsourced User Interface Testing for Multimedia Applications
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia ApplicationsRaynor Vliegendhart
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax Worldrajivmordani
 
SCREENLESS DISPLAY.pptx
SCREENLESS DISPLAY.pptxSCREENLESS DISPLAY.pptx
SCREENLESS DISPLAY.pptxAlenJames14
 
深度學習在AOI的應用
深度學習在AOI的應用深度學習在AOI的應用
深度學習在AOI的應用CHENHuiMei
 
Post rendering
Post renderingPost rendering
Post renderingAkilarLiao
 

Ähnlich wie Build Your Own Multi-Touch Interface with Java and JavaFX Technology (20)

JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machine
 
WebXR and Browsers
WebXR and BrowsersWebXR and Browsers
WebXR and Browsers
 
Project SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignProject SpaceLock - Architecture & Design
Project SpaceLock - Architecture & Design
 
Boldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone beforeBoldly go where the Java programming language has never gone before
Boldly go where the Java programming language has never gone before
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with Java
 
Training Seminar
Training SeminarTraining Seminar
Training Seminar
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
Advanced Silverlight
Advanced SilverlightAdvanced Silverlight
Advanced Silverlight
 
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDSFACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
FACE COUNTING USING OPEN CV & PYTHON FOR ANALYZING UNUSUAL EVENTS IN CROWDS
 
IMAGE PROCESSING
IMAGE PROCESSINGIMAGE PROCESSING
IMAGE PROCESSING
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications
 
Electric Cloud
Electric CloudElectric Cloud
Electric Cloud
 
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia Applications
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia ApplicationsCrowdMM2012 - Crowdsourced User Interface Testing for Multimedia Applications
CrowdMM2012 - Crowdsourced User Interface Testing for Multimedia Applications
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax World
 
SCREENLESS DISPLAY.pptx
SCREENLESS DISPLAY.pptxSCREENLESS DISPLAY.pptx
SCREENLESS DISPLAY.pptx
 
深度學習在AOI的應用
深度學習在AOI的應用深度學習在AOI的應用
深度學習在AOI的應用
 
SunMicroSystems
SunMicroSystemsSunMicroSystems
SunMicroSystems
 
Post rendering
Post renderingPost rendering
Post rendering
 

Mehr von elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mehr von elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Kürzlich hochgeladen

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Kürzlich hochgeladen (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

Build Your Own Multi-Touch Interface with Java and JavaFX Technology

  • 1. Build Your Own Multi-Touch Interface with Java and JavaFX Technology Simon Ritter, Sun Microsystems Angela Caicedo, Sun Microsystems TS-6127
  • 2. TM Learn how to build a Java technology-powered touch screen that recognises multiple touch TM points. Also see how easy it is to use JavaFX technology to build user interfaces that work with multi-touch input. 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. Touch Screen Basics Several different approaches • Special surface coating - capacitive, resistive • Surface acoustic wave, acoustic pulse • Optical – Frustrated total internal reflection Most screens only respond to single touch point • Touch replaces use of mouse Multi-touch is becoming more popular • Apple iPhone • Samsung multi-touch display • Microsoft table 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. Frustrated Total Internal Reflection Similar concept to fibre optic cable Touching screen causes IR to appear where touched Finger Acrylic Sheet Infra-Red Source (LED) Screen Web-cam Projector 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. Touch Surface Thick acrylic sheet • We used 6mm thick, 50x40cm Edges need to be polished We used a three stage process • Back of a hacksaw blade • Very fine sandpaper • Car polish Screen for display needs to be separate • Coating the underside of the touch surface was a complete disaster • Used a separate 3mm thick acrylic sheet covered in tracing paper 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. Infra-Red Source/Detection Infra-red LEDs mounted along edge of screen • Initially mounted one LED every 7mm • This was reduced to one LED every 3cm (lower power consumption) Webcam mounted under screen to observe touch points • Webcams can see infra-red, unlike humans • Most webcams have an infra-red filter which must be removed • This can be difficult (we destroyed several webcams!) • Replace this with a filter that only lets IR through • Use the filter from a remote control • Tricky bit is getting the webcam far enough away to see whole screen • Wide angle lens makes this easier 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. Infra-Red LED Wiring LEDs wired in parallel 100 Ohm resistor for each LED • Good, bright LED • Not too much power consumption • Not too hot 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. Infra-Red LED Mounting Each LED machined flat Better optical connectivity to touch surface 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. Touch Surface IR LEDs 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Touch Surface with Screen IR LEDs Display screen Touch surface 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. Webcam Without filter With IR bandpass filter 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. Getting an Image From a Webcam Java Media Framework (JMF) API • The forgotten Java API, last update 2003 Version 1 only for playback, version 2 introduced capture Still works well for SolarisTM (SPARC®) technology, Linux and Windows • Pure Java technology version available • Performance packs for specific OS • Decision was to use Ubuntu Linux for driver support Performance was not an issue • Able to grab and process images at suitably high frame rate 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. JMF API Frame Grabbing Locate device with CaptureDataManager Get DataSource through MediaLocator Set Format Create and Realize Processor Create a PushBufferDataSource • We really want a PullBufferDataSource, but can't have one Get BufferStream through DataSource Read Buffer Convert Buffer to BufferedImage with BufferToImage Convert BufferedImage to RGB array with PixelGrabber 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. Image Processing: Stage 1 Image from camera was not good for processing • Camera had automatic adjustment of white balance, contrast, etc. Use webcam device driver ioctls • Turn off automatic adjustment • Retrieve current settings • Manually change settings Driver needed modification • Yay open source! 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. Image Processing: Stage 2 Java 2DTM and Java Advanced Imaging API Convert to 8-bit greyscale for simplified processing • ColorConvolveOp BufferedImage is really useful for this kind of processing BufferedImage ColorModel Raster SampleModel ColorSpace DataBuffer 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. Brightness and Contrast Adjustment Filtered Pixel Values Window / 2 Window Level Image Pixel Values Create a ByteLookupTable Apply LookupOp filter LookupOp lop = new LookupOp(byteTable, null); filteredImage = lop.filter(oldImage, null); 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Image Processing: Stage 3 Identify where bright spots are in image Algorithm is basically simple • Although certain cases make life a bit harder Ensure image is mono-chrome, each pixel is white or black • 8-bit greyscale -> 1 bit mono-chrome • Tunable level for change from black to white (0-255) Sum pixels in each row and column (white = 1, black = 0) Rows or columns with high values indicate touch point Generate a set of x, y co-ordinates for all touch points 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Image Processing: Stage 3 2 3 3 y point 1 3 3 y point 2 3 x point 1 242 333 x point 2 Points can be reversed Test possible locations to get accurate result 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Generating Touch Events We now have a set of touch point co-ordinates Simple events are somewhat like mouse events • Change of position • New touch point • Touch point disappeared Touch point code is more complex than mouse • Must track points and figure out when a new one appears • Or an existing one disappears Gesture recognition is even more complex • Swipe movement • expand/shrink/rotate using two points • Requires time-based analysis We defined an extendable touch event interface 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. JavaFX Technology Basics Programming Language for the Java Platform Object-oriented Declarative Syntax Statically-typed with type-inference Automatic data binding Extensive Widget library encompassing Swing and Java 2D API Development tools including NetBeansTM and Eclipse IDE plugins 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. Java/JavaFX Technology and Multi-Touch Software Integration Why JavaFX technology: • Great for image manipulation • Data binding simplifies the software implementation • Simple and easy to design and implement the user interface Why Java technology: • Heavy multi-threading implemented in Java technology • Java based model bound to the interface with JavaFX technology capabilities • Model change <-> view change Why Multi-touch: • Intuitive user interaction • Multiple point of interactions • Allows multiple users interacting with the software • Cool and interesting technology 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 27
  • 28. Multi-Touch Events They capture: • Initial position (finger down) • Direction (finger trajectory) • Speed (finger speed) • Final position (finger up) Dynamically associated with SmartObject Dynamically released from SmartObjects Universe vs. individual interaction Direction = 0 and speed = 0 then locking events Speed > threshold then animation triggered 2008 JavaOneSM Conference | java.sun.com/javaone | 28
  • 29. Smart Objects Register multi-touch events Object's behavior based on multi-touch events and areas of interactions rotating & rotating, rotating & stretching stretching & stretching flipping rotating, rotating, stretching & rotating, stretching & flipping flipping rotating & rotating, rotating & stretching stretching & stretching flipping 2008 JavaOneSM Conference | java.sun.com/javaone | 29
  • 30. Stretching with Locking Action 2008 JavaOneSM Conference | java.sun.com/javaone | 30
  • 31. Both Sides Stretching 2008 JavaOneSM Conference | java.sun.com/javaone | 31
  • 32. Flipping 2008 JavaOneSM Conference | java.sun.com/javaone | 32
  • 33. Locking and Rotating 2008 JavaOneSM Conference | java.sun.com/javaone | 33
  • 34. Free Rotation 2008 JavaOneSM Conference | java.sun.com/javaone | 34
  • 35. Putting Things Together 2008 JavaOneSM Conference | java.sun.com/javaone | 35
  • 36. Universe Interaction (1 of 2) 2008 JavaOneSM Conference | java.sun.com/javaone | 36
  • 37. Universe Interaction (2 of 2) 2008 JavaOneSM Conference | java.sun.com/javaone | 37
  • 38. Smart Objects Still Active (1 of 2) 2008 JavaOneSM Conference | java.sun.com/javaone | 38
  • 39. Smart Objects Still Active (2 of 2) 2008 JavaOneSM Conference | java.sun.com/javaone | 39
  • 40. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 40
  • 41. Where Next? Infra-red is very useful as we can't see it • No interference with rest of display Wiimote from Nintendo has IR detector • Can track up to four points simultaneously • Reports positions via bluetooth interface • Used to figure out where the Wiimote is relative to the display Why not keep the Wiimote stationary, move the IR? Great examples of this • Johnny Chung Lee of CMU • 3D position interpolation Working on combining this with touch screen • Using wiiremotej open source project 2008 JavaOneSM Conference | java.sun.com/javaone | 41
  • 42. Agenda Basic ideas of the multi-touch display Construction of the display Using Java technology to recognise touch points JavaFX technology integration with multi-touch events JavaFX technology multi-touch user interfaces Future directions Summary and further information 2008 JavaOneSM Conference | java.sun.com/javaone | 42
  • 43. Summary Multi-touch screens are simple and cheap to build • Most expensive bit is the projector Java technology makes the software easy JavaFX technology is easy to integrate with new types of event JavaFX technology makes building multi-touch user interfaces simple This is just the beginning... 2008 JavaOneSM Conference | java.sun.com/javaone | 43
  • 44. For More Information Java Media Framework • java.sun.com/products/java-media/jmf/ Java Advanced Imaging • java.sun.com/javase/technologies/desktop/media/jai/ JavaFX technology • openjfx.org Jeff Hahn (FTIR multi-touch screen) • cs.nyu.edu/~jhan/ftirtouch/ • www.perceptivepixel.com/ Building Imaging Applications With Java Technology • Lawrence H. Rodrigues 2008 JavaOneSM Conference | java.sun.com/javaone | 44
  • 45. Multi-touch screen in action with JavaFX technology 2008 JavaOneSM Conference | java.sun.com/javaone | 45
  • 46. Simon Ritter, Sun Microsystems Angela Caicedo, Sun Microsystems TS-6127 2008 JavaOneSM Conference | java.sun.com/javaone | 46