I need to beef up on the mathematics needed for 3D graphics. I have looked at a lot of books that claim to cover this topic and it seems most either glance over the math or assume too much leaving holes in the understanding if one lacks the background (that includes me) to fill in the blanks. I suppose I can find several Mathematics textbooks on topics such as Trig, Geometry, and linear algebra and piece things together. I was hoping to find a text that wouldn’t assume too much and would teach a solid understanding of the Algebraic Geometry applied specifically to 3D graphics. Any and all suggestions are welcome.
Thanks a bunch.
It all depends on what you like and how you learn. Most math books deal with only the math with lots of proofs and not so many real world examples. Computer graphics books on the other hand will sometimes go over the math but will be more focused on the application to graphics. With that said, below is what I think about different books and such.
There was a book “Essential Mathematics …” that looked interesting, however, I think that it assumed some math background. “Computer Graphics with Open GL” by Hearn and Baker is also pretty good with an appendix dedicated to the math and the bulk of the book applying it to graphics. As far as math books go, any calculus book will do for that stuff (including a lot of the geometry stuff) and “Linear Algebra” by Lay is very good for covering linear algebra covering the theory and applications, it’s a really great book.
I would have to say that I would probably learn best from a book written more as a math text book. I donâ€™t think that I so much need code examples as simple ties to their application in Computer Graphics. For example a section on the equation and theory behind finding points on a line (ray) and a brief reference to the use of this in determining the intersection of a plane (or polygon, etc). I have read reviews on many books claiming to be math primers for computer graphics and also thumbed through a bunch and havenâ€™t found one that works. I will have to thumb through the “Computer Graphics with Open GL” book and check out the math appendix. I guess ideally I would love to find a math book explaining the theory and formulas with an appendix linking the topics to computer graphics. I will definitely check out the â€œLinear Algebraâ€ book by Lay, that sounds great thanks.
As crazy as it might sound, I would suggest getting a book about software rendering. Also, I would suggest implementing a software renderer if you get the time. I see too many people that don’t truely understand the math and how it’s used, as well as too many people that don’t understand how video cards work… and this is even in professional settings. I highly suggest writing your own software renderer. The main features I’d recommend implementing are vertex lighting, perspective correct texture mapping, mipmapping, bilinear and trilinear filtering, texture cache and vertex cache. That should be enough for you to understand the entire rendering pipeline. More importantly, it will help you understand all of the math that is going to be coming back due to more complex shaders. That’s my two cents.
Jim Blinn’s books are really amazing, he is both mathematically precise and practical :
“A trip down the graphics pipeline”
“Notation, Notation, Notation”
Thanks Kevin! Yeah, I actually had the wild idea to write a simple ray tracer. But while I found enough examples showing how to implement one, I was getting lost in the why of some of the algorithms. I could be wrong but I am assuming you are talking about a â€œsoftwareâ€ renderer as in a software rasterizer and not a software ray tracer. Either way I would love to do both. I do learn best by doing and often times that means coding what you learn in theory. Regardless of which type of renderer, do you have any suggestions on books or other resources which you think would be a good source to learn some of the math theory before I attempt to implement a renderer?
but I am assuming you are talking about a â€œsoftwareâ€ renderer as in a software rasterizer and not a software ray tracer.
That is correct.
do you have any suggestions on books or other resources which you think would be a good source to learn some of the math theory before I attempt to implement a renderer?
Definately! I would recommend the mother of all graphics books:
“Computer Graphics: Principles and Practice”
It talks about everything from rasterization to shadow buffers.
Also, I agree very much with ZbuffeR regarding Jim Blinn’s books. He is “father graphics” IMO. He invented a ton of techniques still in use today, from a fast Phong lighting approximation (appropriately called the Blinn specular model) to various forms of bump mapping. He’s also an excellent writer and is good at explaining things visually (how the numbers relate to real world measurements).
Hope that helps!