I had been considering this 'problem' as well, and I fully agree that it
needs to be addressed. I think of it as a problem because things like
virtual tours are going to be somewhat disappointing without floors or
walls. I was picturing myself giving a virtual tour to any random
administrator and trying to explain why the program let me "walk" through a
flight of stairs, forcing me to levitate up to the next floor.
> 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."
Interesting approach. However, I have a few doubts. How do we keep the
avatar on the floor? Will a floor node implies keeping the POV at a
certain constant height above the floor, or do we implement "gravity?"
Will the floor node's "neighbor pointers" allow the avatar to walk into
empty space--consider a catwalk without handrails--or must the pointers
always connect to something 'tangible?' If so, must the neighbor be a
'physical' neighbor, or can I link a floor node to another which is
separated from the first, acheiving a sort of teleportation? If not, will
the avatar fall to the floor below (assuming one exists)? We're back to
gravity again, which may be too expensive to implement.
Additionally, you suggest this approach because it allows for a simple
2D test. Does that mean that a floor node can only be contained within a
flat plane or part of an object which is represented by a flat plane (like
the facet of a dodecahedron)? What if I want the ability to walk around a
sphere? Given the proposal of including an "up vector" in a floor node,
this might be difficult to implement. How about a Moebius floor--how is up
resolved? What happens if a flat plane is given an up vector which is at a
45-degree angle to the plane? Will the avatar slide along the floor? What
if the up vector in fact points down?
I have had some thoughts about these sorts of things, but I'm afraid my
ideas are all far too computationally expensive. If this issue starts to
become a hot one, I'll put together a Web page and post the URL.
--- Unstable condition--a symptom of life |Eric A. Meyer (eam3@po.CWRU.edu) In mental and environmental change |Library Information Technologies Atmospheric disturbance--the feverish flux| Software Support Technician Of human interface and interchange- (N.P.)|"What do you think, sirs?" -Joel