JavaTM 3D API Specification

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.