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.)
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.
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.
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)
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
.
Last modified 24 May 2000.