Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle

Similar presentations


Presentation on theme: "1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle"— Presentation transcript:

1 1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle

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

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 Oracle’s products remains at the sole discretion of Oracle.

4 4 Introduction to JavaFX 3D

5 5 5 Start Here:

6 6 6 Download JDK 8 Early Access Release

7 7 7 Visit the 3D Features for JavaFX 8 Wiki https://wikis.oracle.com/display/OpenJDK/3D+Features

8 8 8 Visit Here: Tip: This site is authored by Oracle JavaFX Engineers

9 9 “JavaFX 3D gives you the ability to use 3D geometry, cameras, and lights in JavaFX.”

10 10 JavaFX 3D Application Example 10

11 11 JavaFX 3D Use Cases ■ Inventory and Process Visualization ■ Scientific and Engineering Visualization ■ 3D Charting ■ Mechanical CAD and CAE ■ Medical Imaging 11

12 12 More JavaFX 3D Use Cases ■ Product Marketing ■ Architectural Design and Walkthroughs ■ Advanced User Experience ■ Mission Planning ■ Training ■ Entertainment 12

13 13 Nuts and Bolts of JavaFX 3D (Shapes, Materials, Textures, Lights, Cameras)

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

15 15 Creating Primitive Shapes and Materials

16 16 Rotating the 3D Shapes Tip: Use lambda expressions as shown here to simplify event handling

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

18 18 UV Mapping Textures to Shapes 18 Tip: A texture is a 2D image to be mapped on a 3D surface Source:

19 19 Placing a Texture on a Sphere 19

20 20 Placing a Texture on a Sphere 20

21 21 Placing a Texture on a Cylinder 21 radiusheight Note that the texture is mapped three times to the cylinder

22 22 Specifying Divisions on a Cylinder 22 radius height divisions

23 23 Placing an Image on a Box 23 Note that the texture is mapped six times to the box Tip: A Box doesn’t have to be a cube. It may have different width, height and depth args

24 24 Using TriangleMesh / MeshView ■ If the same texture on all sides of the cube isn’t desired, a user-defined shape may be created using TriangleMesh and MeshView 24

25 25 UV Mapping on a Cube 25

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)

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)

28 28 Using TriangleMesh Texture Coords 28 (For example)

29 29 Using TriangleMesh Faces 29 0, 2, 1 are points[] indices 10, 5, 9 are texCoords[] indices

30 30 Using TriangleMesh Smoothing Groups 30 These are faces[] indices (and putting all the pieces together of our user-defined shape)

31 31 Real-World Example of Mesh Geometry

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

33 33 Lights, Camera, Action! Tip: The camera is also a node in the scene graph, so it is moveable

34 34 More Fun with JavaFX 3D

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

36 36 Creating a SubScene 36

37 37 Behavior of this SubScene 37

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

39 39 3D Node Picking 39

40 40 Platonic Solids 40 Tip: Sample code for loading a 3D format will be made available. Third-party loaders are available as well.

41 41 Example 3D / multi-touch app: ZenGuitar3D

42 42 Showing the Picker ( TouchEvent )

43 43 Rotating Instrument Picker with Scroll Gesture

44 44 Playing Strings ( TouchEvent / TouchPoint )

45 45 Switching Modes ( TouchPoint#belongsTo ) GuitarString3D instance

46 46 Setting up to Rotate on Three Axes

47 47 Using Scroll Gesture for X/Y Rotate

48 48 Using Rotate Gesture for Z Rotate

49 49 Using Zoom Gesture for Scaling

50 50 Using Timeline to Transform to Home Position

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

52 52 Questions?

53 53 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle

54 54


Download ppt "1 Exploring JavaFX 3D Jim Weaver Java Technology Ambassador Oracle"

Similar presentations


Ads by Google