Version 1.2, April 2000
Contents
|
 Preface
 1 Introduction to Java 3D
- 1.1 Goals
- 1.2 Programming Paradigm
- 1.2.1 The Scene Graph Programming Model
- 1.2.2 Rendering Modes
- 1.2.3 Extensibility
- 1.3 High Performance
- 1.3.1 Layered Implementation
- 1.3.2 Target Hardware Platforms
- 1.4 Support for Building Applications and Applets
- 1.4.1 Browsers
- 1.4.2 Games
- 1.5 Overview of Java 3D Object Hierarchy
- 1.6 Structuring the Java 3D Program
- 1.6.1 Java 3D Application Scene Graph
- 1.6.2 Recipe for a Java 3D Program
- 1.6.3 HelloUniverse: A Sample Java 3D Program
 2 Java 3D Concepts
- 2.1 Basic Scene Graph Concepts
- 2.1.1 Constructing a Simple Scene Graph
- 2.1.2 A Place For Scene Graphs
- 2.1.3 SimpleUniverse Utility
- 2.1.4 Processing a Scene Graph
- 2.2 Features of Java 3D
- 2.2.1 Bounds
- 2.2.2 Nodes
- 2.2.3 Live and/or Compiled
 3 Scene Graph Basics
- 3.1 Scene Graph Structure
- 3.1.1 Spatial Separation
- 3.1.2 State Inheritance
- 3.1.3 Rendering
- 3.2 Scene Graph Objects
- 3.2.1 Node Objects
- 3.2.2 NodeComponent Objects
- 3.3 Scene Graph Superstructure Objects
- 3.3.1 VirtualUniverse Object
- 3.3.2 Locale Object
- 3.4 Scene Graph Viewing Objects
- 3.4.1 Canvas3D Object
- 3.4.2 Screen3D Object
- 3.4.3 View Object
- 3.4.4 PhysicalBody Object
- 3.4.5 PhysicalEnvironment Object
 4 Scene Graph Superstructure
- 4.1 The Virtual Universe
- 4.2 Establishing a Scene
- 4.3 Loading a Virtual Universe
- 4.4 Coordinate Systems
- 4.5 High-Resolution Coordinates
- 4.5.1 Java 3D High-Resolution Coordinates
- 4.5.2 Java 3D Virtual World Coordinates
- 4.5.3 Details of High-Resolution Coordinates
- 4.6 API for Superstructure Objects
- 4.6.1 VirtualUniverse Object
- 4.6.2 Locale Object
- 4.6.3 HiResCoord Object
 5 Group Node Objects
- 5.1 Group Node
- 5.2 BranchGroup Node
- 5.3 TransformGroup Node
- 5.4 OrderedGroup Node
- 5.5 DecalGroup Node
- 5.6 Switch Node
- 5.7 SharedGroup Node
 6 Leaf Node Objects
- 6.1 Leaf Node
- 6.2 Shape3D Node
- 6.2.1 OrientedShape3D Node
- 6.3 BoundingLeaf Node
- 6.4 Background Node
- 6.5 Clip Node
- 6.6 ModelClip Node
- 6.7 Fog Node
- 6.7.1 ExponentialFog Node
- 6.7.2 LinearFog Node
- 6.8 Light Node
- 6.8.1 AmbientLight Node
- 6.8.2 DirectionalLight Node
- 6.8.3 PointLight Node
- 6.8.4 SpotLight Node
- 6.9 Sound Node
- 6.9.1 BackgroundSound Node
- 6.9.2 PointSound Node
- 6.9.3 ConeSound Node
- 6.10 Soundscape Node
- 6.11 ViewPlatform Node
- 6.12 Behavior Node
- 6.13 Morph Node
- 6.14 Link Node
- 6.15 AlternateAppearance Node
 7 Reusing Scene Graphs
- 7.1 Sharing Subgraphs
- 7.1.1 SharedGroup Node
- 7.1.2 Link Leaf Node
- 7.2 Cloning Subgraphs
- 7.2.1 References to Node Component Objects
- 7.2.2 References to Other Scene Graph Nodes
- 7.2.3 Dangling References
- 7.2.4 Subclassing Nodes
- 7.2.5 NodeReferenceTable Object
- 7.2.6 Example User Behavior Node
 8 Node Component Objects
- 8.1 Node Component Objects: Attributes
- 8.1.1 Alpha Object
- 8.1.2 Appearance Object
- 8.1.3 ColoringAttributes Object
- 8.1.4 LineAttributes Object
- 8.1.5 PointAttributes Object
- 8.1.6 PolygonAttributes Object
- 8.1.7 RenderingAttributes Object
- 8.1.8 TextureAttributes Object
- 8.1.9 TransparencyAttributes Object
- 8.1.10 Material Object
- 8.1.11 Texture Object
- 8.1.12 Texture2D Object
- 8.1.13 Texture3D Object
- 8.1.14 TexCoordGeneration Object
- 8.1.15 TextureUnitState Object
- 8.1.16 MediaContainer Object
- 8.1.17 AuralAttributes Object
- 8.1.18 ImageComponent Object
- 8.1.19 ImageComponent2D Object
- 8.1.20 ImageComponent3D Object
- 8.1.21 DepthComponent Object
- 8.1.22 DepthComponentFloat Object
- 8.1.23 DepthComponentInt Object
- 8.1.24 DepthComponentNative Object
- 8.1.25 Bounds Object
- 8.1.26 BoundingBox Object
- 8.1.27 BoundingSphere Object
- 8.1.28 BoundingPolytope Object
- 8.1.29 Transform3D Object
- 8.2 Node Component Objects: Geometry
- 8.2.1 GeometryArray Object
- 8.2.2 GeometryUpdater Interface
- 8.2.3 PointArray Object
- 8.2.4 LineArray Object
- 8.2.5 TriangleArray Object
- 8.2.6 QuadArray Object
- 8.2.7 GeometryStripArray Object
- 8.2.8 LineStripArray Object
- 8.2.9 TriangleStripArray Object
- 8.2.10 TriangleFanArray Object
- 8.2.11 IndexedGeometryArray Object
- 8.2.12 IndexedPointArray Object
- 8.2.13 IndexedLineArray Object
- 8.2.14 IndexedTriangleArray Object
- 8.2.15 IndexedQuadArray Object
- 8.2.16 IndexedGeometryStripArray Object
- 8.2.17 IndexedLineStripArray Object
- 8.2.18 IndexedTriangleStripArray Object
- 8.2.19 IndexedTriangleFanArray Object
- 8.2.20 CompressedGeometry Object
- 8.2.21 CompressedGeometryHeader Object
- 8.2.22 Raster Object
- 8.2.23 Font3D Object
- 8.2.24 FontExtrusion Object
- 8.2.25 Text3D Geometry Object
- 8.3 Math Component Objects
- 8.3.1 Tuple Objects
- 8.3.2 Matrix Objects
 9 View Model
- 9.1 Why a New Model?
- 9.1.1 The Physical Environment Influences the View
- 9.2 Separation of Physical and Virtual
- 9.2.1 The Virtual World
- 9.2.2 The Physical World
- 9.3 The Objects That Define the View
- 9.4 ViewPlatform: A Place in the Virtual World
- 9.4.1 Moving through the Virtual World
- 9.4.2 Dropping in on a Favorite Place
- 9.4.3 View Attach Policy
- 9.4.4 Associating Geometry with a ViewPlatform
- 9.5 Generating a View
- 9.5.1 Composing Model and Viewing Transformations
- 9.5.2 Multiple Locales
- 9.6 A Minimal Environment
- 9.7 The View Object
- 9.7.1 Projection Policy
- 9.7.2 Clip Policies
- 9.7.3 Projection and Clip Parameters
- 9.7.4 Frame Start Time, Duration, and Number
- 9.7.5 View Traversal and Behavior Scheduling
- 9.7.6 Scene Antialiasing
- 9.7.7 Depth Buffer
- 9.8 The Screen3D Object
- 9.8.1 Off-Screen Rendering
- 9.9 The Canvas3D Object
- 9.9.1 Window System-Provided Parameters
- 9.9.2 Off-Screen Rendering
- 9.9.3 Other Canvas3D Parameters
- 9.9.4 GraphicsConfigTem-plate3D Object
- 9.10 The PhysicalBody Object
- 9.11 The PhysicalEnvironment Object
 10 Behaviors and Interpolators
- 10.1 Behavior Object
- 10.1.1 Code Structure
- 10.1.2 WakeupCondition Object
- 10.1.3 WakeupCriterion Object
- 10.1.4 Composing WakeupCriterion Objects
- 10.2 Composing Behaviors
- 10.3 Scheduling
- 10.4 How Java 3D Performs Execution Culling
- 10.5 The Behavior API
- 10.5.1 The Behavior Node
- 10.5.2 WakeupCondition Object
- 10.5.3 The WakeupCriterion Objects
- 10.6 Interpolator Behaviors
- 10.6.1 Mapping Time to Alpha
- 10.6.2 Acceleration of Alpha
- 10.6.3 The Alpha Class
- 10.6.4 The Interpolator Base Class
- 10.6.5 PositionInterpolator Object
- 10.6.6 RotationInterpolator Object
- 10.6.7 ColorInterpolator Object
- 10.6.8 ScaleInterpolator Object
- 10.6.9 SwitchValueInterpolator Object
- 10.6.10 TransparencyInterpolator Object
- 10.6.11 PathInterpolator Object
- 10.6.12 PositionPathInterpolator Object
- 10.6.13 RotPosPathInterpolator Object
- 10.6.14 RotPosScalePathInterpolator Object
- 10.6.15 RotationPathInterpolator Object
- 10.7 Level-of-Detail Behaviors
- 10.7.1 LOD Object
- 10.7.2 DistanceLOD Object
- 10.8 Billboard Behavior
 11 Input Devices and Picking
- 11.1 InputDevice Interface
- 11.1.1 The Abstract Interface
- 11.1.2 Instantiating and Registering a New Device
- 11.2 Sensors
- 11.2.1 Using and Assigning Sensors
- 11.2.2 Behind the (Sensor) Scenes
- 11.2.3 The Sensor Object
- 11.2.4 The SensorRead Object
- 11.3 Picking
- 11.3.1 SceneGraphPath Object
- 11.3.2 BranchGroup Node and Locale Node Pick Methods
- 11.3.3 PickShape Object
- 11.3.4 PickBounds Object
- 11.3.5 PickPoint Object
- 11.3.6 PickRay Object
- 11.3.7 PickSegment Object
- 11.3.8 PickCone Object
- 11.3.9 PickConeRay Object
- 11.3.10 PickConeSegment Object
- 11.3.11 PickCylinder Object
- 11.3.12 PickCylinderRay Object
- 11.3.13 PickCylinderSegment Object
 12 Audio Devices
- 12.1 AudioDevice Interface
- 12.1.1 Initialization
- 12.1.2 Audio Playback
- 12.1.3 Device-Driver-Specific Data
- 12.2 AudioDevice3D Interface
- 12.3 Instantiating and Registering a New Device
 13 Execution and Rendering Model
- 13.1 Three Major Rendering Modes
- 13.1.1 Immediate Mode
- 13.1.2 Retained Mode
- 13.1.3 Compiled-Retained Mode
- 13.2 Instantiating the Render Loop
- 13.2.1 An Application-Level Perspective
- 13.2.2 Retained and Compiled-Retained Rendering Modes
 14 Immediate-Mode Rendering
- 14.1 Two Styles of Immediate-Mode Rendering
- 14.1.1 Pure Immediate-Mode Rendering
- 14.1.2 Mixed-Mode Rendering
- 14.2 Canvas3D Methods
- 14.3 API for Immediate Mode
- 14.3.1 GraphicsContext3D
- 14.3.2 J3DGraphics2D
 A Math Objects
- A.1 Tuple Objects
- A.1.1 Tuple2d Class
- A.1.2 Tuple2f Class
- A.1.3 Tuple3b Class
- A.1.4 Tuple3d Class
- A.1.5 Tuple3f Class
- A.1.6 Tuple3i Class
- A.1.7 Tuple4b Class
- A.1.8 Tuple4d Class
- A.1.9 Tuple4f Class
- A.1.10 Tuple4i Class
- A.1.11 AxisAngle4d Class
- A.1.12 AxisAngle4f Class
- A.1.13 GVector Class
- A.2 Matrix Objects
- A.2.1 Matrix3f Class
- A.2.2 Matrix3d Class
- A.2.3 Matrix4f Class
- A.2.4 Matrix4d Class
- A.2.5 GMatrix Class
 B 3D Geometry Compression
- B.1 Compression
- B.2 Decompression
- B.3 Appendix Organization
- B.4 Generalized Triangle Strip
- B.5 Generalized Triangle Mesh
- B.6 Position Representation and Quantization
- B.7 Color Representation and Quantization
- B.8 Normal Representation and Quantization
- B.8.1 Normals as Indices
- B.8.2 Normal Encoding Parameterization
- B.8.3 Special Warping Rules for Delta Normals
- B.9 Modified Huffman Encoding
- B.10 Compressed Geometry Instructions
- B.11 Bit Layout of Compressed Geometry Instructions
- B.12 Compressed Geometry Instruction Bit Details
- B.12.1 nop Instruction
- B.12.2 setState Instruction
- B.12.3 setTable Instruction
- B.12.4 mbr (meshBufferReference) Instruction
- B.12.5 Position Subinstruction
- B.12.6 Color Subinstruction
- B.12.7 Normal Subinstruction
- B.12.8 vertex Instruction
- B.12.9 setNormal Instruction
- B.12.10 setColor Instruction
- B.13 Semantics of Compressed Geometry Instructions
- B.13.1 Header and Body to Variable-Length Instruction
- B.13.2 Variable-Length Instruction to Instruction
- B.13.3 Delta Position to Position
- B.13.4 Delta Color to Color
- B.13.5 Encoded Delta Normal to Encoded Normal
- B.13.6 Encoded Normal to Rectilinear Normal
- B.14 Semantics of Vertices
- B.14.1 Instruction to Vertex
- B.14.2 Vertex to Intermediate Triangle
- B.14.3 Intermediate Triangle to Final Triangle
- B.15 Outline of Geometry Process
- B.15.1 Compressing Geometry Data
- B.15.2 Convert to Generalized Mesh Format
- B.15.3 Position
- B.15.4 Normals
- B.15.5 Colors
- B.15.6 Collect Delta Code Statistics
- B.15.7 Position Delta Code Statistics
- B.15.8 Color Delta Code Statistics
- B.15.9 Normal Delta Code Statistics
- B.15.10 Assign Huffman Tags
- B.15.11 Assemble the Pieces into a Bit Stream
- B.16 Compressed Geometry Assembly Syntax
- B.17 Compressed Geometry Instruction Verifier
 C View Model Details
- C.1 An Overview of the Java 3D View Model
- C.2 Physical Environments and Their Effects
- C.2.1 A Head-Mounted Example
- C.2.2 A Room-Mounted Example
- C.2.3 Impact of Head Position and Orientation on the
Camera- C.3 The Coordinate Systems
- C.3.1 Room-Mounted Coordinate Systems
- C.3.2 Head-Mounted Coordinate Systems
- C.4 The ViewPlatform Object
- C.5 The View Object
- C.5.1 View Policy
- C.5.2 Screen Scale Policy
- C.5.3 Window Eyepoint Policy
- C.5.4 Monoscopic View Policy
- C.5.5 Visibility Policy
- C.5.6 Coexistence Centering Enable
- C.5.7 Eyepoint in Coexistence
- C.5.8 Sensors and Their Location in the Virtual World
- C.6 The Screen3D Object
- C.6.1 Screen3D Calibration Parameters
- C.6.2 Accessing and Changing Head Tracker Coordinates
- C.7 The Canvas3D Object
- C.7.1 Scene Antialiasing
- C.7.2 Accessing and Modifying an Eye's Image Plate
Position- C.7.3 Canvas Width and Height
- C.7.4 Monoscopic View Policy
- C.8 The PhysicalBody Object
- C.9 The PhysicalEnvironment Object
- C.10 Viewing in Head-Tracked Environments
- C.10.1 A Room-Mounted Display with Head Tracking
- C.10.2 A Head-Mounted Display with Head Tracking
- C.11 Compatibility Mode
- C.11.1 Overview of the Camera-Based View Model
- C.11.2 Using the Camera-Based View Model
 D Exceptions
- D.1 BadTransformException
- D.2 CapabilityNotSetException
- D.3 DanglingReferenceException
- D.4 IllegalRenderingStateException
- D.5 IllegalSharingException
- D.6 MismatchedSizeException
- D.7 MultipleParentException
- D.8 RestrictedAccessException
- D.9 SceneGraphCycleException
- D.10 SingularMatrixException
- D.11 SoundException
 E Equations
- E.1 Fog Equations
- E.2 Lighting Equations
- E.3 Sound Equations
- E.3.1 Headphone Playback Equations
- E.3.2 Speaker Playback Equations
- E.4 Texture Mapping Equations
- E.4.1 Texture Lookup
- E.4.2 Texture Application
 F The Utility Packages
- F.1 The Utility Packages
- F.2 Package Overview
- F.3 audioengines Package
- F.4 audioengines.javasound Package
- F.5 loaders Package
- F.5.1 Interfaces
- F.5.2 Classes
- F.5.3 Exceptions
- F.6 loaders.lw3d Package
- F.7 loaders.objectfile Package
- F.8 utils.applet Package
- F.9 utils.behaviors.interpolators Package
- F.10 utils.behaviors.keyboard Package
- F.11 utils.behaviors.mouse Package
- F.11.1 Interfaces
- F.11.2 Classes
- F.12 utils.compression Package
- F.13 utils.geometry Package
- F.14 utils.image Package
- F.15 utils.picking Package
- F.16 utils.picking.behaviors Package
- F.16.1 Interfaces
- F.16.2 Classes
- F.17 utils.universe Package
 G The Example Programs
- G.1 Introduction
- G.2 Running the Example Programs
- G.2.1 Running within a Browser
- G.2.2 Running within Appletviewer
- G.3 Program Descriptions
- G.3.1 AWT_Interaction
- G.3.2 AlternateAppearance
- G.3.3 Appearance
- G.3.4 AppearanceMixed
- G.3.5 Background
- G.3.6 Billboard
- G.3.7 ConicWorld
- G.3.8 FourByFour
- G.3.9 GearTest
- G.3.10 GeometryByReference
- G.3.11 GeometryCompression
- G.3.12 HelloUniverse
- G.3.13 LOD
- G.3.14 Lightwave
- G.3.15 ModelClip
- G.3.16 Morphing
- G.3.17 ObjLoad
- G.3.18 OffScreenCanvas3D
- G.3.19 OrientedShape3D
- G.3.20 PackageInfo
- G.3.21 PickTest
- G.3.22 PickText3D
- G.3.23 PlatformGeometry
- G.3.24 PureImmediate
- G.3.25 ReadRaster
- G.3.26 Sound
- G.3.27 SphereMotion
- G.3.28 SplineAnim
- G.3.29 Text2D
- G.3.30 Text3D
- G.3.31 TextureByReference
- G.3.32 TextureTest
- G.3.33 TickTockCollision
- G.3.34 TickTockPicking
- G.3.35 VirtualInputDevice
 Glossary
 Index
Copyright © 2000, Sun Microsystems, Inc. All rights reserved.