This picture is a scene of undergrad graphics lab. All the puppets in the scene come from the assignment 3 of CS488 Spring 2000.
We decided to do something interesting for our TA this term. We decided to render the undergrad graphics lab scene with all the interesting puppets we found in the assignment 3. Since assignment 4 is ray tracing, we hoped to inspire more interesting pictures from the students.
We took the students' tcl scripts from Assignment 3 and made small C call back interface changes. We started rendering each puppet individually. We ran into all kinds of interesting problems.
Some of them didn't specify surface property for each body parts. That's because OpenGL will automatically use the previous surface property for current one, while ray tracer will not.
Some of them had very nice procedure to construct their puppets and it was very easy to adapt their tcl scripts to our ray tracer. Some of them didn't, but they had set short names for their really long hierarchical node names, which was still good. Those with none of the above really gave us a headache, when we had to change every node name to suit our ray tracer. (Well, vi really helped a lot.)
The biggest problem was scaling. Most people didn't carry down their scaling for primitives, but a few did. We had to add a flag to the ray tracer and used it properly for each puppet.
To position a puppet in the right position is a pain. Imagine adjusting one parameter and then waiting several minutes to see the result. If it is not good, we have to do it over and over again. So we used OpenGL to render the whole scene first to test the position of puppets. Some of the puppets have extra primitives and lines, so we texture mapped them as posters.
Finally, the whole scene took 19:07:47 hours to render. We rerendered the scene using hierarchical bounding spheres, and it only took 1:19:04 hours. The scene depicted here has reflections on the ceiling and walls, and it took 1:49:51 hour to render.
Acknowledgements:
graphics lab scene from Carsten Whimster
Muscleman by Chris Fogel Eeyore by Catherine M Phillips Goro by Christopher P. Murphy Lobster by Chris AtLee Gundam by Terence Wong Sumo wrestler by Douglas P. Y. Ng |
Mickey mouse by Dan Truong Bender by Francis Chang Plant by George Elkoura Astroboy by Gousuke Sakamoto Skunk by Justina C.Y. Ho Batman by James Brydon |
Superman by Julia Taylor-Hell Genma Saotome by Sammy Huen Panda by Tim Lofft Hand by Tom K.H. Cheng Pirate by Travis Provick |
by Selina Siu and Teresa Ge