on January 16, 2012
As a word of warning, do not purchase this book expecting it to teach you math fundamentals. If you do not have a background of at least algebra and trigonometry (and preferably a bit of calculus), you owe it to yourself to pick up another book and brush up on these fundamentals. While there are a few appendices covering a handful of topics, they are less about explaining the topic and more of reference pages.
Mathematics for 3D Game Programming and Computer Graphics is an excellent reference book for anyone doing 3D work. The topics are very to the point and few pages are wasted explaining basic math principles (hence the warning about having a decent math background). The book probably won't teach anyone who doesn't know they underlying principles but will be your go-to reference for any algorithm you implement.
The book starts with the reviews of the requisite vector, matrix, transformation (including rotations by quaternions) and basic geometry for a view frustum, but quickly dives into more advanced topics. Ray tracing is covered for all areas of use, from light maps to reflections. The lighting chapter covers texturing using several map types as well as lighting models with a very enjoyable discussion of specular reflection models.
Solid chapters on culling using bounding volumes and portal systems, shadowing and curve algorithms round out the first half of the book. The second half is devoted to the mathematics of physics, with chapters on basic collision detection, linear and rotational physics. The simulation of fluids and cloth (one of the more difficult physical models to accurately compute in a game) gets it's own chapter and it's a highlight for anyone implementing character clothing animation or a realistic water volume.
Every chapter has exercises (with and appendix of answers) to reinforce the material. The C++ and GLSL shader code is available on the books companion website ([...]) much of which forms the basis for the math classes of the authors own engine.
Anyone who needs a math reference book for 3D would do well to own this book. If you are writing your own engine, you owe it to yourself to pick up what will be the only math book you will need. While many technical books do not age well, this hardcover book will last through many late-night coding sessions both physically and with regard to the material within at a low price point. Never again will you have to scour through your old textbooks or search online for the algorithm you are trying to implement. The author has done the impossible; make a truly terrific math textbook.
on June 30, 2004
Finally, no more searching through all my college math textbooks for the reference I need for real-time 3D software development. The basics of vectors and matrices are of course included, but in much more depth than you got in school, more than likely - and with emphasis on how they are useful in 3D game programming. So many game developers lack an intuitive feel for such basics as transformation matrices, dot products, and cross products and are hobbled by this; just read up to chapter three and the lights will go on, so to speak. The chapter on lighting is particularly, well, enlightening - not only are the various lighting models explained in detail (including some I was unfamiliar with before), but the author provides means for accomplishing them in real-time using texture and vertex shaders.
The notation used in the book is modern and consistent, and the code samples clearly written. I believe this is the first volume to combine complete mathematical explanations of essential 3D computer graphics operations with practical advice on how to implement the sometimes complex math efficiently in real-time systems.
The chapters on picking and collision detection are also complete and include practical advice on implementation in addition to the theory behind it.
This is not a book for most high school math students - the author assumes you've at least been through some higher level math and can talk the basic language of mathematics. However, it does not presuppose that you are familiar with anything but basic calculus, and more importantly, it doesn't assume that you're familiar with some quirky notational system specific to the author. I haven't been in a math class for ten years, but I had no trouble understanding any concepts introduced in this book upon the first read.
I don't forsee this volume leaving my desk anytime soon!
To be honest, while I find this book to be a decent reference, I find it to be pretty inaccessible in terms of sitting down and reading through it in an attempt to learn the concepts. As a non-math major (I'm actually an engineer and software developer) these math concepts are by no means beyond me. But rather than simply being presented with equation after equation, proof after proof, what I find a lot more valuable is more discussion on the usage of these equations. Specifically I'd like to see examples, diagrams, and code, and there is precious little of any of that in this book.
In other words, this book is very much like what you expect to find in a very dry upper devision college math text for the consumption of math majors who are used to such things. But for a non math major just trying to make use of these concepts in order to get the job done and make games? eh, not so much.
Still, I do think this book is useful as a reference when I want to look up an equation as there are a ton of them crammed into this book, but for me, I just don't find this book to be very good as a learning tool.
on December 5, 2011
This book is just what I have been looking for: something that presents and cogently explains the math that is most useful for implementing 2d and 3d computer graphics. If the Kindle edition did not have the problems it has, I would give it 5 stars. However, it gets a poor rating for two reasons. One, the diagrams are too small! Other Kindle documents allow the reader to scale images, but not this one. Two, and this is just INEXCUSABLE: The Kindle edition, but not the print edition, has errors that make the equations and proofs worthless. I can't quote examples exactly because special characters don't show up properly, but here's a description of three examples:
1. print p. 13, Theorem 2.2
Kindle uses improper notation in (c), and an ill-formed expression in (d).
2. print p. 14, fig 2.1: "The triangle inequality states that [equation]"
Kindle reverses the inequality in the equation.
3. print p. 15,
"Definition 2.3. The dot product of two n-dimensional vectors P and Q, written as ..."
Kindle leaves out a crucial character in the "written as" formula.
on August 3, 2004
This book is great. Its material is well explained, the topics covered are complete (for the most part), and the examples make sense. It is a fantastic reference that should be on the shelf of any professional game programmer or aspiring game programmer. However, this book isn't a hand holding guide to making "cool" games, as some reviewers expected it to be. There is no single book for that. There are so many topics to cover, it would be impossible to put them all into one text. Please don't be fooled by reviews from non-professionals, as this book is a must have. For a list of beginner books to give yourself an introduction to game programming, feel free to send me an email.
on March 6, 2004
This book explain the mathematics behind a game engine, and it does it pretty well. If you are looking for code to cut and paste into your programs, then this book is not for you. But if you want to really anderstand the theory, it has, in my opinion, a very good balance between explanations, demonstrations and examples.
I got this book because my math was a little 'rusty' and it does a perfect job in bringing all this stuff back in memory, and mutch more as I discover a lot of new stuff and how it can be used in a game engine. I really enjoy this book!
I gave the first edition of this book a 5 star rating, so considering that the second edition provides updates to the original as well as four new chapters, it's no surprise that the second edition earns a 5 star rating as well.
The new material includes a brief but informative chapter covering graphics pipeline essentials. This should make the book somewhat more accessible for beginners - though it'll still be daunting for someone without at least high school level math. The shadow volume coverage from the first book has been broken out into its own chapter and greatly expanded. The remaining two chapters are dedicated to numerical methods and curves and surfaces.
If you already own the first edition of the book, then the updates and new chapters probably aren't worth the cost. Otherwise, considering that they retail at the same price, there's no reason not to get this edition instead of the first. It's an excellent resource for anyone who wants a deep and broad knowledge of 3D math.
on September 5, 2011
I believe this book is targeted towards a lack of intro level computer graphics texts amongst colleges. I highly recommend this book because it is way cheaper than the texts I bought for my class ($140) AND it has the same contents if not more. It goes over everything I need to learn in my class and Eric is very easy to contact if you need extra explanation which is just unheard of.
on November 21, 2004
I have not yet been able to purchase the second edition of this book. However, since it is a refinement of the first edition, I feel that I am somewhat competent to review this later version of Lengyel's text on this knowledge of the fundamental chapters which are included in both editions.
Definitely, the subject of 3D Computer Graphics draws programmers and gamers inward like a bug lamp draws insects inward. The ability to express one's own inspiring representation of the world seems to attract the deepest longings of the subcreative nature of the human person. However, the coder quickly realizes that the realization of this dream is extremely difficult due to the complexities of visualization in nature. Lengyel's text helps to break through many of these complexities.
In order to make sure that the reader is "up to speed" on the essentials in mathematics which are necessary for a 3D engine, Lengyel gives a quick, but thorough, review of Vector and Matrix operations. I was indeed impressed by the amount that he condensed into the beginning of the text. While this is far from a complete treatise on Linear Algebra, this material gives the reader the basics which will be necessary for all the other chapters. This is further augmented by his treatment of 3D geometry, its representations, and calculations relevant to it.
Using this, he treats on various subjects that are extremely important for making a lean, mean, and beautiful rendering machine.
His treatment of transformations gives the reader a base in this knowledge that is independent of the rendering context. This is an excellent approach because knowledge of how something works allows for one to use it more fully. He also goes further in introducing Quaternions and deriving rotations around any arbitrary axis.
The chapter on Ray Tracing gives the necessary background for the work done in the following chapter on illumination. While the latter is often implemented by the graphics environment that the coder is using, the full knowledge of this allows for further application in subjects such as bump mapping (which he treats) as well as reflective surface simulation.
Perhaps the most interesting and important subject covered in the text, however, is the chapter on visibility determination. Since this is critical to the speed of rendering, this topic is central to game engine design. Lengyel works through the various methods for bounding box construction as well as bounding spheres, ellipsoids, and cylinders and then explains how these can be tested against the view frustrum in order to determine if an object should even be rendered. Another chapter on various techniques which can be applied to polygons outlines procedures for reducing the complexity of meshes, without compromising quality.
The remaining chapters touch on collision detection, linear and rotational physics, and fluid simulation. These topics allow for the addion of various levels of realism to be added to 3D engines and are of importance once the rendering environment has been established. Furthermore, his appendices are a nice addition for those times when our memories fail to recall various facts.
And so, I give this book my definite approval. It is hard to come by a text so compact, yet thorough, on the foundations truly needed for 3D Graphics. These mathematical foundations allow for greater things to be explored and should interest any 3D programmer as well as individuals with a general interest in mathematics, especially in the applications of linear algebra and calculus.
on September 12, 2011
From the first to the last page first, this book is very well written and full of examples which really make sense. From the beautiful math to the implementation examples: a masterpiece. If you are want to understand what is inside an 3D graphic engine (for gaming or not), this THE BOOK! Congratulations Eric Lengyel.