Graphics Courses at the University of Michigan, Ann Arbor: |
|
|
| Voted Best Ray Traced Image W11 These nine colored, reflective spheres were generated with a distributed ray tracing program. The program recursively calculates the color of each pixel with a maximum depth of four, producing the reflective effects on the spheres and floor. There is an area light above the scene resulting in the soft shadows below each sphere. The program used also has a virtual lens that was tweaked so that only the center sphere is sharp and in focus and the rest are blurry and out of focus. |
|
| I generated this animation of Newton's cradle with 50 separately raytraced scenes. I generated the scene files with a python script that simulated Newton's cradle, moved the camera, and controlled the moving "Go Blue" text in the background. Each frame has (24)^2 rays per pixel to generate a variety of effects, including area lights with soft shadows and motion blur. Using this many rays also helped smooth the image so successive frames looked better in sequence (early renderings had distracting artifacts where soft shadows appeared to flicker). It would have been impossible to generate this animation in the time allotted without some optimizations. Most importantly, I parallelized the raytracer so I could take advantage of my multiple processor cores. This made experimenting with different scenes much faster and also helped speed up the final render. The slowest part of rendering was almost certainly drawing the cradle, which was the only mesh in the scene. Adding a bounding sphere test and reducing the poly count dramatically improved rendering speed. This final animation was generated overnight (approx 7 hours) with 24 cores. |
|
| Voted Best Ray Traced Image S10 The scene I created is called Billiard Balls with Area Lighting. I named it this because it is just that- an image with some striped billiard balls with glowing rings. The rings actually give off light and implement area lighting so the light from the balls is softer. I did this by creating a billiard ball class that represented an object in the scene with two area lights located on each of the stripes. I was able to create the stripes on a sphere by calculating the angle between the normal at the point of intersection and a hard coded orientation normal for the given billiard ball. If this calculated angle was between 37 and 62 degrees, then I would return the material with the billiard ball's color and an emmissive property that would cause the ring to become almost white, yet retain its material color. The balls are perfectly reflective while the ground is 25% reflective. Reflectivity is also a material property in my ray tracer. There is also a green point-light above the entire scene (not attenuated, the light from the spheres however is attenuated) to shed a little light on the originally dark scene. You will notice lines on the ground- this is due to improper placement of area lighting sample locations, which I did not get a chance to fix before rendering this image; it does, however, add a nice artistic touch to the image. |
|
| Voted Best Ray Traced Image W10 The scene in this image was generated with a simple program using basic trigonometry. There is an area light above and to the right of the camera which causes the soft shadows on the left wall. The front wall, ceiling, and back wall are perfectly reflective, producing the appearance of multiple, long DNA chains. The ray tracing recursion was limited to a depth of 30 bounces. The scene was rendered with 64 jittered rays per pixel that were averaged for anti-aliasing. This image took approximately 8 hours to render on an Intel Core2 processor. |
|
3D Percolation Cluster Accessibility A three-dimensional percolation cluster with sites colored according to their accessibility to diffusing random walkers. CSE grad David Adams is now a PhD candidate in Physics at U-M, and has been using graphics for visualization of his research since taking Prof. Sugih Jamin's EECS 487 Interactive Computer Graphics course. The American Physical Society recently highlighted this image from David in their image gallery. | |
| Voted Best GPU Shader Image W10 640x480 11MB mov This GLSL shader has several components. First, there is the tan exterior color, which is diffuse-shaded and lit by a point light. Second, there is the interior structure, which starts with the pink-colored undertone. When each fragment is processed, the shader compares the surface normal at that fragment to one of four hard-coded unit vectors. If the angle between the normal and the unit vector is within one of several 1-degree bands, it is colored either dark red or blue, depending on which normal it is compared to. Because the model is curved, the "blood vessels" form irregular patterns as they cross the surface of the model. Lastly, the original diffuse color is blended with the underlying pattern using the GLSL mix() command, where the interpolation factor is the angle between the surface normal and a vector pointing at the camera. This can be modified in the shader to reveal more or less of the "interior", but in the video it is (arbitrarily) set to π/6. |