LANG: Fractals in VRML 1.0

MR LEEMON C BAIRD III ([email protected])
Fri, 23 Jun 1995 13:26:55 EDT


Very tiny VRML 1.0 files can define fractal trees, mountains, clouds,
and textures. The VRML 1.0 spec (with LevelOfDetail added) supports
3D fractals, and the current SGI version of WebSpace can display them.
A nice fractal tree can be seen by downloading two files into the
same directory, and viewing the first on> with the current WebSpace
beta on an SGI machine:

http://kirk.usafa.af.mil/~baird/ftree.wrl
http://kirk.usafa.af.mil/~baird/tree.wrl

Unfortunately, my system administrator still hasn't set up the server
to give the right MIME types, so you'll have to download the files
before you can view them. They're very small. As far as I know,
these are the first VRML fractals on the Web. They work by using
recursive WWWINLINEs, with the recursion terminated by LevelOfDetail.
Fractals are incredible bandwidth savers, because a small file can
create an infinite number of polygons, with more appearing on the
screen as you zoom in closer. Ther> are several small changes we
could make to the spec and fractals:

Currently, fractal shapes are possible, but not fractal colors or
pictures. This is because geometric transforms are cumulative, but
color changes aren't. I would propose taking the fields of the
MATERIAL node, and adding them code:
Transform {
emissiveColor .5 1 2
}
would make all future nodes half as red and would have been without the transform. This would allow fractal
colors, even fractal-compri> ed photographs, to b> applied to objects.

Currently, fractal shapes must use recursive WWWINLINEs. It would be
better to allow recursive DEF/USE statements instead. The spec
already allows this (it states that the name of a node is visible
within the node definition), but WebSpace does not. Browsers could
allow recursive DEF/USE statements inside a WWWINLINEd object by
using the bounding box from the WWWINLINE statement, rather than
trying to recalculate the bounding box through a depth-first search
of the scene graph. Similarly, a cyclic scene graph could be
converted into a cyclic BSP graph, rather than a BSP tree, if that
technique is used for rendering.

Currently, a fractal requires at least on> WWWINLINE, even if
recursive DEF/USE statements are used. That's because only the
WWWINLINE node allows you to specify the bounding box. This could be
fixed by adding the bounding box field nodes.

Currently, WebSpace only allows fractals using LevelOfDetail, not LOD.
This is because, if an WWWINLINEd or USED object is transformed to
be half as big, LevelOfDetail requires you to be twice as close
before the resolution switches. LOD in WebSpace doesn't have that
property; it switches at the same distance even if the object is
shrunk. I'm not sure whether the current spec means for this to
happen or not. It would be good to change the spec to be clear, that
the "distance" from the eye to the transformed point should itself be
transformed. That would be an improvement to LOD anyway, even aside
from the fact that it would allow LOD to be used for fractals instead
of LevelOfDetail.

These two spec changes and one browser optimization will allow single-
file fractal shapes and colors. It appears that both the changes to
the code and the spec are minor enough that they could be included in
VRML 1.1. We could certainly use of the bandwidth savings it would
give us.

I hope to soon get the MIME types on my server fixed, and set up a
page giving a wide range of VRML fractals. I'll include any VRML
fractals e-mailed to me in the collection, along with acknowledgement
of the author.

Leemon Baird
[email protected] (work)
[email protected] (home)
http://kirk.usafa.af.mil/~baird