| Preface |
|
xiii | |
| Foundations |
|
|
Mathematical fundamentals of 3D computer graphics |
|
|
1 | (30) |
|
Manipulating three-dimensional structures |
|
|
2 | (7) |
|
Vectors and computer graphics |
|
|
9 | (5) |
|
Rays and computer graphics |
|
|
14 | (7) |
|
Bi-linear interpolation of polygon properties |
|
|
21 | (1) |
|
A basic maths engine using SIMD instructions |
|
|
22 | (9) |
|
Modelling and representation 1 - comparative review and polygon mesh models |
|
|
31 | (22) |
|
|
|
31 | (5) |
|
Polygonal representation of three-dimensional objects |
|
|
36 | (11) |
|
High-level methods - constructive solid geometry |
|
|
47 | (4) |
|
High-level creation using modellers/editors |
|
|
51 | (2) |
|
Modelling and representation 2 - the economics of polygon meshes |
|
|
53 | (15) |
|
Compressing polygonal models |
|
|
53 | (1) |
|
|
|
54 | (2) |
|
|
|
56 | (1) |
|
|
|
57 | (2) |
|
Local vs. global algorithms |
|
|
59 | (1) |
|
|
|
60 | (2) |
|
Level of detail (LOD) processing |
|
|
62 | (6) |
|
Representation and modelling 3 - landscape specialisations |
|
|
68 | (11) |
|
|
|
68 | (1) |
|
Simple height field landscapes |
|
|
69 | (1) |
|
Procedural modelling of landscapes - fractals |
|
|
70 | (2) |
|
Terrain LODs: triangle bintrees |
|
|
72 | (4) |
|
Rendering of landscapes by ray casting |
|
|
76 | (3) |
|
Modelling and representation 4 - Bezier, B-spline and subdivision surfaces |
|
|
79 | (93) |
|
|
|
79 | (3) |
|
|
|
82 | (9) |
|
|
|
91 | (13) |
|
|
|
104 | (3) |
|
|
|
107 | (9) |
|
Modelling or creating patch surfaces |
|
|
116 | (15) |
|
Rendering parametric surfaces |
|
|
131 | (8) |
|
Practical Bezier technology for games |
|
|
139 | (14) |
|
|
|
153 | (17) |
|
Scalability - polygon meshes, patch meshes and subdivision surfaces |
|
|
170 | (2) |
| Classical 3D graphics |
|
|
Classic polygon mesh rendering technology |
|
|
172 | (43) |
|
Coordinate spaces and geometric operations in the graphics pipeline |
|
|
173 | (6) |
|
Operations carried out in view space |
|
|
179 | (10) |
|
Algorithmic operations in the graphics pipeline |
|
|
189 | (23) |
|
|
|
212 | (3) |
|
Classic mapping techniques |
|
|
215 | (30) |
|
|
|
215 | (3) |
|
Two-dimensional texture maps to polygon mesh objects |
|
|
218 | (9) |
|
Two-dimensional texture domain to bi-cubic parametric patch objects |
|
|
227 | (1) |
|
|
|
227 | (4) |
|
Environment or reflection mapping |
|
|
231 | (7) |
|
Three-dimensional texture domain techniques |
|
|
238 | (5) |
|
|
|
243 | (2) |
|
Anti-aliasing theory and practice |
|
|
245 | (25) |
|
|
|
245 | (1) |
|
|
|
246 | (3) |
|
|
|
249 | (1) |
|
Sampling in computer graphics compared with sampling reality |
|
|
250 | (2) |
|
Sampling and reconstruction |
|
|
252 | (1) |
|
|
|
252 | (2) |
|
|
|
254 | (2) |
|
Supersampling or post-filtering |
|
|
256 | (2) |
|
Anti-aliasing in texture mapping |
|
|
258 | (6) |
|
The Fourier transform of images |
|
|
264 | (6) |
| Real-time rendering |
|
|
Visibility processing of complex scenes |
|
|
270 | (44) |
|
|
|
270 | (4) |
|
|
|
274 | (3) |
|
|
|
277 | (2) |
|
Bounding volume hierarchies |
|
|
279 | (1) |
|
BSP trees and polygon objects |
|
|
280 | (15) |
|
Specialisations for building interior-type environments |
|
|
295 | (1) |
|
|
|
296 | (5) |
|
Advanced view frustum culling |
|
|
301 | (4) |
|
|
|
305 | (7) |
|
Dynamic objects and visibility |
|
|
312 | (2) |
|
|
|
314 | (15) |
|
|
|
315 | (5) |
|
Dynamic lighting effects with light maps |
|
|
320 | (2) |
|
|
|
322 | (1) |
|
Switchable/destroyable light sources |
|
|
322 | (1) |
|
|
|
322 | (1) |
|
|
|
323 | (6) |
|
|
|
329 | (17) |
|
|
|
329 | (4) |
|
Classical shadow algorithms |
|
|
333 | (7) |
|
|
|
340 | (6) |
|
|
|
346 | (22) |
|
|
|
346 | (1) |
|
|
|
347 | (4) |
|
|
|
351 | (10) |
|
Multi-pass sampling approaches |
|
|
361 | (2) |
|
|
|
363 | (2) |
|
|
|
365 | (3) |
| Control of objects |
|
|
Motion control - kinematic |
|
|
368 | (34) |
|
|
|
368 | (2) |
|
Pre-scripting animation - linear interpolation and elapsed time |
|
|
370 | (2) |
|
Pre-scripted animation - interpolation problems |
|
|
372 | (1) |
|
Pre-scripted animation - explicit scripting |
|
|
373 | (3) |
|
Interpolation of rotation |
|
|
376 | (2) |
|
Using quaternions to represent rotation |
|
|
378 | (8) |
|
The camera as an animated object |
|
|
386 | (1) |
|
|
|
387 | (2) |
|
Particle animation and computer games |
|
|
389 | (3) |
|
|
|
392 | (10) |
|
Control by dynamic simulation |
|
|
402 | (35) |
|
Dynamics in off-line animation - the famous example |
|
|
402 | (1) |
|
Initial value problems vs. boundary value problems |
|
|
403 | (1) |
|
|
|
404 | (1) |
|
Motivations for dynamic simulations |
|
|
405 | (1) |
|
Basic classical theory for particles |
|
|
406 | (2) |
|
Basic classical theory for rigid bodies |
|
|
408 | (10) |
|
The practicalities of dynamic simulations |
|
|
418 | (13) |
|
|
|
431 | (6) |
|
|
|
437 | (30) |
|
Broad phase/narrow phase algorithms |
|
|
440 | (4) |
|
Bounding volume hierarchies |
|
|
444 | (1) |
|
Broad phase collision detection with AABBs |
|
|
445 | (4) |
|
Broad phase collision detection with OBBs |
|
|
449 | (2) |
|
Broad phase collision detection with local or object spatial partitioning |
|
|
451 | (2) |
|
Narrow phase collision detection |
|
|
453 | (6) |
|
|
|
459 | (8) |
|
|
|
467 | (17) |
|
Interaction and animation |
|
|
467 | (1) |
|
|
|
467 | (3) |
|
User-object interaction - 6 DOF control with simple sampling |
|
|
470 | (3) |
|
User-object animation - a four-key car simulation |
|
|
473 | (3) |
|
Object-object interaction |
|
|
476 | (1) |
|
Camera-object interaction |
|
|
477 | (1) |
|
Objects with simple autonomous behaviour |
|
|
478 | (4) |
|
|
|
482 | (2) |
|
|
|
484 | (32) |
|
Established approaches and architectures |
|
|
487 | (3) |
|
|
|
490 | (3) |
|
Examples of agent architectures |
|
|
493 | (5) |
|
Cognitive modelling and situation calculus |
|
|
498 | (5) |
|
The role of sensing - vision as an example |
|
|
503 | (2) |
|
|
|
505 | (11) |
| 2D technology |
|
|
Two-dimensional techniques |
|
|
516 | (24) |
|
|
|
516 | (2) |
|
|
|
518 | (7) |
|
Image transforms and basis matrices |
|
|
525 | (1) |
|
Wavelets and computer games |
|
|
526 | (5) |
|
Image metamorphosis - morphing |
|
|
531 | (9) |
|
|
|
540 | (32) |
|
|
|
540 | (1) |
|
Reuse of previously rendered imagery |
|
|
541 | (6) |
|
Varying rendering resources |
|
|
547 | (4) |
|
|
|
551 | (8) |
|
|
|
559 | (5) |
|
Four-dimensional techniques - the Lumigraph or light field rendering approach |
|
|
564 | (2) |
|
|
|
566 | (6) |
| Software technology |
|
|
Multi-player game technology |
|
|
572 | (23) |
|
|
|
572 | (1) |
|
|
|
573 | (1) |
|
Implementation of multi-player games |
|
|
574 | (2) |
|
The origin and nature of problems in multi-player games |
|
|
576 | (4) |
|
Reducing the information in messages |
|
|
580 | (6) |
|
Multi-player implementation using client-server |
|
|
586 | (9) |
|
|
|
595 | (22) |
|
|
|
595 | (7) |
|
Managing and evolving complexity in games |
|
|
602 | (1) |
|
Engine design and architecture |
|
|
603 | (1) |
|
Fly3D software architecture |
|
|
604 | (13) |
|
|
|
617 | (132) |
|
|
|
617 | (1) |
|
|
|
618 | (4) |
|
|
|
622 | (127) |
| Appendix A Fly3D SDK tutorials |
|
749 | (30) |
| References |
|
779 | (9) |
| Index |
|
788 | |