did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9781558605930

3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics

by
  • ISBN13:

    9781558605930

  • ISBN10:

    1558605932

  • Format: Hardcover
  • Copyright: 2000-09-22
  • Publisher: Elsevier Science
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $94.95

Summary

Now considered an essential reference in the game industry, 3D Game Engine Design is the first book to go beyond basic descriptions of algorithms and accurately demonstrate the complex engineering process required to design and build a real-time graphics engine to support physical realism. Faster algorithms will always win out over faster processors and assembly-language optimization techniques. Implementing those algorithms, however, can be a challenge for even experienced programmers. This book provides rigorous explanations and derivations of all the essential concepts and techniques. Ideas are revealed step by step with numerous code examples and illustrations. Source code implementations are included on the companion CD-ROM to help you understand the full progression from idea, to algorithm, to working code. Since algorithms are not used in isolation, the source code for a complete engine is provided to bring crucial context to the implementations. This book and CD-ROM offer the most comprehensive professional reference available for the development of 3D game engines. *Designed for professionals working in game development, simulation, scientific visualization, or virtual worlds. *Written by a respected game engineer and designer of a leading commercial game engine. *Thoroughly describes the algorithmsfully implemented in working codethat are the key to writing the fastest, most efficient code possible. *Provides source code for Windows 95/98/NT/2000, Linux/Unix, and Macintosh platforms.

Table of Contents

List of Figures
xxi
List of Tables
xxv
Preface xxvii
Introduction
1(6)
A Brief Motivation
1(2)
A Summary of the Chapters
3(2)
Text Is Not Enough
5(2)
Geometrical Methods
7(72)
Transformations
8(2)
Scaling
8(1)
Rotation
8(1)
Translation
9(1)
Homogeneous Transformations
9(1)
Coordinate Systems
10(1)
Quaternions
11(7)
Quaternion Algebra
11(2)
Relationship of Quaternions to Rotations
13(2)
Conversion between Angle-Axis and Rotation Matrix
15(1)
Angle-Axis to Rotation Matrix
15(1)
Rotation Matrix to Angle-Axis
16(1)
Conversion between Quaternion and Angle-Axis
16(1)
Angle-Axis to Quaternion
16(1)
Quaternion to Angle-Axis
17(1)
Conversion between Quaternion and Rotation Matrix
17(1)
Quaternion to Rotation Matrix
17(1)
Rotation Matrix to Quaternion
17(1)
Euler Angles
18(8)
Factoring Rotation Matrices
19(1)
Factor as RxRyRz
19(1)
Factor as RxRzRy
20(1)
Factor as RyRxRz
21(1)
Factor as RyRzRx
22(1)
Factor as RzRxRy
23(1)
Factor as RzRyRx
23(1)
Factor Product of Two
24(1)
Factor PxPy
24(1)
Factor PyPx
24(1)
Factor PxPz
25(1)
Factor PzPx
25(1)
Factor PyPz
26(1)
Factor PzPy
26(1)
Standard 3D Objects
26(12)
Spheres
26(1)
Sphere Containing Axis-Aligned Box
26(1)
Sphere Centered at Average of Points
27(1)
Minimum-Volume Sphere
28(1)
Oriented Boxes
29(1)
Axis-Aligned Boxes
29(1)
Fitting Points with a Gaussian Distribution
29(2)
Minimum-Volume Box
31(1)
Fitting Triangles with a Gaussian Distribution
32(1)
Capsules
32(1)
Least-Squares Fit
33(1)
Minimum of Minimum-Area Projected Circles
33(1)
Lozenges
34(1)
Fit with a Gaussian Distribution
34(1)
Minimization Method
35(1)
Cylinders
35(1)
Least-Squares Line Contains Axis
36(1)
Least-Squares Line Moved to Minimum-Area Center
36(1)
Ellipsoids
36(1)
Axis-Aligned Ellipsoid
37(1)
Fitting Points with a Gaussian Distribution
37(1)
Minimum-Volume Ellipsoid
37(1)
Distance Methods
38(41)
Point to Linear Component
38(3)
Linear Component to Linear Component
41(1)
Line to Line
42(1)
Line to Ray or Segment
43(1)
Ray to Ray or Segment, and Segment to Segment
43(6)
Point to Triangle
49(4)
Linear Component to Triangle
53(1)
Line to Triangle
54(3)
Ray to Triangle and Segment to Triangle
57(1)
Point to Rectangle
57(1)
Linear Component to Rectangle
58(2)
Ray to Rectangle and Segment to Rectangle
60(1)
Triangle to Triangle
61(1)
Triangle to Rectangle
61(1)
Rectangle to Rectangle
61(1)
Point to Oriented Box
61(4)
Miscellaneous
65(1)
Point to Ellipse
65(1)
Point to Ellipsoid
66(1)
Point to Quadratic Curve or Quadric Surface
67(1)
Point to Circle in 3D
68(1)
Circle to Circle in 3D
69(4)
Ellipse to Ellipse in 3D
73(6)
The Graphics Pipeline
79(62)
Model and World Coordinates
80(1)
Perspective Projection
80(4)
Lines Project to Lines
81(2)
Triangles Project to Triangles
83(1)
Conics Project to Conics
83(1)
Camera Models
84(7)
Standard Camera Model
85(2)
General Camera Model
87(1)
Model-to-View Transformation
87(2)
Mapping to Screen Coordinates
89(1)
Screen Space Distance Measurements
90(1)
Culling and Clipping
91(8)
Object Culling
92(1)
Back Face Culling
92(1)
Clipping
93(4)
Clip World, Transform World to View
97(1)
Clip Model, Transform Model to View
98(1)
Transform Model to View, Clip View
98(1)
Surface and Vertex Attributes
99(14)
Depth
99(1)
Colors
99(1)
Lighting and Materials
100(1)
Lights
100(1)
Materials
101(1)
Lighting and Shading
101(4)
Textures
105(1)
Coordinate Modes
105(1)
Filtering Modes
106(1)
Mipmapping
106(2)
Multitexture
108(1)
Transparency and Opacity
108(1)
Fog
109(1)
Combining Attributes
110(3)
Rasterizing
113(19)
Lines
113(4)
Circles
117(2)
Ellipses
119(1)
Specifying the Ellipse
119(1)
Axis-Aligned Ellipses
120(2)
General Ellipses
122(2)
Triangles
124(2)
Interpolation during Resterization
126(1)
Linear Interpolation
126(3)
Perspective Interpolation
129(3)
An Efficient Clipping and Lighting Pipeline
132(6)
Triangle Meshes
132(1)
Clipping a Triangle Mesh
133(3)
Computing Vertex Attributes
136(2)
Issues of Software, Hardware, and APIs
138(3)
Hierarchical Scene Representations
141(28)
Tree-Based Representation
143(4)
Transforms
144(1)
Local Transforms
144(1)
World Transforms
145(1)
Bounding Volumes
145(1)
Renderer State
146(1)
Animation
147(1)
Updating a Scene Graph
147(10)
Merging Two Spheres
148(1)
Merging Two Oriented Boxes
149(2)
Merging Two Capsules
151(1)
Merging Two Lozenges
151(1)
Merging Two Cylinders
152(1)
Merging Two Ellipsoids
152(1)
Algorithm for Scene Graph Updating
152(5)
Rendering a Scene Graph
157(12)
Culling by Spheres
157(2)
Culling by Oriented Boxes
159(1)
Culling by Capsules
160(1)
Culling by Lozenges
161(2)
Culling by Cylinders
163(1)
Culling by Ellipsoids
164(2)
Algorithm for Scene Graph Rendering
166(3)
Picking
169(16)
Intersection of a Linear Component and a Sphere
171(1)
Intersection of a Linear Component and a Box
172(7)
Line Segment
176(1)
Ray
177(2)
Line
179(1)
Intersection of a Linear Component and a Capsule
179(1)
Intersection of a Linear Component and a Lozenge
180(1)
Intersection of a Linear Component and a Cylinder
181(1)
Intersection of a Linear Component and an Ellipsoid
182(1)
Intersection of a Linear Component and a Triangle
182(3)
Collision Detection
185(72)
Design Issues
186(2)
Intersection of Dynamic Objects and Lines
188(5)
Spheres
188(2)
Oriented Boxes
190(1)
Capsules
190(1)
Lozenges
191(1)
Cylinders
191(1)
Ellipsoids
191(1)
Triangles
192(1)
Intersection of Dynamic Objects and Planes
193(10)
Spheres
193(1)
Oriented Boxes
194(2)
Capsules
196(1)
Lozenges
197(1)
Cylinders
198(3)
Ellipsoids
201(1)
Triangles
202(1)
Static Object-Object Intersection
203(11)
Spheres, Capsules, and Lozenges
204(1)
Oriented Boxes
205(2)
Oriented Boxes and Triangles
207(2)
Axis N
209(1)
Axes Ak
210(1)
Axes Ai x Ej
210(1)
Triangles
210(3)
Axes N or M
213(1)
Axes Ei x Fi
214(1)
Axes N x Ei or M x Fi
214(1)
Dynamic Object-Object Intersection
214(30)
Spheres, Capsules, and Lozenges
215(2)
Oriented Boxes
217(1)
Finding the First Time of Intersection
218(1)
Finding a Point of Intersection
219(4)
Oriented Boxes and Triangles
223(1)
Finding the First Time of Intersection
223(4)
Finding a Point of Intersection
227(5)
Triangles
232(1)
Finding the First Time of Intersection
233(5)
Finding a Point of Intersection
238(6)
Oriented Bounding Box Trees
244(1)
Processing of Rotating and Moving Objects
245(5)
Equations of Motion
246(2)
Closed-Form Algorithm
248(1)
Algorithm Based on a Numerical Ordinary Differential Equation Solver
249(1)
Constructing an OBB Tree
250(1)
A Simple Dynamic Collison Detection System
251(6)
Testing for Collision
252(1)
Finding Collision Points
253(4)
Curves
257(30)
Definitions
258(2)
Reparameterization by Arc Length
260(1)
Special Curves
261(15)
Bezier Curves
261(1)
Definitions
261(1)
Evaluation
262(1)
Degree Elevation
263(1)
Degree Reduction
263(1)
Natural, Clamped, and Closed Cubic Splines
264(2)
Natural Splines
266(1)
Clamped Splines
266(1)
Closed Splines
267(1)
Nonparametric B-Spline Curves
267(4)
Kochanek-Bartels Splines
271(5)
Subdivision
276(9)
Subdivision by Uniform Sampling
276(1)
Subdivision by Arc Length
276(1)
Subdivision by Midpoint Distance
277(1)
Subdivision by Variation
278(4)
Subdivision by Minimizing Variation
282(1)
Fast Subdivision for Cubic Curves
283(2)
Orientation of Objects on Curved Paths
285(2)
Orientation Using the Frenet Frame
285(1)
Orientation Using a Fixed ``Up'' Vector
286(1)
Surfaces
287(54)
Definitions
288(1)
Curvature
289(4)
Curvatures for Parametric Surfaces
289(1)
Curvatures for Implicit Surfaces
290(1)
Maxima of Quadratic Forms
290(1)
Maxima of Restricted Quadratic Forms
291(1)
Application to Finding Principal Curvatures
292(1)
Curvatures for Graphs
293(1)
Special Surfaces
293(13)
Bezier Rectangle Patches
293(1)
Definitions
294(1)
Evaluation
294(1)
Degree Elevation
295(1)
Degree Reduction
295(2)
Bezier Triangle Patches
297(1)
Definitions
297(1)
Evaluation
297(1)
Degree Elevation
298(1)
Degree Reduction
298(3)
Bezier Cylinder Surfaces
301(1)
Nonparametric B-Spline Rectangle Patches
302(2)
Quadric Surfaces
304(1)
Three Nonzero Eigenvalues
304(1)
Two Nonzero Eigenvalues
305(1)
One Nonzero Eigenvalue
305(1)
Tube Surfaces
306(1)
Subdivision
306(35)
Subdivision of Bezier Rectangle Patches
306(1)
Uniform Subdivision
306(7)
Nonuniform Subdivision
313(3)
Adjustments for the Camera Model
316(1)
Cracking
316(5)
Subdivision of Bezier Triangle Patches
321(1)
Uniform Subdivision
322(1)
Nonuniform Subdivision
323(5)
Subdivision of Bezier Cylinder Surfaces
328(1)
Uniform Subdivision
328(1)
Nonuniform Subdivision
328(1)
Subdivision of Spheres and Ellipsoids
328(1)
Data Structures for the Algorithm
329(2)
Subdivision Algorithm
331(8)
Subdivision of Tube Surfaces
339(2)
Animation of Characters
341(18)
Key Frame Animation
342(6)
Quaternion Calculus
342(1)
Spherical Linear Interpolation
343(2)
Spherical Cubic Interpolation
345(1)
Spline Interpolation of Quaternions
346(1)
Updating a Key Frame Node
347(1)
Inverse Kinematics
348(8)
Numerical Solution by Jacobian Methods
350(1)
Numerical Solution by Nonlinear Optimization
351(1)
Numerical Solution by Cyclic Coordinate Descent
351(1)
List Manipulator with One End Effector
352(2)
List Manipulator with Multiple End Effectors
354(1)
Tree Manipulator
355(1)
Other Variations
355(1)
Skinning
356(3)
Geometric Leve of Detail
359(10)
Sprites and Billboards
360(1)
Discrete Level of Detail
361(1)
Continuous Level of Detail
362(7)
Simplification Using Quadric Error Metrics
362(2)
The Algorithm
364(1)
Construction of the Error Metric
365(1)
Simplification at Run Time
365(1)
Selecting Surface Attributes
366(3)
Terrain
369(42)
Terrain Topology
370(3)
Vertex-Based Simplification
373(2)
Distant Terrain Assumption
373(1)
Close Terrain Assumption
374(1)
No Assumption
375(1)
Block-Based Simplification
375(6)
Distant Terrain Assumption
376(2)
Close Terrain Assumption
378(1)
No Assumption
379(2)
Vertex Dependencies
381(2)
Block Rendering
383(2)
The Full Algorithm
385(7)
Other Issues
392(6)
Terrain Pages and Memory Management
392(3)
Vertex Attributes
395(2)
Height Calculations
397(1)
Height Fields From Point Sets or Triangle Meshes
398(13)
Linear Interpolation
398(1)
Quadratic Interpolation
399(1)
Barycentric Coeffcients as Areas
399(1)
Inscribed Circles
400(1)
Bezier Triangles
401(1)
Derivatives
402(1)
Derivative Continuity
403(1)
The Algorithm
404(7)
Spatial Sorting
411(16)
Quadtrees and Octrees
412(1)
Portals
413(4)
Binary Space Partitioning
417(10)
BSP Tree Construction
418(2)
Hidden Surface Removal
420(1)
Back-to-Front Drawing
420(3)
Front-to-Back Drawing
423(1)
Visibility Determination
424(1)
View Space Method
425(1)
Screen Space Method
425(1)
Picking and Collision Detection
425(2)
Special Effects
427(8)
Lens Flare
427(1)
Environment Mapping
428(1)
Bump Mapping
429(1)
Volumetric Fogging
430(1)
Projected Lights
430(1)
Projected Shadows
431(1)
Particle Systems
432(1)
Morphing
433(2)
Appendix A Object-Oriented Infrastructure 435(34)
A.1 Object-Oriented Software Construction
435(7)
A.1.1 Software Quality
436(1)
A.1.2 Modularity
437(1)
The Open-Closed Principle
438(1)
A.1.3 Reusability
439(1)
A.1.4 Functions and Data
440(1)
A.1.5 Object Orientation
441(1)
A.2 Style, Naming Conventions, and Namespaces
442(2)
A.3 Run-Time Type Information
444(7)
A.3.1 Single-Inheritance Systems
444(3)
A.3.2 Multiple-Inheritance Systems
447(3)
A.3.3 Macro Support
450(1)
A.4 Templates
451(2)
A.5 Shared Objects and Reference Counting
453(6)
A.6 Streaming
459(5)
A.6.1 Saving Data
459(1)
A.6.2 Loading Data
460(1)
A.6.3 Streaming Support
461(3)
A.7 Startup and Shutdown
464(5)
Appendix B Numerical Methods 469(40)
B.1 Systems of Equations
469(3)
B.1.1 Linear Systems
469(1)
B.1.2 Polynomial Systems
470(2)
B.2 Eigensystems
472(1)
B.3 Least-Squares Fitting
472(9)
B.3.1 Linear Fitting of Points (x, f (x))
472(1)
B.3.2 Linear Fitting of Points Using Orthogonal Regression
473(1)
B.3.3 Planar Fitting of Points (x, y, f(x, y))
474(1)
B.3.4 Hyperplanar Fitting of Points Using Orthogonal Regression
475(1)
B.3.5 Fitting a Circle to 2D Points
476(2)
B.3.6 Fitting a Sphere to 3D Points
478(2)
B.3.7 Fitting a Quadratic Curve to 2D Points
480(1)
B.3.8 Fitting a Quadric Surface to 3D Points
481(1)
B.4 Minimization
481(4)
B.4.1 Methods in One Dimension
481(1)
Brent's Method
482(1)
B.4.2 Methods in Many Dimensions
482(1)
Steepest Descent Search
483(1)
Conjugate Gradient Search
483(1)
Powell's Direction Set Method
484(1)
B.5 Root Finding
485(6)
B.5.1 Methods in One Dimension
485(1)
Bisection
486(1)
Newton's Method
486(1)
Polynomial Roots
486(3)
B.5.2 Methods in Many Dimensions
489(1)
Bisection
490(1)
Newton's Method
490(1)
B.6 Integration
491(5)
B.6.1 Romberg Integration
491(1)
Richardson Extrapolation
491(2)
Trapezoid Rule
493(1)
The Integration Method
494(1)
B.6.2 Gaussian Quadrature
495(1)
B.7 Differential Equations
496(7)
B.7.1 Ordinary Differential Equations
496(1)
Euler's Method
497(1)
Midpoint Method
497(1)
Runge-Kutta Fourth-Order Method
498(1)
Runge-Kutta with Adaptive Step
498(1)
B.7.2 Partial Differential Equations
499(1)
Parabolic: Heat Transfer, Population Dynamics
500(1)
Hyperbolic: Wave and Shock Phenomena
501(1)
Elliptic: Steady-State Heat Flow, Potential Theory
502(1)
Extension to Higher Dimensions
502(1)
B.8 Fast Function Evaluation
503(6)
B.8.1 Square Root and Inverse Square Root
503(1)
B.8.2 Sine, Cosine, and Tangent
504(1)
B.8.3 Inverse Tangent
505(2)
B.8.4 CORDIC Methods
507(2)
Glossary 509(12)
Bibliography 521(6)
Index 527(30)
About the Author 557(2)
About the CD-ROM 559(2)
Trademarks 561

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program