Features
- Cover Type: Hard Cover with 1040 pages
- Published by: Morgan Kaufmann
- Edition: 2nd Edition November 3, 2006
- Written in: English
- ISBN 10 Number: 0122290631
- ISBN 13 Number: 978-0122290633
-
Book Dimensions:
9.3 x 7.8 x 1.9 inches
- Weighs: 5.1 pounds
Product Review
Aimed at the working Visual C++ game developer,
3D Game Engine Design provides a tour of mathematical techniques for 3-D graphics, and the source code that's used to implement them in state-of-the-art video game engines. If you work in the game industry (or would like to), this book will serve you well, because it delivers great best practices for algorithms and programming techniques that'll help your
software keep up with the competition.
This text is a virtual encyclopedia of expertise that's based on the author's own work and research in the gaming industry. It provides the mathematical notation, algorithms, and C++ code (on the accompanying CD-ROM) that are needed to build fast and maintainable game engines. Early sections start with the basics, with the math that's used to work with common 3-D objects (like spheres and boxes). Highlights include a high-powered review of quaternion algebra--in many cases, the preferred way to transform 3-D data.
The chapters on graphics pipelines explain the math that's behind representing and rendering a 3-D world in 2-D with intervening effects like lighting and texture mapping. A variety of current algorithms are provided for representing 3-D scenes, efficient
picking (which allows a programmer to determine the object in a 3-D world that has been selected), and
collision detection (in which objects collide virtually). In the game
software of today, curves--and not individual triangles or polygons--often are used to represent 3-D objects. Algorithms that are used to turn curves into rendered surfaces are provided, too.
Later sections look at the current thinking about animation techniques for characters (including
key frames,
inverse kinematics, and
skinning (in which digital skin is fitted over digital bone to create more realistic-looking movement)). How to represent terrain inside virtual worlds also is explained. The book closes with great material on such cutting-edge special effects as lens flare and projected shadows, which can add an extra level of realism to a video game. An appendix looks at guidelines for designing object-oriented game
software in C++.
Filled with mathematical insight and expert code that puts each principle or algorithm to work,
3D Game Engine Design provides an expert view of what goes into building a state-of-the-art game engine.
--Richard Dragan Topics covered: - Mathematical methods and sample source code for 3-D game development
- Geometrical transformations
- Coordinate systems
- Quaternions
- Euler angles
- Standard 3-D objects: spheres, oriented boxes, capsules, lozenges, cylinders, ellipsoids
- Distance methods for a variety of shapes
- Introduction to the graphics pipeline
- Model and world coordinates
- Projecting perspective
- Camera models
- Culling techniques
- Surface and vertex attributes
- Rasterizing
- Efficiency issues for clipping and lighting
- Hierarchical scene representation, using trees and scene graphs
- Picking algorithms for a variety of 3-D shapes
- Collision detection for static and dynamic graphical objects
- Oriented bounding-box (OBB) trees
- Basics of curves and special curves (including Bezier curves and various splines)
- Curves (generating surfaces from curves by using different techniques)
- Character animation, using keyframe animation and inverse kinematics
- Skinning
- Geometrical level of detail considerations
- Techniques for generating game terrain
- Spatial sorting and binary space partitioning (BSP)
- Special effects: lens flare, bump mapping, volumetric fogging, projected light and shadows, particle systems, morphing techniques
- C++ language features for effective object-oriented design
- Reference to the numerical methods required for game mathematics
--This text refers to an out of print or unavailable edition of this title.
Book Description
A major revision of the international bestseller on game programming
Reader Reviews
This review is from: 3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics (The Morgan Kaufmann Series in Interactive 3D Technology) (Hardcover)
The title of this book and the back cover convinced me to buy this book on sight. "At last," I thought, "a book covering the dificult task of game engine architechture." I was very wrong. This book does a fair job of going one level deeper than the Game Programming Gurus series, or 3D Game programming by De Geos, or any of the hack retained mode Direct X books, but it does not come close to the full knowledge of Foley - Van Dam, or the Watt and Watt books. It is written at a math level that if you can easily understand it, you don't need it. This book, ignoring its title for a minute is a poor substitute for Real Time Rendering even at twice the thickness. It is more complicated than the two excellent books by the Watt brothers, 3D Computer Graphics and Advanced Animation and Rendering Techniques. It fails to explain architecture even remotely as well as Lakos' book Large Scale C++. In short it does a poor job at replicating what many books have done before. What it does do though, is expose a glaring hole in all the books relating to graphics programming and games in particular. There still is no good book on designing a game engine. I work in the industry, and while I've seen some briliant ideas on visual effects and performance gains, I have never seen an architecture that wouldn't have the lead programmer fired from any other industry. There is a need for what the title indicates, but the subject is contained in appendix A. The rest of the book is about culling and collisions and ray tracing and every other low level library function I could have gotten from a dozen books. There is massive amounts of source code. And while reasonably well written as a library, the whole is woefully lacking as a framework. This book should have been the other way around. We all have the libraries, how about a little discussion on the framework to hang them in.