Java 3D

Selman, D. (2002) Java 3D Programming, Manning Publications

Download eBook PDF (PDF 4,500KB)
Download Source Code (ZIP 3,028KB)

Java 3D Programming steps programmers through the important design and implementation phases of developing a successful Java 3D application. The book provides invaluable guidance on whether to use Java 3D, user interface design, geometry creation, scene manipulation and final optimizations. The book does not attempt to exhaustively cover the API or replicate the official documentation but rather serves as a roadmap to alert programmers of design issues and potential pitfalls.

The author distills 12 months of using the Java 3D API for commercial projects, as well as innumerable discussions on the Java 3D email list into a book that all Java 3D developers will appreciate. Experienced Java 3D developers will applaud an authoritative resource containing the state-of-the-art in techniques and workarounds, while novice Java 3D programmers will gain a fast-track into Java 3D development, avoiding the confusion, frustration and time wasted learning Java 3D techniques and terminology.

Java 3D Programming comes complete with a comprehensive set of programming examples to illustrate the techniques, features, workarounds and bug fixes contained in the main text.

Readers of this book would include students and postgraduate researchers developing visualization applications for academia. Moderately experienced in Java, some experience of 3D graphics, little or no experience of Java 3D is needed. R+D s/w engineers at commercial institutions. Experienced Java developers, experienced with OpenGL or VRML, little or no experience with Java 3D.

1. What is Java 3D and is it for me?

1.1. Strengths

1.2. Weaknesses

1.3. System requirements (developer and end user)

1.4. Expected performance

1.5. Running the examples

1.6. Summary

2. 3D graphics programming

2.1. Learning 3D graphics programming

2.2. Projecting from 3D world coordinates to 2D screen coordinates

2.3. Lighting effects

2.4. Putting it together—MyJava3D

2.5. Summary

3. Getting started, Hello Java 3D!

3.1. Installation

3.2. Your first Java 3D application

3.3. Exercises for the reader

3.4. Summary

4. The scenegraph

4.1. Overview

4.2. What is a scenegraph?

4.3. Java 3D and the scenegraph

4.4. Elements of scenegraph design

4.5. Scenegraph advantages

4.6. Hierarchical control

4.7. Immediate mode vs. retained mode vs. mixed mode

4.8. Summary

5. Scenegraph node reference

5.1. Scenegraph compilation

5.2. Node

5.3. Bounds and CollisionBounds

5.4. Group

5.5. Switch

5.6. BranchGroup

5.7. OrderedGroup

5.9. Primitive

5.10. TransformGroup

5.11. Summary

6. Defining the universe

6.1. Locales and HiResCoord

6.2. View, ViewPlatform, and Locale

6.3. SimpleUniverse

6.4. Background geometry

6.5. Using multiple views

6.6. Summary

7. Data model design

7.1. Choosing a data model

7.2. Performance objectives

7.3. Summary

8. Geometry reference

8.1. Shape3D

8.2. Primitive

8.3. GeomBuffer

8.4. Rasters

8.5. Text2D

8.6. Text3D

8.7. Morph

8.8. Summary

9. Setting geometry appearances

9.1. Introduction

9.2. Appearance

9.3. ColoringAttributes

9.4. LineAttributes

9.5. Material

9.6. PointAttributes

9.7. PolygonAttributes

9.8. RenderingAttributes

9.9. TexCoordGeneration

9.10. TextureAttributes

9.11. Texture

9.12. TransparencyAttributes

9.13. Summary

10. Lights

10.1. Lights

10.2. Light node

10.3. AmbientLight

10.4. DirectionalLight

10.5. PointLight

10.6. SpotLight

10.7. Lighting, material attributes, and per-vertex colors

10.8. Summary

11. Behaviors—navigation, alignment, and LOD

11.1. Introduction

11.2. Behavior class

11.3. Anatomy of a typical behavior

11.4. Overview of the built-in behaviors

11.5. Overview of Wakeup criteria

11.6. Using keyboard behaviors

11.7. Using mouse behaviors

11.8. Billboard behavior

11.9. Using LOD behaviors

11.10. Summary

12. Using Interpolator behaviors

12.1. The Interpolator class

12.2. The Alpha class

12.3. Example of Interpolator usage

12.4. Using a cubic-spline interpolator

12.5. Summary

13. Writing custom behaviors

13.1. The BehaviorTest example

13.2. ObjectSizeBehavior

13.3. ExplodeBehavior

13.4. StretchBehavior

13.5. Using behaviors for debugging

13.6. Summary

14. Using texture images

14.1. Introduction

14.2. 3D texture coordinates

14.3. Texture and multiple levels of detail

14.4. TextureAttributes

14.5. Using transparent geometry with transparent texture images

14.6. Animated (video) texture mapping

14.7. Summary

15. Geometry utility classes and object loaders

15.1. Introduction

15.2. Triangulator, normal vector generator, stripifier

15.3. Object loaders

15.4. Summary

16. Object interaction?picking and collision detection

16.1. Introduction to picking

16.2. PickShapes

16.3. PickTool

16.4. PickCanvas

16.5. PickIntersection

16.6. PickResult

16.7. VRML picking example

16.8. Using picking for collision detection

16.9. Conclusions

17. Java 3D, Swing, and applets

17.1. Building the Java 3D Swing application

17.2. Adding support for running as an applet

17.3. Conclusions

18. Java 3D system architecture

18.1. Introduction

18.2. Threads running a Java 3D application

18.3. MasterControl

18.4. BehaviorScheduler

18.5. InputDeviceScheduler

18.6. Renderer

18.7. StructureUpdateThread

18.8. TimerThread

18.9. SceneGraphObject

18.10. Node types

18.11. Exception Strings

18.12. J3D DLL

18.13. Summary

Appendix A: Example code

A.1. List of examples

A.2. Installation notes

A.3. Instructions for running the examples

Appendix B: Programming and graphics resources online

Appendix C: Primitives, the geometry cache, and GeomBuffer

C.1. Box objects and GeomBuffer

C.2. Primitives and the geometry cache

C.3. GeomBuffer

Bibliography


Klawonn, F.  (2012) Introduction to Computer Graphics: Using Java 2D and 3D (Undergraduate Topics in Computer Science), Springer

Download eBook PDF (PDF 2,616KB)
Download 2D Source Code (ZIP 67KB)
Download 3D Source Code (ZIP 636KB)

Download TOC (PDF 54KB)

Companion Website: http://public.rz.fh-wolfenbuettel.de/~klawonn/computergraphics/index.html

This book is an essential tool for second-year undergraduate students and above, providing clear and concise explanations of the basic concepts of computer graphics, and enabling the reader to immediately implement these concepts in Java 2D and/or 3D with only elementary knowledge of the programming language. Features: provides an ideal, self-contained introduction to computer graphics, with theory and practice presented in integrated combination; presents a practical guide to basic computer graphics programming using Java 2D and 3D; includes new and expanded content on the integration of text in 3D, particle systems, billboard behaviours, dynamic surfaces, the concept of level of detail, and the use of functions of two variables for surface modelling; contains many pedagogical tools, including numerous easy-to-understand example programs and end-of-chapter exercises; supplies useful supplementary material, including additional exercises, solutions, and program examples, at an associated website.


Introduction to Programming with Java 3D – Tutorial/Course Notes – Sun Microsystems, Inc / San Diego Supercomputer Center, University of California at San Diego

Download Tutorial Notes (PDF 3,052KB)

Java 3D is a new cross-platform API for developing 3D graphics applications in Java. Its feature set is designed to enable quick development of complex 3D applications and, at the same time, enable fast and efficient implementation on a variety of platforms, from PCs to workstations. Using Java 3D, software developers can build cross-platform applications that build 3D scenes programmatically, or via loading 3D content from VRML, OBJ, and/or other external files. The Java 3D API includes a rich feature set for building shapes, composing behaviors, interacting with the user, and controlling rendering details.
In this tutorial, participants learn the concepts behind Java 3D, the Java 3D class hierarchy, typical usage patterns, ways of avoiding common mistakes, animation and scene design techniques, and tricks for increasing performance and realism.

Abstract | Preface | Lecturer information | Using the Java examples | Tutorial slides


Getting Started with the Java 3D APIBouvier, D. J. (1999) Getting Started with the Java 3D API – A Tutorial for Beginners, Sun Microsystems, Inc.
The Java 3D API is a hierarchy of Java classes which serve as the interface to a sophisticated three-dimensional graphics and sound rendering system. Despite all of this functionality, the API is straightforward to use. This tutorial introduces the main concepts of the Java 3D API, including many code samples, examples, and diagrams.

Download Chapter 0 – Overview and Appendices (PDF 191KB)
j3dDownload Chapter 1 – Getting Started (PDF 199KB)
j3dDownload Chapter 2 – Creating Geometry (PDF 237KB)
j3dDownload Chapter 3 – Easier Content Creation (PDF 180KB)
j3dDownload Chapter 4 – Interaction (PDF 231KB)
j3dDownload Chapter 5 – Animation (PDF 264KB)
j3dDownload Chapter 6 – Lights (PDF 412KB)
Download Chapter 7 – Textures (PDF 568KB)
Download Source Code – Tutorial Examples (JAR 329KB) Available from: http://web.cs.ucla.edu/classes/cs269/Java3DTutorial/


java.net - Go to HomepageJava 3D Official Website (The Source for Java Technology Collaboration)
(https://java3d.java.net/)

This is the parent project for all Java 3DTM -related sub-projects on java.net. These sub-projects include: j3d-core (the core 3D API), vecmath (the 3D vector math package), and j3d-core-utils (the 3D core utilities), among others. See the complete list of sub-projects at the left navigation of this page.


Java 3D TM Graphics
(http://www.java3d.org/)

This is java3d.org. A site for demonstrating and sharing information about Java 3D, the extension to Java for displaying three dimensional graphics.
You can start to learn Java 3D from the tutorial or you can look at our examples and explore our virtual worlds.

Java 3D Tutorial