* Explains basic concepts such as vectors, coordinate spaces, matrices, transformations, Euler angles, homogenous coordinates, geometric primitives, intersection tests, and triangle meshes.
* Discusses orientation in 3D, including thorough coverage of quaternions and a comparison of the advantages and disadvantages of different representation techniques.
* Describes working C++ classes for mathematical and geometric entities and several different matrix classes, each tailored to specific geometric tasks.
* Includes complete derivations for all the primitive transformation matrices.
Ian Parberry is a professor of computer science at the University of North Texas and is internationally recognized as one of the top academics teaching computer game programming with DirectX. He is also the author of Learn Computer Game Programming with DirectX 7.0 and Introduction to Computer Game Programming with DirectX 8.0.
I found that Mathematics for 3D Game Programming & Computer Graphics was a "copy and paste" of parts of a linear algebra textbook. It had the interesting parts for graphics developers, but it did nothing in terms of reaching / teaching the reader, explaining things and helping to smooth the learning curve. It was pure math.
Well, 3D Math Primer for Graphics and Game Development it's just the opposite. It's clear, concise and mathematical rigorous, but at the same time it tries to reach the reader, explains the math of 3D graphics AND the reasons behind that math. Whenever possible it always gives you a graphic interpretation of what you are reading and if that's not possible, it gives you extra explanations. The authors know where the hard parts are and excel at helping you to understand them. Where most books give you a theorem and left you in your own (face it: most books) this one tries to help you to get a step beyond and understand the math and the workings of it.
There is a clear feeling in all the book: usefulness.
This book -in terms of smoothing the learning curve- is to current basic 3D math what Realtime Rendering is to current 3D algorithms and techniques.
1. It's very basic. Don't expect to go from 0 to 100 with this book. It will give you the basics, but you will need to continue.
2. It's not mean to give you full working code. The code examples are to illustrate how the concepts can be implemented in software, not to provide a full working library.
To sum it up: a book to understand, not just "know" the math behind 3D math written in a clear and non-pretentious way.
So, what exactly does it cover? It starts off with a couple of chapters on coordinate systems, and then spends three chapters on vectors, followed by another three chapters on matrices and transformations. It then covers orientation, comparing matrix, Euler angle, and quaternion representations (including one of most clear explanations of quaternions that I've encountered), before diving into several chapters covering geometric primitives, including detailed coverage of working with triangle meshes.
The book closes with a chapter applying 3D math to graphics in areas such as lighting, fog, coordinates spaces, LOD, culling and clipping, and so on, and another chapter on visibility determination, touching on things like quad- and octrees, BSP trees, PVS, and portal techniques. The explanations in these chapters are much less complete, taking more of an overview approach. Others have criticized the book for this, but I feel that an overview is appropriate, since it then sets the stage for these topics to be covered in detail in other game programming books.
I'd definitely recommend this book to anyone just getting started with game and graphics programming.
First, it is my opinion that you need to know the following before you even get started with this book to get the most out of it. You should know at least algebra level math, preferrably at a college level. While the book states you don't need to know trig, I believe it will help you if you do know at least some trig. Finally you should obviously know C++ fairly well, the book heavily leans towards C++, but if you understand the material in the book well enough you shouldn't have too much problems porting it to another language.
Some of the major topics covered in the book from beginning to end are the cartesian coordinate system, vectors, matrices, euler angles, quaterions, geometric primitives, geometrics tests (i.e. intersection tests), triangle meshes, lighting equations and visibility determination. Plus an appendix that covers some trigonometry.
Ok, the good news. I believe about first 3/4's of the book are top notch. The authors went to extreme lengths to cover the material with very clear and concise explanations of the math topics that are covered and have plenty of pictures to help you understand it. The chapters that cover vectors and matrices made it very clear to me why and how this stuff is used in 3d graphics. The authors also consider the pros and cons of using matrixes, euler angles and quaterions in depth. And at the end most of the chapters are some exercises that help reinforce the material. It's just great stuff!
Now the bad news. I feel the last quater of the book had a very rushed feel to it. The topics in those sections just don't meet up to the level of first 3/4's of the book. Topics are skimmed over or just summarily introduced and most of the time you get 'This is beyond the scope of this book, etc..'. Now I understand that most of those topics are beyond the scope of the book but I guess that I got used to the excellent reading of the earlier chapters so I ended up feeling somewhat dissapointed by the remaining ones. But on a positive note they do supply other resources you can look to in the bibliography. One last gripe that I have is they only supply the answers to the exercises up to chapter 7 on their website, they need the answers to the remaining chapters. Those are the reasons why I gave it 4 stars instead of 5.
Finally, I do highly recommend this book if you interested in learning about 3D programming and it will lay a good foundation for you to move onto other 3D programming books. The positives far outweighs the negatives so it's a great place to start your exploration into the world of 3D graphics!