Practical Algorithms for 3D  Computer


by R. Stuart Ferguson

3D Graphics

Taken as a whole, the topics covered in this book will enable you to create a complete suite of programs for three-dimensional computer animation, modeling and image synthesis. It is about practical algorithms for each stage in the creative process.The text takes you from the construction of polygonal models of objects (real or imaginary) through rigid body animation into hierarchical character animation and finally down the rendering pipeline for the synthesis of realistic images of the models you build. The content of the book arises from a postgraduate course on computer graphics that I have given for many years and the experience of working on two comprehensive 3D animation and modeling application programs Envisage 3D and SoftFX for the personal computer in the 1990s. In that time the capabilities of both the hardware and software for creating computer graphics have increased almost unimaginably.

A quick look at the contents of the book

The book is divided into three parts. The first,(Basic Principles),
covers the key concepts of 3D computer graphics. After a brief introduction the focus moves to the fundamental mathematical
ideas that lie at the heart of all the other algorithms discussed in
the book. Personally, I find it very satisfying that in just a few pages, we can set out all the maths you need to produce beautiful photorealistic pictures.
A computer generated image of a 3D universe requires that the objects which inhabit it are described using numbers and stored in some form of structured database. Chapter 3 discusses the pros and cons of 3D data organization and describes several algorithms that are useful in manipulating faceted models of the universe's inhabitants.
Chapters 4 and 5 cover the topic of rendering and take a step by step approach to the design of algorithms, from the fastest
scanline Z buffer procedure to the high quality ray-traced approach.
I have tried to include those little things that generally get overlooked in the grand theoretical texts but are of practical importance, for example how to optimize your 3D database for ray tracing.A very active area in Computer Graphics software development today is animation, and character animation in particular. Chapter 6 outlines the basic principles of animation
techniques and discusses some ideas for character animation andother effects that can be expressed procedurally rather than having to do it by hand. The principles of Inverse Kinematics are introduced and presented in a way specific to computer animation.
The second part of the book is intended for the professional `plugin' or game engine developer and provides (hopefully) a rich collection of algorithms covering such diverse topics as polygonal modeling procedures, pseudo three-dimensional video
transition effects and procedural textures for use with a photorealistic Z buffer or ray tracing renderer.

The final part of the book is devoted to example programs
produced with widely available 3D graphics libraries. I have
concentrated on examples for Microsoft's Windows operating system primarily executing on PC platforms using the Intel microprocessor. I have chosen to explore two graphics libraries because their Application Programming Interfaces (APIs) are so different. One has wide acceptance and the other growing popularity. OpenGL has an established history and is now available for all versions of Windows. In 1996 Microsoft introduced a system called Direct3D that has growing popularity, particularly among 3D game developers. Chapters 8 and 9 exemplify
the use of these APIs by showing the step by step development of programs that draw ({\em in real time}) views of 3D objects such as those produced by 3DS Max, SoftImage etc.
Chapter 11 shows you how to develop a Windows program that bypasses all the bottlenecks imposed by the system when you want to play animated image sequences (movies) so that they occupy the full screen and run at maximum speed.

About the book

The book was first published in 2001

It contains three sections and details of many of the authors unique algorithms for procedural shaders and  3D modeling tools.