Shadow Volumes (was Re: Scenes with lots of simple objects)

Linas Vepstas ([email protected])
Wed, 8 Mar 1995 19:27:21 -0600


Hi,

> external cubes. Thus the 'hint' that all objects in

Bounding boxes are a traditional "hint" that are extremely useful
in culling. I forget if Inventor-vrml allows these to be
explicitly declared or not.

There is in fact another concept which is usful just as much,
if not more so, for vrml-ish, DOOM-ish, surface-rendering-ish
culling of large collections of objects. This is the idea of
an "anti-bounding-box" or "shadow volume".

The basic idea is that with each (major) surface (for which you
bother to do this), you specify a pair (or multiple pairs) of
volumes. One is a "presence" volume, the other a (semi-infinite)
"shadow" volume. Basically, If the eye/camera is in the "presence"
volume, you know that anything in the "shadow" volume is not
visible.

The real strength of this concept shows up when it is placed
formally into the scene description language (e.g. into vrml).
This allows the person who built the scene to precompute these
volumes, and to pass them to the renderer as "hints".

OK, I've oversimplified a bit. The thing that's pre-computed
is a heirarchical tree of containers ("separator nodes") that
point at the objects that are visible from that "presence"
volume. Basically, you pre-cull & pre-prune your graphics
heirarchy, and offer up the various different pre-pruned
versions to your viewer, saying "if you are standing HERE,
THIS is all that you will see."

I beleive that (and I might be proven wrong) that this doesn't
work when the objects stuffed into a separator node affect
each-other's attributes in an order-dependent way. This is
one reason I screamed last fall, when it became clear that the
Inventor-VRML proposal had a strong order-dependence in it.

(Clearly, the act of pre-pruning may cause you to accidentally
prune away some item/attribute that affects how a visible part
of the scene looks like. I don't know how to solve that
problem.)

--linas

Sincerely,
Linas Vepstas

^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^
<a href="http://w3.austin.ibm.com/~linas">
Linas Vepstas Graphics Architecture
IBM PPS Zip 9260 Tie Line: 678-1116
11400 Burnet Road External Phone: 1-(512)-838-1116
Austin TX 78756-9260 mail: [email protected] </a>
^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^