Index
Numerics
2D coordinates, projecting from 3D coordinates to 13-19
comparing outputs 15
drawing filled triangles 16-19
simple 3D projection routine 13-15
3D Ark (web site) 13, 354
3D coordinates, projecting to 2D coordinates 13-19
comparing outputs 15
drawing filled triangles 16-19
simple 3D projection routine 13-15
3D file formats (web pages) 354
3D Fly-Through example application 6-8
3D graphics cards 6, 245
3D graphics engines list (web pages) 354
3D graphics glossaries (web pages) 354
3D graphics programming
learning 10-13
lighting effects 19-20
MyJava3D example 21-24
projecting from 3D coordinates to 2D 13-19
comparing outputs 15
drawing filled triangles 16-19
simple 3D projection routine 13-15
resources for 28-30, 353-357
3D rendering cards 6, 245
3D texture coordinates. See texture coordinates
A
AC3D loader 273
accelerator cards 106
addCanvas3D method 292-293
addGeometry method 21
Advanced Animation and Rendering Techniques (Watt) 101
advantages of Java 3D 2-3
algebra, vector and matrix 13
Allaire Kawa (Integrated Development Environment) 30, 356
ALLOW_COMPONENT_WRITE capability bit 204
ALLOW_TRANSFORM_WRITE capability bit 204-205
ALLOW_VALUE_WRITE capability bit 205
Alpha class 37, 199-202
Alpha test modes 138
Alpha values 141, 199
Amapi 3D (web site) 355
ambient colors 133, 154
AmbientLights 157, 159, 160
AnimatingSurface 23
animation
data model design for 98
SimpleTest example 32, 37
antialiasing 23, 24, 132, 134
APIs (application programming interfaces)
client-side 1
OpenGL 1-2
Appearance class 128
See also capability bits
Appearances
in InterpolatorTest example 208
merging and sorting 66
SimpleTest example 31
AppearanceTest example 127, 129-131, 254-255
applets
deploying Java 3D application as 301-324
automatic Java 3D installation 323-324
end-user experience 321-323
original HTML applet code 319
security issues 324
using Java 2 plug-in HTML converter 320-321
download time 8
enabling running of 27-28
running examples 352
Application Programming Interfaces. See APIs
ARB (Architecture Review Board) 9
architecture, system. See system architecture
asset management 106-107
attribute merging 66
audience, for Java 3D 3, 5
AvatarTest example 93-95, 175-176
AWT Frame 87-88
AwtRendering-Engine interface 23-24
axis angles, creating quaternions from 207
B
background geometry 31, 38, 94-95
Background Node, MixedTest example 61
Barrileaux, Jon xviii
BASE_LEVEL_LINEAR MagFilter mode 255, 256
BASE_LEVEL_LINEAR MinFilter mode 255
BASE_LEVEL_POINT MagFilter mode 255
BASE_LEVEL_POINT MinFilter mode 255
Behavior class 165-166
behaviors 164-197
architecture of 164
BehaviorTest example 220-221
Billboard 192-195
built-in 165, 167, 168
ExplodeBehavior 224-227
LOD (level of detail) 195-197
methods of 166-167
Mouse 186, 190-191
building improved 188-191
Java 3D mouse support 187-188
overview 186
ObjectSizeBehavior 221-224
StretchBehavior 227-230
using for debugging 230-232
WakeUp criteria for 167-171
what they are 164
BehaviorScheduler 329
BehaviorStructure 329
benefits of Java 3D 2-3
Bill Day?s Articles on Java 3D (web pages) 354
Billboard behavior 95-96, 165, 168, 192-195
binary space partition (BSP) trees 17
BitSet 74, 339
blend color 257, 258
BLEND mode 259, 260
Book reviews by Brian Hook (web pages) 356
Borland JBuilder (Integrated Development Environment) 30, 356
boundary color 252
boundary mode 252
BoundingBox class 67-70, 220
BoundingPolytope class 67
BoundingSphere class 38, 67-70
Bounds 46-47, 67-71
and level of detail 51-52
associated with Light Nodes 156
creating object with various combinations of 67-69
examples of 49-50
propagation 69
scheduling
describing application?s volume 38
for Behaviors 165
BOUNDS (PickTool mode) 277, 287
BoundsBehavior 230
Box class 111-113, 358-360
BSP (binary space partition ) trees 17
Building Java 3D User Interfaces (Barrilleaux) 29
built-in behaviors 165, 167, 168
""burning" objects 224
C
CAD (Computer-Aided Drafting) visualization 105
Cain, Andrew 180
Canvas3D component 46
callback methods 57
creating 87
postSwap method 231-232
capability bits 65-66, 128
for ColoringAttributes class 129
for LineAttributes class 131
for Material class 132
for PointAttributes class 133
for PolygonAttributes class 136
for RenderingAttributes class 138
for TexCoordGeneration class 140
for Texture class 141
for TextureAttributes class 140
for TransparencyAttributes class 141
child Node, removing from parent Group 72-73
classes
See also names of specific classes
decompiling 30
utility 267-270
client-side APIs 1
Cline, H.E. 101
clip planes 19, 86
codes, example
running 352
collision detection 180-182, 293-300
CollisionBounds 67-71
Color buffer 142-143
ColoringAttributes 129-131BR>
colors
ambient 133, 154
diffuse 133
effect of lighting on 150
emissive 133, 154
KeyNavigateTest example 177-180
SimpleTest example 37
specular 133
compatibility
testing for 6
with Windows 3-5
compilation, scenegraph 51, 65-66
ComplexObject class 214
computeIntensity method 20
Computer Graphics Principles and Practice (van Dam, Feiner, and Hughes) 13
Computer Graphics Principles and Practice in C (Foley) 29
Computer-Aided Drafting (CAD) visualization 105
Concentration property 158
Cone class 113-114
ConicWorld Java 3D demo directory 111
ConicWorld/BoxExample 112
constant component 158
constructor method 167
contourCountArray 269
Control Nodes 43
coordinates, projecting from 3D to 2D 13-19
comparing outputs 15
drawing filled triangles 16-19
simple 3D projection routine 13-15
Core Web3D (web site) 354
cosine shading 152
Cosm (online role-playing game) 98, 355
createMapItem method 179
createSceneBranchGroup method 293
createTextureGeometry method 239-241
createWall method 180
CULL_FACE property 136-137
CustomAlphaTest example 201-202
Cylinder class 114
D
Dash Dot pattern 132
data file loaders 107
data model design
choosing data model 97-104
surface models 98-100
volumetric and mathematical models 100-103
implementing 103-104
performance objectives 104-107
DECAL mode 259
decompiler, Java class 30
Decreasing Alpha phase parameter 200
Decreasing Alpha ramp parameter 200
depth buffer technique 18-19
depth sorting 16-17
development time 106-107
diffuse colors 133
directed acyclic graph. See scenegraph
DirectionalLight 157, 158
directmanipulation. See picking
disadvantages of Java 3D 3-5
display hardware recommendations 6
DistanceLOD class 195-197
documentation, Java 3D programming 28-30
DOOM and DOOM-style keyboard navigation imple-mentation 176-186
implementing collision detection 180-182
loading and creating world from 2D map 177-180
texture image animation for flaming 183
downloading
applets, time considerations 8
Java 2 SDK 27-28
Java 3D SDK 3-5, 28
doWork method 336
drivers, accelerator 106
DXF data file loader 107
dynamic mapping 245-251
EYE_LINEAR mode 248
OBJECT_LINEAR mode 246-248
SPHERE_MAP mode 250-251
dynamic objects 41-42
D
Eclipse (Open Source, IBM) 356
Edinburgh Virtual Environment Centre (EdVEC) 98, 355
editing Windows registry 28
editors, programming 30
EdVEC (Edinburgh Virtual Environment Centre) 98, 355
Emacs (Integrated Development Environment) 30, 356
email list, Java 3D 29
emissive colors 133, 154
ENABLE_APPEARANCE_MODIFY primitive flag 115
ENABLE_GEOMETRY_PICKING primitive flag 115
environment, programming 30
Euler angles, creating quaternions from 207
exception strings 340
ExplodeBehavior 221
EYE_LINEAR mode 248, 249
F
facial models 99-100
far clip plane 19
FASTEST MagFilter mode 255
FASTEST MinFilter mode 255
Feiner, Steven 13
fields-of-view (FOV) 48-50
FileAlpha class 201-202
Foley, James D. 29
FontExtrusion object 123
FOV (fields-of-view) 48-50
FpsBehavior 230
frame rate 104-105
calculating using behaviors 231-232
determining factors 6
required 5
FullSail OpenFLT loader 274
G
games
frame rate for 105
texture mapping problems 236>
use of dynamic LOD algorithms 195
garbage collector (GC) 3
Gehringer, Doug 104
GENERATE_NORMALS primitive flag 115
GENERATE_NORMALS_INWARD primitive flag 115
GENERATE_TEXTURE_COORDS primitive flag 113, 115
GeomBuffer class 116, 358-361, 363-364
geometry
cache, and primitive classes 116
choice of geometry description 98
GeomBuffer helper class 116
geometry-by-reference 100
importing data into Java3D. See object loaders
merging 66
modifying appearance of. See Appearance class
Morph Node 124-125
Primitive classes 109-116
and geometry cache 116
Box class 111-113
Cone class 113-114
Cylinder class 114
primitive flags 115-116
Sphere class 115
Raster class 116-120
Shape3D classes 108-109
sorting 143
Text2D 121-122
utility classes for importing or generating 267-270
viewer, attaching 87-91
GEOMETRY (PickTool mode) 277
Geometry cache 362-363
Geometry nodes 43
GEOMETRY_INTERSECT_INFO (PickTool mode) 277
GEOMETRY_NOT_SHARED primitive flag 115
GeometryArrays
and lighting effects 20-22
associated with Morph Nodes 124-125
colors modified at runtime 162
GeometryInfo object 240-241
GeometryStructure 329
GeometryUpdater 22
getRectangleScaleFactor method 121
getSoundDistanceGain method 219
getViewer call 92
getViewingPlatform call 92
gimbal-lock, avoiding 207
GL4Java (web pages) 354
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 142
GNU Emacs (Integrated Development Environment) 30, 356
Gouraud shading 153-154
Gouraud, Henri 152
graphics cards 6
graphics programming, 3D. See 3D graphics programming
GraphicsContext3D 337
Group objects 42, 43, 67, 72
H
hardware requirements 5-7
"has-a" relationships 126
Hashtable 339
HelloUniverse Java 3D demonstration 28
hidden-surface removal 16
HiResCoord object 82-85
HiResCoordTest example 84-85
HTML applet code 319
HTMLConverter, for Java plug-in 320-321
Hughes, John 13
I
IDEs (Integrated Development Environments) 30
Illustrated Java 3D Bibliography in French (web pages) 356
immediate mode 57, 63
ImmediateTest example 57-62
Import3DS 274
Increasing Alpha phase parameter 200
Increasing Alpha ramp parameter 200
Influence nodes 43
initialize method 166, 167
initJava3D method 292
input devices, sampling 3
inputDeviceScheduler 329, 336
inputDeviceThreads 330
installing
Java 2 Plug-in 321-324
Java 2 SDK 27-28
Java 3D 3-5, 27-30, 351
integer arrays 84-85
Integrated Development Environments (IDEs) 30
IntelliJ IDEA 356
Internet Explorer (web browser), and Java 2 plug-in 320-321
Interpolator class 198-199
Interpolators
behavior 165, 168
ColorInterpolator 204
cubic-spline interpolator 210-219
Bias parameter 211
Continuity parameter 211
controlling textent of audio 218-219
creating texture-mapped sky backdrop 218
level of detail behavior 214-215
reading spline key frames from disk 215-218
SplineInterpolatorTest example 211-214
Tension parameter 210, 211
PositionInterpolator 204
RotationInterpolator 205
RotPosScalePathInterpolator 205-208
ScaleInterpolator 205
SwitchValueInterpolator 203-204
TransparencyInterpolator 205
InterpolatorTest example 208-210
Introduction to Computer Graphics (course) 355
Introduction to Computer Graphics (online course) 16-17
inverse kinematics 98
J
J3D DLL 340-348
J3D.org (web site) 29, 354
J3dMessage class 332, 334-335
J3D-TimerThread 338
JAD (Java class decompiler) 30, 356
JAR file extension options 324, 353
Java 2
deploying on Windows 5
downloading and installing 27-28
extensions documentation 324, 353
extensions mechanism tutorial 353
Integrated Development Environments (IDEs) for developing 30
resources for 28
Java 3D API Specification (web site) 353
Java 3D Fly-Through example application 6-8
Java 3D Forum (web site) 354
Java 3D graphics programming. See 3D graphics programming
Java 3D Home Page (web site) 353
Java 3D Interest Email List 29
Java books reviewed (web pages) 356
Java class decompiler 30
Java Community Process (JCP) 8-9
Java Development Portal (web pages) 354
Java garbage collector (GC) 3
Java Native Interface (JNI) 340
Java Plug-in 318, 320-32
Java Virtual Machine (JVM) 106
and Windows 318
garbage collector 3
Java WebStart documentation 353
Java3dApplet methods, overriding 292
JavaMet example 104
JBuilder (Integrated Development Environment) 356
JCP (Java Community Process) 9
JDK 1.3.1, web pages about 353
JFrame 24
JNI (Java Native Interface) 340
JPanel 23, 303-304
JProbe (performance analysis tool) 30, 357
Junghanns, Andreas 207-208
JVM. See Java Virtual Machine
K
Kawa (Integrated Development Environment) 30, 356
K-B (Kochanek-Bartels) algorithm 210
key frames, reading from disk 215-218
keyboard behaviors 172-186
DOOM and DOOM-style keyboard navigation implementation 176-186
implementing 180-182
loading and 177-180
texture image 183
KeyNavigatorBehavior 173-174
writing 174-176
KeyCollision-Behavior class 180-181
KeyNavigateTest example 176-185
implementing collision detection 180-182
loading and creating world from 2D map 177-180
KeyNavigator class 174
KeyNavigatorBehavior 165, 168, 173-174
kinematics, inverse 98
knots 205-207, 210
Kochanek-Bartels (K-B) algorithm 210
L
Lambert shading 152
Leaf nodes 67
level of detail (LOD) 51-52, 95-96, 99
behavior 165, 168, 195-197
DistanceLOD 195-197
Light class 183-185
Light node 155-157
lighting 150-162
AmbientLights 157
and material properties 154
and normal vectors 152-154
and shadows 154-155
and surface properties 150
DirectionalLight 157
effect on colors 150
effect on rendering quality 105
effects 19-20
KeyNavigateTest example 183-185
Light node 155-157
light properties 150
mathematical equations for 151-152
PointLight 157-158
SimpleTest example 31, 37
SpotLight 158-162
types of 150
LightTest example 156
Lightwave data file loader 107
linear component 158
LineAttributes class 131
List of Java Books (web pages) 356
load time 106
Load3DS 274
Loader3DS 274
LoaderBase class 270
loaders, object 270-274
LoaderTest example 271-273
Locales 82-85
purpose of 46
rendering 85-87
LOD. See level of detail
Loisel, Sébastien 13, 356
Loop count parameter 200
Lorensen, W. E. 101
Lw3dLoader 274
M
machine configurations, target. See performance targets
MagFilter method 255
magnetic resonance imaging (MRI) visualization 101
Management nodes 43
mapping, texture. See texture mapping
"Marching Cubes?a high resolution 3D surface reconstruction algorithm" (Lorensen and Cline) 101
Marching Cubes Algorithm 101
MasterControl class 334
J3dMessage class 332, 334-335
message processing and threading architecture 329-332
system properties read by Java 3D 335
MasterControl.doWork method 330
Material 31, 37, 132-133, 154
mathematical object descriptions 101-103
matrix algebra 13
Matrix and quaternion FAQ (web pages) 207-208, 354, 356
medical visualization applications 101
memory
and data model design 106
and Text2D objects 121-122
and Text3D objects 123
consumed by texture images 245, 253-254
display hardware, recommended 6
of 3D rendering cards 245
system, required 6-8
merging
Appearance objects 66
geometry 66
meteorological visualization 104
Microsoft Terraserver (satellite image database) 214
Microsoft Windows. See Windows
Milkshape3D loader 273
MinFilter option 255
MIPMAP mode 253-256
mixed mode 57, 61-62
MixedTest example 61-62
Model transformation matrix 60
MODULATE mode 259
Morph nodes 124-125, 278
Moss, Gary 180
motion capture 98
motion. See frame rate
mouse behaviors 165, 168, 186-191
building improved 188-191
Java 3D mouse support 187-188
overview 186
Tornado mouse behaviors 189-191
MouseListener instance 292-293
MouseNavigateTest example 189-191
moving scenes 172-173
MRI (magnetic resonance imaging) visualization 101
MULTI_LEVEL_LINEAR MinFilter mode 255, 256
MULTI_LEVEL_POINT MinFilter mode 255, 257
multiple texture images 253-256
multiple views 46, 95
MultiTransformGroup 88
MyJava3D example 12, 21-24
comparing outputs with Java 3D 15
drawing filled triangles 16-19
lighting effects 19-20
N
NCSA Portfolio loader 273
near clip plane 19
negative aspects of Java 3D 3-5
NetBeans (Integrated Development Environment) 30, 356
Netscape Navigator (web browser), and Java 2 plug-in 320, 321
NFF & OBJ loader 274
NICEST MagFilter mode 255
NICEST MinFilter mode 255
NICEST mode 144-147
Node class 42, 43, 67
Node types 339-340
Non Uniform Relational B Splines (NURBS) 101-103
Normal vectors
and lighting 152-154
compensating 136, 137
NormalGenerator class 154, 269
NURBS (Non Uniform Relational B Splines) 101-103
O
object loaders 270-274
object orientation 51
object pooling 333
OBJECT_LINEAR mode 246-248
ObjectFile loader 271-273
ObjectLoaders 106-107
object-oriented programming (OOP) 2
ObjectSizeBehavior 220
ObjLoad (loader) 274
OldGeomBuffer 358-360
online courses 355
OOP (object-oriented programming) 2
opaque texture image 263
OpenGL "Red Book" (web pages) 29-30, 355
OpenGL FAQ and Troubleshooting Guide (web pages) 19, 29-30, 354
OpenGL programming 1-2
depth buffer 19
resources for 29-30
versus Java 3D 3-5, 8-9
optimization tools 30
OptimizeIt (performance analysis tool) 6, 30, 357
OrderedGroup 72, 185, 186
P
Painter?s algorithm 16-17
parallel projections 15
parent Group, removing child Node from 72-73
performance analysis tools 30
performance targets 104-10
setting 6
validate design against 6-8
Phong shading 20, 153-154
Phong, Bui Tuong 153-154
PhysicalBody 87-88
PhysicalEnvironment 87-88
pickAllSorted method 278
PickCanvas 278
pickClosest method 278
picking 275-300
for collision detection 293-300
overview 275-276
VrmlPickingTest example 280-282
PickIntersection 278-279
PickMouseBehavior 165, 168
PickResults 277, 279-280, 293
PickShapes 276
PickTool 277-278
pixilated texture images, fixing 253-256
planes, defining 247
PlatformGeometry class 88-89, 92-93
PlatformTest example 89-91
PointAttributes class 133-135
PointLight 157-160
points-of-view for scenes, multiple 46
PointSounds 218-219
PointTest example 134
Polygon fill-mode parameters 137
PolygonAttributes class 136-137
polygons, converting to triangular surfaces. See Triangulator class
poses 205-207, 210
PositionInterpolator behavior 32, 37
positive aspects of Java 3D 2-3
postRender method 57
postSwap method 57, 231-232
preRender method 57, 60-61
primary View 96BR>
Primitive class 72, 109-116
and geometry cache 116
classes derived from 111-115, 362-363
incompatibility with Shape3D objects 110
primitive flags 115-116
Sphere class 115