Computer graphics resource help!
December 13, 2008 1:49 AM   Subscribe

I am just finishing off a course in computer graphics (theory and programming, *not* graphics design). It is without a doubt the worst course with the worst prof (and textbook!) I have ever had. It completely killed the interest I had in computer graphics. Please point me to some well-written and paced resources (books/articles, not forums) that you would recommend to help me regain my interest in this fascinating field. (Not just OpenGL/DirectX primers, I am actually interested in theory as well)
posted by mebibyte to Computers & Internet (6 answers total) 5 users marked this as a favorite
 
LOL, you're me 20 years ago.

Theory might be tough now since everything is so domain-specific. Do you want to go cinema-style a la what Pixar's doing? That, I don't know much about.

Or do you want to go more technical in slinging polygons? The latest $300 nVIDIA cards can do so much amazing stuff -- as does the XBOX 360's XNA environment.

Personally, I've thought the future of CG is the art of how scenes are put together -- and more importantly how they are "demolished" in a realistic manner. That's the hard problem of CG.

I also like the whole rag-doll movement. Lot of useful R&D still to be done in creating realistic human animation.

I don't have much help for you alas, other than suggesting you poke around the nvidia developer forums and the XNA developer forums.

Next month, Microsoft also has a 2.0 coming out of its ESP professional simulation environment. I have no idea if this is total crap or what but the 2.0 SDK is going to be available for $100 apparently so I'm going to check it out then.
posted by troy at 2:14 AM on December 13, 2008


You could check out some of Jim Blinn's books.

Real Time Rendering and 3D Engine Design are good. As are Graphics Gems, Game programming Germs and GPU Gems.

You could also get all the SIGGRAPH papers year by year.
posted by sien at 2:51 AM on December 13, 2008


Yay for Graphics Gems! I was an contributor in the first edition.

Ken Perlin's Making Noise is a great outline to realistic texturing.

Texturing and Modelling is an excellent resource about procedural texturing, but man is it dense.

An Introduction to Ray Tracing is good if you want to learn that.

Foley and Van Dam is the seminal graphics text, but somewhat dry.

My blog more of an engineering resource, but I work in image processing and the blog articles often have a graphics bent, including these recent articles on using C# Lambda Expressions to do image processing.
posted by plinth at 3:36 AM on December 13, 2008


If you're interested in non-real-time rendering such as what Pixar does, it's hard to beat their own research papers. That covers many of their techniques and goes all the way back to 1982.

If you really want to get into that kind of simulation and animation, you might want a refresher on differential equations. The realistic animation of fluids, for example, is based on the Navier Stokes equations. As a practical matter, you'll also want to read up on numerical methods. The classic how-to book is Numerical Recipes, now in its third edition. Depending on how much original research you want to do, you should also look into a more theoretical numerical methods text.

If your course didn't leave you with a good grounding in the use of matrices and vectors, then Mathematics for 3D Game Programming and Computer Graphics is a good book for the more fundamental math used in graphics.

I should also mention that a whole lot of real-world computer graphics depends on computational geometry to make things run at a practical speed. You may have learned about or heard of the Binary Space Partition method, for example, or similar methods (quadtree, octree) for accelerating rendering. The naive version of many algorithms will run much too slowly for practical purposes, and you will make your life much easier by designing your programs from the beginning with these more advanced data structures in mind. I would recommend a computational geometry textbook (or taking the course, if your school offers it).

As a general piece of advice: start slowly. Build a simple raytracer or (if using a preexisting engine) simulate something simple, like an inelastic collision between two billiard balls. Once you have something that works, build on it. Graphics is such an enormous field with so many different possible approaches that one can easily get overwhelmed by the complexity of it all.

As a corollary to that, make sure your code is correct first, then optimize. Premature optimization is definitely the root of many kinds of evil in graphics: you can easily make your programs buggy, hard to understand, and almost impossible to expand upon. As a practical example of this, it's probably a good idea to write the animation or simulation parts of your code for the CPU first. Wait until you've got a solid, working version before trying the more difficult and harder to debug task of moving the calculations over to the GPU.
posted by jedicus at 5:29 AM on December 13, 2008 [1 favorite]


It's not clear to me exactly where your level is right now, but I would recommend similar things that have already been talked about. There are lots of different areas of theory that are important to computer graphics. There's light transport, computational geometry, linear algebra, and even fluid and rigid mechanics for rendering realistically moving bodies is often lumped in to computer graphics.

If you already have the basics down from something like the OpenGL red book, I would learn individual techniques and read the papers surrounding them. Things like shadow mapping, visibility culling, environment mapping, BRDFs, they will all be mentioned in good books about real time rendering techniques, but I think it's worth it to investigate and implement them separately, looking at the papers that developed them. Most graphics research papers have a lot of math and theory in them, and if you can understand those, you'll be doing quite well. To start out with, I would read the GPU Gems series. The articles in GPU gems are similar to academic papers, but they're written in a more practical tone.


For fun, to get yourself interested in the field, I would write a raytracer if it's not part of your class. Writing a raytracer is not very hard and it can introduce you to a lot of basic things like ray-object intersections and the phong shading equation.
posted by demiurge at 10:07 AM on December 13, 2008


It's a little hard to give advice about things if you don't have any specific complaints about the course. I remember two professors teaching Computer Graphics at my University: one class was based on DirectX and not very math heavy, the other was OpenGL on Linux based and hit the math and theory every day. Both classes had their critics, complaining about the hard math in one, or about the lack of theory in the other. Probably a lot more of the former; a lot of students get into CS to program games and are turned off by the amount of math and work it takes.

As far as self paced stuff, NeHe would be the obvious choice. Ray tracers make a good followup, and the output is usually fairly motivating. Beyond that, SIGGRAPH papers and videos make spectacular reading that is sometimes featured in blue. Don't be afraid if you don't understand the topic or the math, it's good to see stuff above your level. Just being able to appreciate the results is often a good motivator, and is easily done in computer graphics!
posted by pwnguin at 1:36 PM on December 13, 2008


« Older House vs Scrubs - The "real" diagnosis   |   "In the burning heart, just about to burst..." Newer »
This thread is closed to new comments.