Java 3D Programming
Daniel Selman
  • March 2002
  • ISBN 9781930110359
  • 400 pages

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.

Table of Contents show full

preface

acknowledgments

about this book

about the cover illustration

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 19

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

index

About the book

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.

About the reader

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.

About the author

Daniel Selman is a Staff Engineer for BEA Systems, working on personalization technology for scalable J2EE applications, and specification lead for JSR-94, the Java Rule Engine API. As Managing Director of Tornado Labs Limited, he worked on commercial projects using the Java 3D API. He has written modeling applications for CAD visualization and facial modeling/animation tools using OpenGL and C++. He has a B.S. in Civil Engineering with Computing and an M.S. in Artificial Intelligence.


eBook $39.99 PDF only

FREE domestic shipping on three or more pBooks