The programming project for CS 348B: Image Synthesis Techniques is to write a distribution ray tracer. Here are some of the images that we created using the ray tracer we developed for this class last winter. Clicking on an image will bring up an 800x800 24 bit JPEG version of it.
Modeled in SoftImage, this image primarily illustrates the use of
texture mapping: The red Lipton label and the "REFRIGERATE AFTER OPENING" label modify the color of the surface they are mapped on. They are both scanned bitmap textures. The background tile pattern is also a color texture, but is procedurally generated.
The Lipton engraving and the scratches on the glass, as well as the unevenness of the glass thickness are all simulated using overlapped bump maps. Part of the seam of the bottle, modeled via the same bump map, is visible to the right of the engraving. The uneven glass thickness is achieved with a procedurally generated bump map, while the other textures are scanned.
The Lipton engraving appears on both sides of the bottle (see the reversed "p" under the front-facing "t"). Also, the red Lipton label is see-through. Hence the back side of the label, seen through the glass, faintly transmits the pink background and black letters of the painted side. This effect was actually achieved by placing two labels, one inside, and one outside the bottle; the internal one is a washed out, and reversed version of the outer one.
This is a volume rendering of a dandelion seed. The very simple
geometry of the scene was put together in Composer. The background is
a mere flat surface whose color is modulated by a very low frequency
marble texture, giving it the appearance of a clouded sky. The lake
floor is again a flat surface bump mapped with 15 sine waves of
varying frequencies, all emanating under the seed. The seed itself is
a mixture of Ken Perlin's fur and noisy sphere hypertextures.
This is an image almost identical to seed.jpg. The only difference is
that the sky is now slightly emissive with an orange color, giving the
appearance of sunset.
This is the most complex scene we rendered. The space shuttle itself
has a moderately complex geometry (about 5000 polygons). However, the
high degree of complexity was due to the very high amount of
volume-rendering: all the clouds in this image (all of the background,
as well as the thin cloud in front of the camera, on the foreground)
are volume rendered. The front cloud is very faint to affect the shading of the shuttle, but it has a dramatic effect on the appearance of the sky in the background.
This image is identical to the previous shuttle. The only difference is
the simulation of moonlight which was achieved by a dark blue ambient
light, and a black background.
Modeled on EZmodeler and Composer, with the addition of a pure quadric
modeled by hand (the bird bath stand), this image illustrates the use
of procedural 3-D textures and secondary ray tracing: A procedural 3-D marble texture is applied on the bird bath in such a way that when the stand of the bird bath joins the base, the marble lines merge smoothly.
A procedural high frequency bump map is applied on the ground to simulate short grass.
A procedural bump map is applied on the surface of the water to simulate the effect of waves. The reflection and transmission directions are both modulated by the bump map, and hence, for example, the reflection of the bird bath itself on the surface is not a perfectly smooth conic section.
The reflection of the cloudy sky and the bird bath itself on the base and the stand illustrate the casting of secondary rays.
The procedural bump maps used for the grass and the water each have a time-varying parameter which allowed us to move the waves and the grass, and thus create an animation sequence ("bowl").
This image was modeled on EZmodeler and Composer. There are several
features that make it interesting:The paper has both a scanned color texture and a procedural bump map applied on it. The former is responsible for the writing, while the latter gives the appearance of uneven paper thickness.
The lens holder has a slightly perturbed geometry giving it the appearance of a worn out magnifying glass. In particular, instead of a smooth top surface, you will notice on the top left that the specular reflection is ragged; a regular pattern of variation was chosen, similar to the BRDF variation that you would see on real machined metal.
The lens itself is a highly compressed sphere with an unrealistically high index of refraction. The effect of this very high index is to produce two concentric bright rings in the center of the lens giving the impression of caustics. The magnification effected by the lens is simply a result of secondary ray tracing (not a texture map).
The textures used for the paper have a time-varying parameter which allowed us to create the animation sequence "lens".
The "S" is the middle stands for Stanford, just in case you didn't know!
This is a volume rendering of an asteroid. The simple geometry (a
single sphere) was modeled in Composer. The volume hypertexture used
was a modified version of Ken Perlin's noisy sphere. The corona effect
was achieved by the noisy sphere hypertexture. In order to get the
core of the asteroid, we abruptly stopped ray tracing as soon as a
volume density of 0.85 was reached. If we were to continue ray tracing
through the volume, you would just see a very bright red instead of a
dark red/black center. The high frequency light/dark variations on the
surface of the asteroid were achieved by randomly perturbing the
surface of the core, effectively allowing some rays to trace deeper
through the volume than others . These variations are typical of
asteroid surfaces whose various surface minerals glow unevenly as they
burn.
This image is admittedly a very dry one, spiced up only by its title
("The Intestine"). Actually, it is a cave. It was modeled using a
program we wrote: the shape of the cave was defined procedurally by a
spline, and our modeling program simply fitted a (tessellated)
cylinder around the spline. The tessellation was relatively coarse
(the full 360 degrees were split into 15 segments), but the procedural
bump map we applied on the cave walls covered up very neatly the
discontinuities. The continuous 3-D vein texture (a procedural marble
texture in essence), also helped. In order to get an idea of the
magnitude of the geometry discontinuities, look at the right turn at
the far end of the cave.The single light source is a faint point light at the location of the camera. Notice how the intensity fades away slowly as one moves further away from the camera position.
This image is one of 480 used to produce the animation whose header is stored in "coaster": it is a roller coaster ride through the full cave, only a small segment of which you can see in this static image.
This is a scene combining most of the capabilities of our ray
tracer. It was modeled on EZmodeler and Composer: The vase has a procedural marble texture modulating its color. The vase is also pretty reflective, and thus several reflections appear on it.
The mug's color is defined by a scanned bitmap warped onto a cylinder.
The picture hanging on the wall (only its reflection on the right-hand-side mirror is visible) is a simple scanned texture.
The table top has a procedural wood texture modulating its color. This texture was our own creation, and besides the concentric circles of wood, it contains the dark striations of some types of wood. The procedural aspect of the texture is responsible for realistically continuing the wood grain when the edges of the table are crossed.
The walls of the room are procedurally bump mapped to give the appearance of uneven paint coating. See the bottom left corner, in particular.
The floor is tiled with a procedural tile texture.
The table top is sitting on a hand-modeled pure (non-tessellated) quadric (a cylinder).
The steam rising from the mug is a volume-rendered hypertexture of our own design (based on the marble texture).
The mirror is perfectly reflective at parts, but some areas (defined by a texture) are non-reflective. giving the appearance of scotch-tape glued on the mirror.
Four spotlights at the room corners and a point light on the ceiling, directly above the table, are illuminating the scene. The spotlights are responsible for the interesting shadows cast around the room.