I bought Mathematics for 3D Game Programming & Computer Graphics and this book hoping to learn the basics of 3D for game development. I wanted a book to really help me to understand -not only know- the principles behind 3D development.
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.
The authors state early on that this book is intended as the first book an aspiring game programmer should read, and I would agree that for the most part it lives up to that goal. Many 3D game programming books include math primers covering a chapter or two, but really, 3D math is a huge topic deserving an entire volume. This book provides a great service, then, in that it thoroughly covers most of the basic topics that graphics programmers need to know, in a tutorial style that should be accessible to all beginners. Hopefully, we'll start to see more game programming books that focus on their core material and defer coverage of 3D math to books like this one rather than trying to pack unavoidably incomplete coverage into a few dozen pages.
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.
Well I must say that the book was very well written overall. I'll get to the reasons why I only gave it 4 stars instead of 5 shortly.
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!
This book does a fantastic job of starting out with the basics. It doesn't assume you already know 3D math. I had to re-read a couple parts to make sure I understood what was being taught, however this was due to the nature of the difficult subject, and not because it was poorly written. The book is very well written.
While this book starts out with the basics, it does move into more advanced topics, but because it does such a good job of giving you a solid foundation at the beginning, you are able keep up.
The code samples are excellent as well. They don't get so complicated that you can't understand it...and they help to reinforce how to actually implement a vector, matrix etc. in C.
Thanks to authors for writing a book that a person with very little 3D math experience can pick up and actually get through. I would highly recommend this book to anyone wanting to learn more about 3D math...whether you are a beginner or advanced.
If you are even slightly interested in 3D math and computer graphics or game programming, I would pick this book up for sure. It is the best book I have found yet on the subject.
For a long time I wanted to learn 3D programming, but the only options available to teach myself the core mathematics were Appendix A's in Direct3D Programming books or buying three or four Linear Algebra textbooks for college courses and hope that one of them would explain things in terms of 3D and not just "boxes of numbers."
But the 3D Math Primer was exactly what was needed to provide that gap--and even be readable! Just going through the first 11 chapters I was able to create my own spinning cube application that used no 3D libraries whatsoever. =D Previous to this, a dutifully followed Direct3D tutorial had once gotten me a spinning triangle but I can't honestly admit to having any idea what I had done to achieve it.
There are sections where mathematical topics are presented simply as "interesting things you can do with these boxes of numbers to get whole new boxes of numbers" which hopefully will be given some more 3D filling out in future editions. But I wouldn't recommend waiting as this is already an invaluable resource to anyone who hopes to teach himself 3D programming.