Practical Algorithms for 3D Computer Graphics, Second Edition covers the fundamental algorithms that are the core of all 3D computer graphics software packages. Using Core OpenGL and OpenGL ES, the book enables you to create a complete suite of programs for 3D computer animation, modeling, and image synthesis.
Since the publication of the first edition, implementation aspects have changed significantly, including advances in graphics technology that are enhancing immersive experiences with virtual reality. Reflecting these considerable developments, this second edition presents up-to-date algorithms for each stage in the creative process. It takes you from the construction of polygonal models of real and imaginary objects to rigid body animation and hierarchical character animation to the rendering pipeline for the synthesis of realistic images.
New to the Second Edition
- New chapter on the modern approach to real-time 3D programming using OpenGL
- New chapter that introduces 3D graphics for mobile devices
- New chapter on OpenFX, a comprehensive open source 3D tools suite for modeling and animation
- Discussions of new topics, such as particle modeling, marching cubes, and techniques for rendering hair and fur
- More web-only content, including source code for the algorithms, video transformations, comprehensive examples, and documentation for OpenFX
The book is suitable for newcomers to graphics research and 3D computer games as well as more experienced software developers who wish to write plug-in modules for any 3D application program or shader code for a commercial games engine.
Basic Principles
Introduction
A note on mathematics for 3D computer graphics
Getting up to speed and following up
Assumed knowledge
Computer graphics and computer games
The full spectrum
Basic Theory and Mathematical Results
Coordinate systems
Vectors
Homogeneous coordinates
The line in vector form
The plane
Intersection of a line and a plane
Closest distance of a point from a line
Closest distance of approach between two lines
Reflection in a plane
Refraction at a plane
Intersection of a line with primitive shapes
Transformations
Parametric curves
Interpolation
Bézier curves
Splines
Parametric surfaces
Angular interpolation (quaternions)
Data Structures for 3D Graphics
Integer coordinates
Vertices and polygons
Algorithms for editing arrays of structures
Making an edge list from a list of polygonal faces
Finding adjacent polygons
Finding polygons adjacent to edges
Basic Visualization
The rendering pipeline
Hidden surface drawing and rasterization
Anti-aliasing
Lighting and shading
Materials and shaders
Image and texture mapping
Perlin noise
Pseudo shadows
Line drawing
Tricks and tips
Realistic Visualization
Radiometric lighting and shading
Ray tracing
Ray tracing optimization
Multi-threading and parallel processing
Computer Animation
Keyframes (tweening)
Animating rigid motion
Character animation
Inverse kinematics
Physics
Animating cloth and hair
Particle modeling
Practical 3D Graphics
Real-Time 3D: OpenGL
The basics
Native programming
The GL shading language
The P-buffer and framebuffer objects
Rendering a particle system using OpenGL
Summing up
Mobile 3D: OpenGLES
OpenGLES
3D on iOS
3D on Android
Summing up
The Complete Package: OpenFX
Using OpenFX
The OpenFX files and folders structure
Coordinate system and units
User interface implementation
The Animation module
The Designer module
The Renderer module
Adding to the software
Continuing to dissect OpenFX
Practical Algorithms for Modeling and Procedural Textures
Modeling with Polygonal Datasets
Triangulating polygons
Triangulating polygons with holes
Subdividing polygonal facets
Lofting
Surfaces of revolution
Beveling
Orienting surface normals
Delaunay triangulation
Boolean modeling
Metaball modeling and marching cubes
Texture coordinate generation
Building polygonal primitives
Algorithms for Procedural Textures
A standard interface
CPU textures
GPU textures
Fur and short hair
Bibliography
Index
Biography
R. Stuart Ferguson
"A valuable book to accompany any course that mixes the theory and practice of 3D graphics. The book’s web site has many useful programs and code samples."
—Karen Rafferty, Queen’s University, Belfast"The topics covered by this book are backed by the OpenFX modeling and animation software. This is a big plus in that it provides a practical perspective and encourages experimentation. … [This] will offer students a more interesting and hands-on learning experience, especially for those wishing to pursue a career in computer game development."
—Naganand Madhavapeddy, Game Developer