The Java 3D API Specification / Edition 1

The Java 3D API Specification / Edition 1

by Kevin Sowizral, Michael Deering, Kevin Rushforth
     
 

ISBN-10: 0201325764

ISBN-13: 9780201325768

Pub. Date: 12/15/1997

Publisher: Addison-Wesley

The Java 3D API, an exciting new part of the JavaMedia suite of APIs, enables the creation of three-dimensional graphics applications and Internet-based 3D applets. It gives developers high-level constructs for creating and manipulating 3D geometry and for building the structures used in rendering that geometry. With Java 3D, developers can efficiently define and

Overview

The Java 3D API, an exciting new part of the JavaMedia suite of APIs, enables the creation of three-dimensional graphics applications and Internet-based 3D applets. It gives developers high-level constructs for creating and manipulating 3D geometry and for building the structures used in rendering that geometry. With Java 3D, developers can efficiently define and render very large virtual worlds. Moreover, in line with Java's "write once, run anywhere" vision, applications written using Java 3D can run on a wide range of platforms and systems and are adapted for use on the Internet. This book represents the definitive Java 3D API specification, providing authoritative and detailed descriptions of each element of the API. It offers an informative overview of Java 3D, comprehensive instructions for "scene graph" definition and construction, and a detailed description of the Java 3D View Model, an innovative model enabling applications to be displayed on a wide array of devices. The book also covers: input devices, such as six-degrees-of-freedom trackers; picking mechanisms; behaviors and interpolators for animating objects; and audio capabilities. The Java 3D Execution and Rendering Model is described in depth, including the immediate, retained, and compiled-retained modes. Comprehensive and definitive, this book is an essential reference for any Java programmer interested in entering the exciting world of three-dimensional Internet applications.

Product Details

ISBN-13:
9780201325768
Publisher:
Addison-Wesley
Publication date:
12/15/1997
Series:
Java Series
Pages:
512
Product dimensions:
7.33(w) x 9.19(h) x 0.96(d)

Table of Contents

Preface xix
1 Introduction to Java 3D
1(14)
1.1 Goals
1(1)
1.2 Programming Paradigm
2(2)
1.2.1 The Scene Graph Programming Model
2(1)
1.2.2 Rendering Modes
2(1)
1.2.3 Extensibility
3(1)
1.3 High Performance
4(1)
1.3.1 Layered Implementation
4(1)
1.3.2 Target Hardware Platforms
4(1)
1.4 Support for Building Applications and Applets
5(1)
1.4.1 Browsers
5(1)
1.4.2 Games
5(1)
1.5 Overview of Java 3D Object Hierarchy
6(1)
1.6 Structuring the Java 3D Program
7(8)
1.6.1 Java 3D Application Scene Graph
7(1)
1.6.2 Recipe for a Java 3D Program
8(1)
1.6.3 HelloUniverse: A Sample Java 3D Program
9(6)
2 Scene Graph Basics
15(12)
2.1 Scene Graph Structure
15(2)
2.1.1 Spatial Separation
15(1)
2.1.2 State Inheritance
16(1)
2.1.3 Rendering
17(1)
2.2 Scene Graph Objects
17(6)
2.2.1 Node Objects
19(3)
2.2.2 NodeComponent Objects
22(1)
2.3 Scene Graph Superstructure Objects
23(1)
2.3.1 VirtualUniverse Object
24(1)
2.3.2 Locale Object
24(1)
2.4 Scene Graph Viewing Objects
24(3)
2.4.1 Canvas3D Object
24(1)
2.4.2 Screen3D Object
25(1)
2.4.3 View Object
25(1)
2.4.4 PhysicalBody Object
26(1)
2.4.5 PhysicalEnvironment Object
26(1)
3 Scene Graph Superstructure
27(10)
3.1 The Virtual Universe
27(1)
3.2 Establishing a Scene
28(1)
3.3 Loading a Virtual Universe
29(1)
3.4 Coordinate Systems
29(1)
3.5 High-Resolution Coordinates
29(3)
3.5.1 Java 3D High-Resolution Coordinates
29(1)
3.5.2 Java 3D Virtual World Coordinates
30(1)
3.5.3 Details of High-Resolution Coordinates
30(2)
3.6 API for Superstructure Objects
32(5)
3.6.1 VirtualUniverse Object
32(1)
3.6.2 Locale Object
33(1)
3.6.3 HiResCoord Object
34(3)
4 Group Node Objects
37(12)
4.1 Group Node
37(3)
4.2 BranchGroup Node
40(2)
4.3 TransformGroup Node
42(2)
4.4 OrderedGroup Node
44(1)
4.5 DecalGroup Node
44(1)
4.6 Switch Node
45(2)
4.7 SharedGroup Node
47(2)
5 Leaf Node Objects
49(42)
5.1 Leaf Node
49(2)
5.2 Shape3D Node
51(2)
5.3 BoundingLeaf Node
53(1)
5.4 Background Node
54(2)
5.5 Clip Node
56(1)
5.6 Fog Node
57(5)
5.6.1 ExponentialFog Node
59(1)
5.6.2 LinearFog Node
60(2)
5.7 Light Node
62(6)
5.7.1 AmbientLight Node
63(1)
5.7.2 DirectionalLight Node
64(1)
5.7.3 PointLight Node
65(1)
5.7.4 SpotLight Node
66(2)
5.8 Sound Node
68(16)
5.8.1 BackgroundSound Node
72(1)
5.8.2 PointSound Node
73(4)
5.8.3 ConeSound Node
77(7)
5.9 Soundscape Node
84(2)
5.10 ViewPlatform Node
86(1)
5.11 Behavior Node
87(1)
5.12 Morph Node
87(2)
5.13 Link Node
89(2)
6 Reusing Scene Graphs
91(12)
6.1 Sharing Subgraphs
91(3)
6.1.1 SharedGroup Node
91(2)
6.1.2 Link Leaf Node
93(1)
6.2 Cloning Subgraphs
94(9)
6.2.1 References to Node Component Objects
95(1)
6.2.2 References to Other Scene Graph Nodes
96(3)
6.2.3 Dangling References
99(1)
6.2.4 Subclassing Nodes
99(1)
6.2.5 NodeReferenceTable Object
100(1)
6.2.6 Example User Behavior Node
101(2)
7 Node Component Objects
103(84)
7.1 Node Component Objects: Attributes
103(54)
7.1.1 Appearance Object
103(4)
7.1.2 Coloring Attributes Object
107(1)
7.1.3 LineAttributes Object
108(2)
7.1.4 PointAttributes Object
110(1)
7.1.5 PolygonAttributes Object
111(1)
7.1.6 RenderingAttributes Object
112(2)
7.1.7 TextureAttributes Object
114(1)
7.1.8 Transparency Attributes Object
115(2)
7.1.9 Material Object
117(2)
7.1.10 Texture Object
119(3)
7.1.11 Texture2D Object
122(1)
7.1.12 Texture3D Object
123(1)
7.1.13 TexCoordGeneration Object
124(2)
7.1.14 MediaContainer Object
126(2)
7.1.15 AuralAttributes Object
128(5)
7.1.16 ImageComponent Object
133(2)
7.1.17 ImageComponent2D Object
135(1)
7.1.18 ImageComponent3D Object
136(1)
7.1.19 DepthComponent Object
137(1)
7.1.20 DepthComponentFloat Object
137(1)
7.1.21 DepthComponentInt Object
138(1)
7.1.22 DepthComponentNative Object
138(1)
7.1.23 Bounds Object
139(1)
7.1.24 BoundingBox Object
140(1)
7.1.25 BoundingSphere Object
141(2)
7.1.26 BoundingPolytope Object
143(2)
7.1.27 Transform3D Object
145(12)
7.2 Node Component Objects: Geometry
157(27)
7.2.1 GeometryArray Object
157(7)
7.2.2 PointArray Object
164(1)
7.2.3 LineArray Object
164(1)
7.2.4 TriangleArray Object
165(1)
7.2.5 QuadArray Object
165(1)
7.2.6 GeometryStripArray Object
165(1)
7.2.7 LineStripArray Object
166(1)
7.2.8 TriangleStripArray Object
166(1)
7.2.9 TriangleFanArray Object
167(1)
7.2.10 IndexedGeometryArray Object
167(3)
7.2.11 IndexedPointArray Object
170(1)
7.2.12 IndexedLineArray Object
170(1)
7.2.13 IndexedTriangleArray Object
171(1)
7.2.14 IndexedQuadArray Object
171(1)
7.2.15 IndexedGeometryStripArray Object
172(1)
7.2.16 IndexedLineStripArray Object
172(1)
7.2.17 IndexedTriangleStripArray Object
173(1)
7.2.18 IndexedTriangleFanArray Object
174(1)
7.2.19 CompressedGeometry Object
174(1)
7.2.20 CompressedGeometryHeader Object
175(1)
7.2.21 Raster Object
176(3)
7.2.22 Font3D Object
179(1)
7.2.23 FontExtrusion Object
180(1)
7.2.24 Text3D Geometry Object
181(3)
7.3 Math Component Objects
184(3)
7.3.1 Tuple Objects
184(1)
7.3.2 Matrix Objects
185(2)
8 View Model
187(22)
8.1 Why a New Model?
188(1)
8.1.1 The Physical Environment Influences the View
188(1)
8.2 Separation of Physical and Virtual
189(1)
8.2.1 The Virtual World
189(1)
8.2.2 The Physical World
189(1)
8.3 The Objects That Define the View
190(1)
8.4 ViewPlatform: A Place in the Virtual World
191(4)
8.4.1 Moving Through the Virtual World
192(1)
8.4.2 Dropping In on a Favorite Place
193(1)
8.4.3 View Attach Policy
194(1)
8.4.4 Associating Geometry with a ViewPlatform
195(1)
8.5 Generating a View
195(3)
8.5.1 Composing Model and Viewing Transformations
196(1)
8.5.2 Multiple Locales
197(1)
8.6 A Minimal Environment
198(1)
8.7 The View Object
198(7)
8.7.1 Projection Policy
200(2)
8.7.2 Clip Policies
202(1)
8.7.3 Projection and Clip Parameters
203(1)
8.7.4 Frame Start Time and Duration
204(1)
8.7.5 Scene Antialiasing
204(1)
8.7.6 Depth Buffer
204(1)
8.8 The Screen3D Object
205(1)
8.9 The Canvas3D Object
205(2)
8.9.1 Window System-Provided Parameters
206(1)
8.9.2 Other Canvas3D Parameters
206(1)
8.10 The PhysicalBody Object
207(1)
8.11 The PhysicalEnvironment Object
208(1)
9 Behaviors and Interpolators
209(42)
9.1 Behavior Object
209(3)
9.1.1 Code Structure
210(1)
9.1.2 WakeupCondition Object
211(1)
9.1.3 WakeupCriterion Object
211(1)
9.1.4 Composing WakeupCriterion Objects
212(1)
9.2 Composing Behaviors
212(1)
9.3 Scheduling
212(1)
9.4 How Java 3D Performs Execution Culling
213(1)
9.5 The Behavior API
214(12)
9.5.1 The Behavior Node
214(1)
9.5.2 WakeupCondition Object
215(1)
9.5.3 The WakeupCriterion Objects
216(10)
9.6 Interpolator Behaviors
226(21)
9.6.1 Mapping Time to Alpha
226(4)
9.6.2 Acceleration of Alpha
230(1)
9.6.3 The Alpha Class
231(3)
9.6.4 The Interpolator Base Class
234(1)
9.6.5 PositionInterpolator Object
235(1)
9.6.6 RotationInterpolator Object
236(1)
9.6.7 ColorInterpolator Object
237(1)
9.6.8 ScaleInterpolator Object
238(1)
9.6.9 SwitchValueInterpolator Object
239(1)
9.6.10 TransparencyInterpolator Object
240(1)
9.6.11 PositionPathInterpolator Object
241(2)
9.6.12 RotPosPathInterpolator Object
243(1)
9.6.13 RotPosScalePathInterpolator Object
244(2)
9.6.14 RotationPathInterpolator Object
246(1)
9.7 Level-of-Detail Behaviors
247(2)
9.7.1 LOD Object
247(1)
9.7.2 DistanceLOD Object
248(1)
9.8 Billboard Behavior
249(2)
10 Input Devices and Picking
251(14)
10.1 InputDevice Interface
251(2)
10.1.1 The Abstract Interface
252(1)
10.1.2 Instantiating and Registering a New Device
253(1)
10.2 Sensors
253(5)
10.2.1 Using and Assigning Sensors
254(1)
10.2.2 Behind the (Sensor) Scenes
254(1)
10.2.3 The Sensor Object
254(3)
10.2.4 The SensorRead Object
257(1)
10.3 Picking
258(7)
10.3.1 SceneGraphPath Object
259(2)
10.3.2 BranchGroup Node and Locale Node Pick Methods
261(1)
10.3.3 PickShape Object
261(1)
10.3.4 PickPoint Object
261(1)
10.3.5 PickRay Object
262(1)
10.3.6 PickSegment Object
262(3)
11 Audio Devices
265(6)
11.1 AudioDevice Interface
265(4)
11.1.1 Initialization
266(1)
11.1.2 Audio Playback
267(1)
11.1.3 Device-Driver-Specific Data
268(1)
11.2 Instantiating and Registering a New Device
269(2)
12 Execution and Rendering Model
271(4)
12.1 Three Major Rendering Modes
271(2)
12.1.1 Immediate Mode
271(1)
12.1.2 Retained Mode
272(1)
12.1.3 Compiled-retained Mode
272(1)
12.2 Instantiating the Render Loop
273(2)
12.2.1 An Application-level Perspective
273(1)
12.2.2 Retained and Compiled-retained Rendering Modes
273(2)
13 Immediate-Mode Rendering
275(10)
13.1 Two Styles of Immediate-Mode Rendering
275(3)
13.1.1 Pure Immediate-Mode Rendering
275(2)
13.1.2 Mixed-Mode Rendering
277(1)
13.2 Canvas3D Methods
278(2)
13.3 API for Immediate Mode
280(5)
13.3.1 GraphicsContext3D
280(5)
A Math Objects
285(80)
A.1 Tuple Objects
285(44)
A.1.1 Tuple2f Class
285(6)
A.1.2 Tuple3b Class
291(2)
A.1.3 Tuple3d Class
293(6)
A.1.4 Tuple3f Class
299(6)
A.1.5 Tuple4b Class
305(2)
A.1.6 Tuple4d Class
307(7)
A.1.7 Tuple4f Class
314(8)
A.1.8 AxisAngle4d Class
322(1)
A.1.9 AxisAngle4f Class
323(2)
A.1.10 GVector Class
325(4)
A.2 Matrix Objects
329(36)
A.2.1 Matrix3f Class
330(6)
A.2.2 Matrix3d Class
336(6)
A.2.3 Matrix4f Class
342(8)
A.2.4 Matrix4d Class
350(8)
A.2.5 GMatrix Class
358(7)
B 3D Geometry Compression
365(34)
B.1 Compression
365(1)
B.2 Decompression
366(1)
B.3 Appendix Organization
366(1)
B.4 Generalized Triangle Strip
366(1)
B.5 Generalized Triangle Mesh
367(3)
B.6 Position Representation and Quantization
370(1)
B.7 Color Representation and Quantization
371(1)
B.8 Normal Representation and Quantization
372(4)
B.8.1 Normals as Indices
373(1)
B.8.2 Normal Encoding Parameterization
374(2)
B.9 Modified Huffman Encoding
376(1)
B.10 Geometry Compression Commands
377(2)
B.11 Bit Layout of Geometry Decompression Commands
379(1)
B.12 Geometry Decompression Command Bit Details
379(8)
B.12.1 NOP
379(1)
B.12.2 setState
379(2)
B.12.3 setTable
381(1)
B.12.4 meshBufferReference
382(1)
B.12.5 Position Subcommand
383(1)
B.12.6 Color Subcommand
383(1)
B.12.7 Normal Subcommand
384(2)
B.12.8 vertex
386(1)
B.12.9 normal
387(1)
B.12.10 color
387(1)
B.13 Semantics of Geometry Decompression Commands
387(4)
B.13.1 Header and Body to Variable-Length Command
388(1)
B.13.2 Variable-Length Command to Command
389(1)
B.13.3 Delta Position to Position
389(1)
B.13.4 Delta Color to Color
390(1)
B.13.5 Encoded Delta Normal to Encoded Normal
390(1)
B.13.6 Encoded Normal to Rectilinear Normal
390(1)
B.14 Semantics of Vertices
391(3)
B.14.1 Command to Vertex
391(1)
B.14.2 Vertex to Intermediate Triangle
392(1)
B.14.3 Intermediate Triangle to Final Triangle
393(1)
B.15 Outline of Geometry Process
394(5)
B.15.1 Compressing Geometry Data
394(1)
B.15.2 Convert to Generalized Mesh Format
394(1)
B.15.3 Position
394(1)
B.15.4 Normals
395(1)
B.15.5 Colors
396(1)
B.15.6 Collect Delta Code Statistics
396(1)
B.15.7 Position Delta Code Statistics
396(1)
B.15.8 Color Delta Code Statistics
396(1)
B.15.9 Normal Delta Code Statistics
396(1)
B.15.10 Assign Huffman Tags
397(1)
B.15.11 Assemble the Pieces into a Bit Stream
398(1)
C View Model Details
399(26)
C.1 An Overview of the Java 3D View Model
399(1)
C.2 Physical Environments and Their Effects
400(1)
C.2.1 A Head-mounted Example
400(1)
C.2.2 A Room-mounted Example
400(1)
C.2.3 Impact of Head Position and Orientation on the Camera
400(1)
C.3 The Coordinate Systems
401(3)
C.3.1 Room-mounted Coordinate Systems
401(2)
C.3.2 Head-mounted Coordinate Systems
403(1)
C.4 The ViewPlatform Object
404(1)
C.5 The View Object
404(4)
C.5.1 View Policy
405(1)
C.5.2 Screen Scale Policy
406(1)
C.5.3 Window Eyepoint Policy
406(1)
C.5.4 Monoscopic View Policy
407(1)
C.5.5 Sensors and Their Location in the Virtual World
408(1)
C.6 The Screen3D Object
408(3)
C.6.1 Screen3D Calibration Parameters
410(1)
C.6.2 Accessing and Changing Head Tracker Coordinates
411(1)
C.7 The Canvas3D Object
411(2)
C.7.1 Scene Antialiasing
412(1)
C.7.2 Accessing and Modifying an Eye's Image Plate Position
412(1)
C.7.3 Canvas Width and Height
413(1)
C.8 The PhysicalBody Object
413(2)
C.9 The PhysicalEnvironment Object
415(2)
C.10 Viewing in Head-tracked Environments
417(1)
C.10.1 A Room-mounted Display with Head Tracking
418(1)
C.10.2 A Head-mounted Display with Head Tracking
418(1)
C.11 Compatibility Mode
418(7)
C.11.1 Overview of the Camera-based View Model
419(1)
C.11.2 Using the Camera-based View Model
420(5)
D Exceptions
425(6)
D.1 BadTransformException
425(1)
D.2 CapabilityNotSetException
426(1)
D.3 DanglingReferenceException
426(1)
D.4 IllegalSharingException
427(1)
D.5 MultipleParentException
427(1)
D.6 RestrictedAccessException
428(1)
D.7 SceneGraphCycleException
428(1)
D.8 SingularMatrixException
429(1)
D.9 SoundException
429(2)
E Equations
431(18)
E.1 Fog Equations
431(1)
E.2 Lighting Equations
432(2)
E.3 Sound Equations
434(9)
E.3.1 Headphone Playback Equations
434(8)
E.3.2 Speaker Playback Equations
442(1)
E.4 Texture Mapping Equations
443(6)
E.4.1 Texture Lookup
443(3)
E.4.2 Texture Application
446(3)
F VRML Support
449(6)
F.1 VRML 1.0
449(1)
F.1.1 Mapping VRML 1.0 Files onto Java 3D Objects
450(1)
F.1.2 A VRML 1.0 Browsing Environment
450(1)
F.2 VRML 2.0
450(5)
F.2.1 VRML Support Requires a VRML Runtime Environment
451(1)
F.2.2 An Approach
451(1)
F.2.3 A Browser
452(1)
F.2.4 Optimizing for Viewing versus Editing
453(2)
Glossary 455(4)
Index 459

Customer Reviews

Average Review:

Write a Review

and post it to your social network

     

Most Helpful Customer Reviews

See all customer reviews >