# Floors as context and frames of reference

Jed Lengyel (jed@graphics.cornell.edu)
Fri, 4 Nov 1994 18:09:13 -0500

I'm pleased with the VRML draft at http://www.eit.com/vrml/vrmlspec.html
by Gavin Bell, Anthony Parisi, and Mark Pesce. The draft covers
the basic issues (making scene graphs with geometry and lighting
and attributes) in the style of Inventor, and adds WWWAnchor and
WWWInline for web references. This is all good.

Here's one thing I think we should add: floors.

It is natural to navigate through a space at a constant height above
the ground. We've been doing this all our lives. DOOM, despite the
ultra-violence and the restricted viewing angles, gives a good
feeling of "being there." I think this has a lot to do with the
natural movement. You approach stairs, and you climb them. You try
to walk through a wall, and you can't.

Contrast this with any walk-through program I've ever seen.... You
approach stairs, and you wade through them and the top stair hits
you in the face. You try to walk through a wall, and it vanishes.

So, how do you add the floor information to a scene database in a
general way? For the "current floor" you need something to stand on
that is locally 2D (a polygon for example), and an up vector. For
moving, you need edge pointers to the accessible neighboring floors.
That's it. And it's quite general. (I can come up with precise
node definitions, if people are interested. The main difficulty I
see is with cycles.)

Why add the floor information to the scene graph instead of computing
intersections on the fly? General collision detection is difficult,
but the special case of tracking movement from floor section to floor
section and checking the local walls is easy. It's a 2D test. The
floor graph also express the author's intent for which parts of the
scene are connected and "made for walking."

The floor information would be contextual hints for adjusting the
height and angle of the viewer based on local 2D movements and for
constraining the movement to avoid walls (edges with no neighboring
floors.) The browser could certainly ignore these hints and allow a
person to go anywhere at any crazy angle and to go through walls.

It would be quite natural to walk on a node to activate it --- to
make elevators, teleportors, etc. To do this, a floor node could
be contained inside a WWWAnchor node.

Jed Lengyel 607 255 6704
580 ETC Program of Computer Graphics
Cornell University, Ithaca, NY 14853