1 exploring javafx 3d jim weaver java technology ambassador oracle corporation @javafxpert...

Download 1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle Corporation @JavaFXpert james.weaver@oracle.com

If you can't read please download the document

Upload: addison-cushion

Post on 15-Dec-2015

222 views

Category:

Documents


3 download

TRANSCRIPT

  • Slide 1

1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle Corporation @JavaFXpert [email protected] Slide 2 2 Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 16 Program Agenda Introduction to JavaFX 3D Nuts and Bolts of JavaFX 3D More Fun with JavaFX 3D Slide 3 3 3 Please note 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 Oracles products remains at the sole discretion of Oracle. Slide 4 4 Introduction to JavaFX 3D Slide 5 5 5 Start Here: http://javafxcommunity.comhttp://javafxcommunity.com Slide 6 6 6 Download JDK 8 Early Access Release Slide 7 7 7 Visit the 3D Features for JavaFX 8 Wiki https://wikis.oracle.com/display/OpenJDK/3D+Features Slide 8 8 8 Visit Here: http://fxexperience.comhttp://fxexperience.com Tip: This site is authored by Oracle JavaFX Engineers Slide 9 9 JavaFX 3D gives you the ability to use 3D geometry, cameras, and lights in JavaFX. Slide 10 10 JavaFX 3D Application Example 10 http://fxexperience.com/2013/02/javafx-3d-early-access-available/ Slide 11 11 JavaFX 3D Use Cases Inventory and Process Visualization Scientific and Engineering Visualization 3D Charting Mechanical CAD and CAE Medical Imaging 11 Slide 12 12 More JavaFX 3D Use Cases Product Marketing Architectural Design and Walkthroughs Advanced User Experience Mission Planning Training Entertainment 12 Slide 13 13 Nuts and Bolts of JavaFX 3D (Shapes, Materials, Textures, Lights, Cameras) Slide 14 14 Mesh Geometry (3D Shapes) Predefined shapes Box Cylinder Sphere User-defined shapes Using TriangleMesh / MeshView 14 https://wikis.oracle.com/display/OpenJDK/SphereAndBox.java Slide 15 15 Creating Primitive Shapes and Materials Slide 16 16 Rotating the 3D Shapes Tip: Use lambda expressions as shown here to simplify event handling Slide 17 17 3D Materials and Textures PhongMaterial has these properties Ambient color Diffuse color, diffuse map Specular color, specular map Specular power Bump map Self-illumination map 17 https://wikis.oracle.com/display/OpenJDK/3D+Features Slide 18 18 UV Mapping Textures to Shapes 18 Tip: A texture is a 2D image to be mapped on a 3D surface Source: http://en.wikipedia.org/wiki/File:UVMapping.pnghttp://en.wikipedia.org/wiki/File:UVMapping.png Slide 19 19 Placing a Texture on a Sphere 19 Slide 20 20 Placing a Texture on a Sphere 20 Slide 21 21 Placing a Texture on a Cylinder 21 radiusheight Note that the texture is mapped three times to the cylinder Slide 22 22 Specifying Divisions on a Cylinder 22 radius height divisions Slide 23 23 Placing an Image on a Box 23 Note that the texture is mapped six times to the box Tip: A Box doesnt have to be a cube. It may have different width, height and depth args Slide 24 24 Using TriangleMesh / MeshView If the same texture on all sides of the cube isnt desired, a user-defined shape may be created using TriangleMesh and MeshView 24 Slide 25 25 UV Mapping on a Cube 25 Slide 26 26 Understanding TriangleMesh 26 8 points 12 faces 14 texCoords 12 faces Image 0, 0 0, 1 1, 0 1, 1 Tip: Best practice for texture map dimensions is powers of two (e.g. 1024x512) Slide 27 27 Using TriangleMesh Points 27 Tip: The API for points, texCoords, and faces is currently being modified, primarily to hold this data in different structures. (For example) Slide 28 28 Using TriangleMesh Texture Coords 28 (For example) Slide 29 29 Using TriangleMesh Faces 29 0, 2, 1 are points[] indices 10, 5, 9 are texCoords[] indices Slide 30 30 Using TriangleMesh Smoothing Groups 30 These are faces[] indices (and putting all the pieces together of our user-defined shape) Slide 31 31 Real-World Example of Mesh Geometry Slide 32 32 3D Lights Lights are nodes in the scene graph PointLight AmbientLight Default light provided if no active lights 32 https://wikis.oracle.com/display/OpenJDK/3D+Features Slide 33 33 Lights, Camera, Action! Tip: The camera is also a node in the scene graph, so it is moveable Slide 34 34 More Fun with JavaFX 3D Slide 35 35 Using a SubScene 35 SubScene is a special node for scene separation Renders part of the scene with a different camera Some use cases are: Overlay for UI controls Underlay for background "Heads-up" display Slide 36 36 Creating a SubScene 36 Slide 37 37 Behavior of this SubScene 37 Slide 38 38 3D Node Picking 38 Some events (e.g. MouseEvent and TouchEvent ) have a getPickResult() method PickResult contains info such as Node picked 3D point picked on node Distance of point from camera Face # of node picked Slide 39 39 3D Node Picking 39 Slide 40 40 Platonic Solids 40 Tip: Sample code for loading a 3D format will be made available. Third-party loaders are available as well. Slide 41 41 Example 3D / multi-touch app: ZenGuitar3D Slide 42 42 Showing the Picker ( TouchEvent ) Slide 43 43 Rotating Instrument Picker with Scroll Gesture Slide 44 44 Playing Strings ( TouchEvent / TouchPoint ) Slide 45 45 Switching Modes ( TouchPoint#belongsTo ) GuitarString3D instance Slide 46 46 Setting up to Rotate on Three Axes Slide 47 47 Using Scroll Gesture for X/Y Rotate Slide 48 48 Using Rotate Gesture for Z Rotate Slide 49 49 Using Zoom Gesture for Scaling Slide 50 50 Using Timeline to Transform to Home Position Slide 51 51 ZenGuitar3D Uses the JFugue5 Library An open-source Java API for programming music without the complexities of MIDI Developed by David Koelle Available at http://JFugue.orghttp://JFugue.org Slide 52 52 Questions? Slide 53 53 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle Corporation @JavaFXpert [email protected] Slide 54 54