Version 0.98, July 16, 1997
Contents
|
Preface
1 Introduction to Java 3D
- 1.1 What is Java 3D?
- 1.2 Goals
- 1.3 Programming Paradigm
- 1.3.1 The Scene Graph Programming Model
- 1.3.2 Rendering Modes
- 1.3.3 Extensibility
- 1.4 High Performance
- 1.4.1 Layered Implementation
- 1.4.2 Target Hardware Platforms
- 1.5 Support for Building Applications and Applets
- 1.5.1 Browsers
- 1.5.2 Games
- 1.6 Overview of Java 3D Object Hierarchy
- 1.7 Structuring the Java 3D Program
- 1.7.1 Java 3D Application Scene Graph
- 1.7.2 Recipe for Java 3D Program
- 1.7.3 HelloUniverse: A Sample Java 3D Program
2 Scene Graph Overview
- 2.1 Scene Graph Structure
- 2.1.1 Spatial Separation
- 2.1.2 State Inheritance
- 2.1.3 Rendering
- 2.2 Scene Graph Objects
- 2.2.1 Node Objects
- 2.2.2 Node Component Objects
- 2.3 Scene Graph Superstructure Objects
- 2.3.1 VirtualUniverse Object
- 2.3.2 Locale Object
- 2.4 Scene Graph Viewing Objects
- 2.4.1 Canvas3D Object
- 2.4.2 Screen3D Object
- 2.4.3 View Object
- 2.4.4 PhysicalBody Object
- 2.4.5 PhysicalEnvironment Object
3 Scene Graph Superstructure
- 3.1 The Virtual Universe
- 3.2 Establishing a Scene
- 3.3 Loading a Virtual Universe
- 3.4 Coordinate Systems
- 3.5 High Resolution Coordinates
- 3.5.1 Java 3D High-resolution Coordinates
- 3.5.2 Java 3D Virtual World Coordinates
- 3.5.3 Details of High-resolution Coordinates
- 3.6 API for Superstructure Objects
- 3.6.1 VirtualUniverse
- 3.6.2 Locale
- 3.6.3 HiResCoord
4 Group Node Objects
- 4.1 Group Node
- 4.2 BranchGroup Node
- 4.3 TransformGroup Node
- 4.4 OrderedGroup Node
- 4.5 Coplanar Node
- 4.6 Switch Node
- 4.7 SharedGroup Node
5 Leaf Node Objects
- 5.1 Leaf Node
- 5.2 Shape3D Node
- 5.3 BoundingLeaf Node
- 5.4 Background Node
- 5.5 Clip Node
- 5.6 Fog Node
- 5.6.1 ExponentialFog Node
- 5.6.2 LinearFog Node
- 5.7 Light Node
- 5.7.1 AmbientLight Node
- 5.7.2 DirectionalLight Node
- 5.7.3 PointLight Node
- 5.7.4 SpotLight Node
- 5.8 Sound Node
- 5.8.1 BackgroundSound Node
- 5.8.2 PointSound Node
- 5.8.3 ConeSound Node
- 5.9 Soundscape Node
- 5.10 ViewPlatform Node
- 5.11 Behavior Node
- 5.12 Morph Node
- 5.13 Link Node
6 Reusing Scene Graphs
- 6.1 Sharing Subgraphs
- 6.1.1 SharedGroup Node
- 6.1.2 Link Leaf Node
- 6.2 Cloning Subgraphs
- 6.2.1 References To Node Component Objects
- 6.2.2 References to Other Scene Graph Nodes
- 6.2.3 Dangling References
- 6.2.4 Subclassing Nodes
- 6.2.5 Example User Behavior Node
7 Node Component Objects
- 7.1 Node Component Objects-Attributes
- 7.1.1 Appearance Object
- 7.1.2 ColoringAttributes Object
- 7.1.3 LineAttributes Object
- 7.1.4 PointAttributes Object
- 7.1.5 PolygonAttributes Object
- 7.1.6 RenderingAttributes Object
- 7.1.7 TextureAttributes Object
- 7.1.8 TransparencyAttributes Object
- 7.1.9 Material Object
- 7.1.10 Texture Object
- 7.1.11 Texture2D Object
- 7.1.12 Texture3D Object
- 7.1.13 TexCoordGeneration Object
- 7.1.14 MediaContainer Object
- 7.1.15 AuralAttributes Object
- 7.1.16 PixelArray Objects
- 7.1.17 DepthImage Object
- 7.1.18 DepthImageFloat Object
- 7.1.19 DepthImageInt Object
- 7.1.20 DepthImageNative Object
- 7.1.21 Bounds Objects
- 7.1.22 Transform3D Object
- 7.1.23 Squash Object
- 7.2 Node Component Objects-Geometry
- 7.2.1 GeometryArray Objects
- 7.2.2 IndexedGeometryArray Objects
- 7.2.3 CompressedGeometry Object
- 7.2.4 CompressedGeometryHeader Object
- 7.2.5 Raster Object
- 7.2.6 Font3D Object
- 7.2.7 FontExtrusion Object
- 7.2.8 Text3D Geometry Object
- 7.3 Math Component Objects
- 7.3.1 Tuple Objects
- 7.3.2 Matrix Objects
- 7.4 NodeReferenceTable Object
8 The Java 3D View Model
- 8.1 Why a New Model?
- 8.1.1 The Physical Environment Influences the View
- 8.2 Separation of Physical and Virtual
- 8.2.1 The Virtual World
- 8.2.2 The Physical World
- 8.3 ViewPlatform-A Place In the Virtual World
- 8.3.1 Moving Through the Virtual World
- 8.3.2 Dropping In On a Favorite Place
- 8.3.3 View Attach Policy
- 8.3.4 Associating Geometry With a ViewPlatform
- 8.4 The Objects That Define the View
- 8.5 Generating a View
- 8.5.1 Composite Model and Viewing Transformations
- 8.5.2 Multiple Locales
- 8.6 A Minimal Environment
- 8.7 The View Object
- 8.7.1 Projection Policy
- 8.7.2 Clip Policies
- 8.7.3 Projection and Clip Parameters
- 8.8 The Screen3D Object
- 8.9 The Canvas3D Object
- 8.9.1 Window System Provided Parameters
- 8.9.2 Other Canvas3D Parameters
- 8.9.3 Canvas3D Policies
- 8.10 The PhysicalBody Object
- 8.11 The PhysicalEnvironment Object
9 Input
- 9.1 InputDevice Object
- 9.2 Sensors
- 9.2.1 Using and Assigning Sensors
- 9.2.2 Behind the (Sensor) Scenes
- 9.2.3 The Sensor Object
- 9.2.4 The SensorRead Object
- 9.3 Tracker Plug-ins
10 Behaviors, Interpolators, and Picking
- 10.1 Behavior Object
- 10.1.1 Code Structure
- 10.1.2 WakeupCondition
- 10.1.3 WakeupCriterion
- 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.6 Predefined Behaviors
- 10.6.1 Interpolators
- 10.6.2 The Alpha Class
- 10.6.3 The Interpolator Behavior Class
- 10.6.4 PositionInterpolator
- 10.6.5 RotationInterpolator Object
- 10.6.6 ColorInterpolator Object
- 10.6.7 ScaleInterpolator Object
- 10.6.8 SwitchValueInterpolator Object
- 10.6.9 TransparencyInterpolator Object
- 10.6.10 PositionPathInterpolator Object
- 10.6.11 RotPosPathInterpolator Object
- 10.6.12 RotPosScalePathInterpolator Object
- 10.6.13 RotationPathInterpolator Object
- 10.7 LOD Behaviors
- 10.8 Billboard Behavior
- 10.9 Picking
- 10.9.1 SceneGraphPath Object
11 The Java 3D Execution and Rendering Model
- 11.1 Three Major Rendering Models
- 11.1.1 Immediate Mode
- 11.1.2 Retained Mode
- 11.1.3 Compiled-retained Mode
- 11.2 Instantiating the Render Loop
- 11.2.1 An Application-level Perspective
- 11.2.2 Retained and Compiled-retained Rendering Modes
12 Immediate Mode Rendering
- 12.1 Two Styles of Immediate Mode
- 12.1.1 Pure Immediate Mode Rendering
- 12.1.2 Mixed Mode Rendering
- 12.2 Canvas3D Methods
- 12.3 API for Immediate Mode
- 12.3.1 GraphicsContext3D
A Math Objects
- A.1 Tuple Objects
- A.1.1 Tuple2f Class
- A.1.2 Tuple3b Class
- A.1.3 Tuple3d Class
- A.1.4 Tuple3f Class
- A.1.5 Tuple4b Class
- A.1.6 Tuple4d Class
- A.1.7 Tuple4f Class
- A.1.8 AxisAngle4d Class
- A.1.9 AxisAngle4f Class
- A.1.10 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 Geometry Compression Overview
- B.1.1 Compression
- B.1.2 Decompression
- B.2 Chapter Organization
- B.3 Generalized Triangle Strip
- B.4 Generalized Triangle Mesh
- B.5 Position Representation and Quantization
- B.6 Color Representation and Quantization
- B.7 Normal Representation and Quantization
- B.7.1 Normal as Indices
- B.7.2 Normal Encoding Parameterization
- B.8 Modified Huffman Encoding
- B.9 Geometry Compression Commands
- B.10 Bit Layout of Geometry Decompression Commands
- B.11 Geometry Decompression Command Bit Details
- B.11.1 NOP
- B.11.2 setState
- B.11.3 setTable
- B.11.4 meshBufferReference
- B.11.5 Position Sub-command
- B.11.6 Color Sub-command
- B.11.7 Normal Sub-command
- B.11.8 vertex
- B.11.9 normal
- B.11.10 color
- B.12 Semantics of Geometry Decompression Commands
- B.12.1 Header, Body to Variable Length Command
- B.12.2 Variable Length Command to Command
- B.12.3 Delta Position to Position
- B.12.4 Delta Color to Color
- B.12.5 Encoded Delta Normal to Encoded Normal
- B.12.6 Encoded Normal to Rectilinear Normal
- B.13 Semantics of Vertices
- B.13.1 Command to Vertex
- B.13.2 Vertex to Intermediate Triangle
- B.13.3 Intermediate Triangle to Final Triangle
- B.14 Outline of Geometry Process
- B.14.1 Compressing Geometry Data
- B.14.2 Convert to Generalized Mesh Format
- B.14.3 Position
- B.14.4 Normals
- B.14.5 Colors
- B.14.6 Collect Delta Code Statistics
- B.14.7 Position Delta Code Statistics
- B.14.8 Color Delta Code Statistics
- B.14.9 Normal Delta Code Statistics
- B.14.10 Assign Huffman Tags
- B.14.11 Assemble the Pieces Into a Bitstream
C View Model Implementation 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 Sensors and Their Location In the Virtual World
- C.5.3 Frame Start Time and Duration
- C.5.4 Scene Antialiasing
- C.5.5 Depth Buffer
- C.6 The Screen3D Object
- C.6.1 Screen3D Calibration Parameters
- C.6.2 Accessing and Modifying An Eye's Image-plate
Position- C.6.3 Accessing and Changing Head Tracker Coordinates
- C.7 The Canvas3D Object
- C.7.1 Window Eyepoint Policy
- C.7.2 Monoscopic View Policy
- C.7.3 Scene Antialiasing
- C.8 The PhysicalBody Object
- C.9 The PhysicalEnvironment Object
- C.9.1 Input Sensors
- C.9.2 Audio Playback
- C.10 Viewing in Head Tracked Environments
- C.10.1 A Room-mounted Display (Computer Monitor) With
Head-Tracking- C.10.2 A Head-Mounted Display, 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 IllegalSharingException
- D.5 MultipleParentException
- D.6 RestrictedAccessException
- D.7 SceneGraphCycleException
- D.8 SingularMatrixException
- D.9 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
F VRML Support
- F.1 VRML 1.0
- F.1.1 Mapping VRML 1.0 Files Onto Java3D Objects
- F.1.2 A VRML 1.0 Browsing Environment
- F.2 VRML 2.0
- F.2.1 A Fundamental Mismatch
- F.2.2 An Approach
- F.2.3 A Browser
- F.2.4 Optimizing For Viewing Versus Editing
Glossary
Copyright © 1997, Sun Microsystems, Inc. All rights reserved.