| Preface | p. ix |
| Virtual Reality and Java 3D | p. 1 |
| Introduction | p. 1 |
| Interactive 3D Computer Graphics | p. 1 |
| Virtual Reality | p. 3 |
| Web-Based Virtual Reality | p. 5 |
| VRML | p. 6 |
| Java 3D | p. 8 |
| Mixed Reality | p. 10 |
| Summary | p. 11 |
| References | p. 12 |
| Java 3D Overview | p. 18 |
| Introduction | p. 18 |
| Getting Started | p. 19 |
| A Simple Java 3D Program for a RotatingCube | p. 20 |
| Scene Graph Basics | p. 22 |
| Scene Graph for the RotatingCube | p. 24 |
| View Branch for the RotatingCube | p. 25 |
| Content Branch for the RotatingCube | p. 26 |
| Branch Group | p. 27 |
| Transform Group | p. 28 |
| Simple Universe | p. 28 |
| Difference Between Java 3D Applet and Application | p. 29 |
| Summary | p. 30 |
| References | p. 30 |
| Geometry Objects | p. 32 |
| Introduction | p. 32 |
| Shape3D | p. 32 |
| GeometryArray Class | p. 35 |
| GeometryStripArray | p. 43 |
| IndexedGeometryArray | p. 56 |
| IndexedStripArray | p. 63 |
| Creating an Object Using Multiple Geometry Classes | p. 69 |
| Utility Class | p. 71 |
| Summary | p. 72 |
| References | p. 73 |
| Appearance Objects | p. 75 |
| Introduction | p. 75 |
| PointAttributes | p. 79 |
| LineAttributes | p. 82 |
| PolygonAttributes | p. 82 |
| ColoringAttributes | p. 86 |
| TransparencyAttributes | p. 87 |
| RenderingAttributes | p. 89 |
| Material | p. 93 |
| Summary | p. 95 |
| References | p. 96 |
| Textures | p. 97 |
| Introduction | p. 97 |
| Texture Loading | p. 98 |
| Texture Coordinates | p. 99 |
| Texture Properties | p. 100 |
| Texture Attributes | p. 101 |
| Texture Coordinate Generation | p. 103 |
| Multilevel Texturing | p. 106 |
| MultiTexture | p. 106 |
| Texture in Applets | p. 110 |
| Summary | p. 112 |
| References | p. 112 |
| Lighting, Fog, and Background | p. 114 |
| Introduction | p. 114 |
| Material | p. 115 |
| Ambient Light | p. 117 |
| Directional Light | p. 118 |
| Point Light | p. 120 |
| Spot Light or Cone Light | p. 122 |
| Light Scopes | p. 122 |
| Fog | p. 124 |
| Background | p. 128 |
| Summary | p. 130 |
| References | p. 130 |
| Animation Objects | p. 132 |
| Introduction | p. 132 |
| Behavior and Animation | p. 133 |
| Alpha Object | p. 133 |
| Interpolator Object | p. 134 |
| PositionInterpolator | p. 135 |
| PositionPathInterpolator | p. 136 |
| RotationInterpolator | p. 138 |
| RotationPathInterpolator | p. 138 |
| RotPosPathInterpolator | p. 140 |
| ScaleInterpolator | p. 142 |
| RotPosScalePathInterpolator | p. 143 |
| SwitchValueInterpolator | p. 144 |
| TransparencyInterpolator | p. 145 |
| ColorInterpolator | p. 146 |
| Billboard | p. 146 |
| Level of Detail (LOD) | p. 153 |
| Morph | p. 155 |
| Summary | p. 158 |
| References | p. 158 |
| Interaction | p. 159 |
| Introduction | p. 159 |
| Behavior Class | p. 160 |
| Bounding Region | p. 163 |
| Wakeup Condition and Criterion | p. 165 |
| Keyboard and Mouse Events | p. 168 |
| Posted Events | p. 169 |
| Collision Events | p. 176 |
| Elapsed Time and Frame Events | p. 176 |
| Events due to Changes in Positions and Transforms | p. 180 |
| Platform Entry and Exit Events | p. 183 |
| Sensor Entry and Exit Events | p. 185 |
| Combining Different Wakeup Criteria | p. 185 |
| Summary | p. 186 |
| References | p. 186 |
| Picking | p. 188 |
| Introduction | p. 188 |
| PickRotateBehavior, PickTranslateBehavior, and PickZoomBehavior | p. 189 |
| Picking Classes in General | p. 189 |
| Customizing Picking Behavior Class | p. 193 |
| PickTool | p. 194 |
| Point and Ray Picking Shape | p. 195 |
| Ray Segment Picking Shape | p. 196 |
| Cone Picking Shape | p. 201 |
| Cylinder Picking Shape | p. 206 |
| Picking Objects within a Specified Bound from a Certain Position | p. 209 |
| Picking in a Virtual Instrument Panel | p. 212 |
| Summary | p. 215 |
| References | p. 215 |
| Navigation, Input Devices, and Collision | p. 217 |
| Introduction | p. 217 |
| Keyboard Navigation Using KeyBoardBehavior | p. 218 |
| User Defined Keyboard Navigation | p. 219 |
| Navigation Using Mouse Utility Class | p. 223 |
| User-Defined Mouse Navigation | p. 227 |
| Input Device | p. 229 |
| Sensors | p. 232 |
| Collisions | p. 234 |
| Summary | p. 236 |
| References | p. 237 |
| Multiple Views | p. 238 |
| Introduction | p. 238 |
| View Model | p. 239 |
| Single View | p. 240 |
| Multiple Views | p. 243 |
| View Attach Policy and Activation Radius | p. 245 |
| Projection Policy | p. 246 |
| Clip Distance | p. 248 |
| Window Eyepoint Policy and Field of View | p. 248 |
| Conventional Camera-Based View | p. 249 |
| Visibility, Screen Scale, Window Movement, and Frame Cycle Time | p. 252 |
| Canvas3D | p. 252 |
| PhysicalBody and PhysicalEnvironment | p. 258 |
| Example Applications | p. 260 |
| Summary | p. 263 |
| References | p. 263 |
| Audio | p. 264 |
| Introduction | p. 264 |
| BackgroundSound | p. 265 |
| PointSound | p. 266 |
| ConeSound | p. 268 |
| Aural Environment | p. 269 |
| Summary | p. 273 |
| References | p. 275 |
| A Web-Based 3D Real Time Oscilloscope Experiment | p. 276 |
| Introduction | p. 276 |
| System Reference Model and Working Principle | p. 279 |
| Scene Graph and Main Applet | p. 279 |
| Control Buttons, Sliders, Knobs, and Other Objects | p. 282 |
| Custom Behavior | p. 283 |
| Navigation Behavior | p. 284 |
| Collision Detection Behavior | p. 285 |
| Picking Behavior | p. 286 |
| Summary | p. 288 |
| References | p. 288 |
| Downloading Software | p. 290 |
| Running the Rotating Cube Program | p. 295 |
| ViewManager | p. 301 |
| Main Applet for Web-Based 3D Experiment | p. 308 |
| Scene Graph Implementation for Web-Based 3D Experiment | p. 322 |
| Knob Class for Web-Based 3D Experiment | p. 350 |
| Navigation and Collision Detection for Web-Based 3D Experiment | p. 355 |
| Picking for Web-Based 3D Experiment | p. 371 |
| Program Summary and Screen Capture | p. 441 |
| About the Authors | p. 469 |
| Index | p. 470 |
| Table of Contents provided by Ingram. All Rights Reserved. |