on 3 March 2012
Since I first started working as a programmer in the game industry in the mid 1990s I have been looking for a book that explains the maths that underpin 3D games from first principles, doesn't assume any more than absolutely neccessary about the mathematical experience of the reader, and doesn't just throw pages of mathematical notation at you.
I never found maths difficult at school, but I did find pure maths boring and so I ditched it as soon as I was able. Ironically it was the topic of vector and matrix maths that was the final straw that made me decide to drop maths as a subject. D'oh. I still studied physics, chemistry, and biology so I was able to get onto a Jt hons BSc in Computer Science / AI and Psychology which was pretty light on maths, and do the course without any trouble and as little maths as possible.
Anyway, my first task in my first job was to see if I could re-write and optimise the collision system in a fully 3D car dynamics prototype (which would eventually go on to form the basis of the ToCA Touring Cars and Colin McRae Rally physics engines).
Luckily for me, one of the guys involved with the dynamics code was a bit of a genius and also very good at explaining maths, so I managed to get a functional understanding of vector and matrix maths as it relates to 3D games in an afternoon, and have been working it out myself via google and books ever since - so I'm basically self-taught & lucky to have been around bright people who could fill in the blanks for me
My understanding of the 3d maths in games is, I would say, pretty solid - good enough that (for example) I managed to work out how to calculate the tangents and binormals needed for normal mapping without looking it up - but I've always been more than a little sketchy on the basics of the 3D stuff - for example I wouldn't have had the first clue how to derive the formulas that make up the row vectors in a matrix that rotates about an arbitrary axis in 3D - and that's where this book comes in...
This book starts with an assumption of approximately GCSE / AS level maths (age 16 - 17 in the UK) and takes it from there. It is exceptionally well thought out and well structured, it is also well written and funny enough to be read through "for fun", in fact I've laughed out loud quite a few times when reading it (mostly at the HHGttG references...).
All concepts are discussed from first principles, introduced with diagrams and carefully thought out visual and geometric examples before breaking out the equations. All mathematical notation is explained carefully on its first use and the reader's attention is always directed to any particularly tricky aspects of the maths that are likely to get you into trouble.
There are lots of well chosen exercises at the end of each chapter to ensure that the reader has grokked the content, and the answers to each are in an appendix with full working, so if you get stuck you can see what you should have been doing - or cheat if you can't be bothered to do it by hand ;)
In addition to all of this, I also contacted the authors (via the book's website) requesting clarification of some aspect of the working of a derivation that I couldn't make sense of and one of them got back to me within a day or so - which is clearly going above any beyond what one would expect...
If you want to understand not just how to use vectors matrices and the rest of 3D game maths, but why and how it all works then this book is definitely for you - I cannot recommend this text highly enough.