Myriad

Myriad is a raytracer for rendering objects that are infinite in principle. Usually, "infinite" objects such as trees are rendered by using a program to create a large scene file which specifies each individual object in the scene explicitly. This method is easy to implement, but is not practical for scenes that contain billions of objects.

Myriad uses an abstract definition of a complex object, and generates the atomic objects in the scene only as needed. (By atomic objects, I mean spheres, polygons, or other objects that are not composed of smaller objects, but which can be put together to form complex objects.) Myriad can also delete objects when they are not needed, to free memory for other objects. This allows Myriad to render scenes that contain practically unlimited numbers of objects.

This page is just a brief description of Myriad, which has only been implemented in a fairly simple form so far. Here, I give images of the Menger sponge rendered by Myriad. (The Menger sponge is also frequently referred to as the Sierpinski sponge, but I have read that this is an incorrect term.)

Menger sponge, depth 1 Here is a depth 1 Menger sponge. Instead of forming the object from cubes, the scene uses spheres as the atomic objects. At higher depths, it makes little practical difference. Anyway, an "actual" Menger sponge does not contain any cubes at all, so there is nothing particularly inappropriate about using spheres instead.

The object uses pseudocolor based on the surface normal instead of using a traditional shading scheme. The motivation for this is that, in this case, a traditional shading model gives images that are difficult to interpret visually.

Menger sponge, depth 3 A depth 3 sponge. Looking at the larger image (click the thumbnail), it is still clear that the object is composed of spheres. Theoretically, the scene is composed of 8000 spheres, but Myriad does not generate all of them. It is at higher depths that this really starts to pay off.

Menger sponge, depth 5 A depth 5 sponge. Looking at the larger image, it is impossible to tell that the object is composed of spheres. Also at this depth, the detail of the object begins to exceed the detail of the image (even when uncompressed--the JPEG format is particularly unforgiving to these objects). Myriad must jitter the pixels slightly to prevent interference patterns from appearing in the image. The rendering took a few minutes on a 400MHz Pentium II, and never consumed more than 12MB of memory. (3200000 spheres)

Menger sponge, depth 21 A depth 21 sponge. At depths deeper than 5 (at the resolution of these images), the images begin to look grainy and eventually become incomprehensible. This is not because the numerical accuracy of the data types involved is exceeded; instead, it is simply because rays tend to penetrate deeper into the object before hitting anything. (This makes more sense when you consider that any face of the sponge has zero area.) So, the coloring of the pixels essentially becomes a question of probability. The bias in the coloring in the corners results from the different directions of the rays being traced; if the scene had been rendered using an orthographic projection, the coloring of the sponge would be more uniform. Rendering took several minutes. (2097152000000000000000000000 spheres)

If you are interested in Myriad, feel free to email me at .


Home


Last modified 24 May 2000.