From: harrison@beta.lanl.gov (David A. Harrison)
Newsgroups: sci.virtual-worlds
Subject: SCI: Graphical Hierarchies in a Distributed Cyberspace
Date: 27 Jul 92 16:34:35 GMT
Organization: Los Alamos National Laboratory
Originator: hlab@milton.u.washington.edu



    I've been reading the past couple of hundred messages--some more
carefully than others-- and I thought that I might interject a little
idea that I've been pondering about how to reduce traffic on a network
running a distributed virtual reality.  Perhaps similar ideas have
already been presented, but I didn't see them so here goes...

    I see two general types of approaches to distribution.  Both
approachs involve keeping viewed objects and their viewers in close
proximity on the network in order to reduce the number of intermediate
computers and propagation delays.  Both alternatives also require
moving objects from computer to computer in real time to keep the
objects close in virtual reality close to each other in real reality.
These two approaches are "moving the virtual reality around the user"
and "moving the user through the virtual reality."
    
    The first approach means that the user's representation will
always reside on the login computer or somewhere near the login
computer while all surroundings are moved across the net around the
user.  This approach reduces network traffic between the local
rendering program and objects in the virtual reality but it also
introduces a host of other problems.
    
    In a complicated virtual reality walking between rooms (areas,
etc.) may require moving thousands of objects between computers in
order to keep visible objects near the users.  This would cause a
great deal of traffic and slow down the virtual reality every time a
person moves between topologies.
    
     Secondly, "moving the virtual reality around the user" introduces
problems when two people are in the same portion of the virtual world
but are separated by hundreds or thousands of mile in the real world.
The network will either distribute objects between the two users or it
will have to keep duplicates on each end.  Distributing objects
between the two users introduce problems of causality due to
propagation delays unless every message is time stamped and you wait
to allow for propagation delays and semi-random delay times of
retransmitted at intermediate computers.  This approach would slow
down the virtual reality.  Keeping duplicates on the computers or LANs
of each user in the same area would introduce a large amount of
traffic since every object would have to remain perfectly updated with
all of its pairs not to mention that it has the same problems with
causality as distributing objects between the two locations unless
time stamps are used.

    "Moving the user through the virtual reality" requires only moving
the user's object from computer to computer.  Of course this increases
network traffic between your local hardware/software and your
representation in the virtual world.  Assuming that your local
software is rendering software and your local hardware is your virtual
reality i/o device(s), I have thought of approachs that minimize this
traffic.

    If graphic representations of objects and descriptions of how the
object's components interact are kept in a database on every LAN for
every object that can possibly be encountered then almost all traffic
between LANs will be high-level movement and orientation information.
Unfortunately keeping  descriptions of every possible object on
every LAN is not feasible.  This would never allow for introduction of
new classes of objects, and would also waste an incredible amount of
storage space.  I suggest an alternative that is similar to storing
all objects everywhere but without the pains.

    I suggest that a set of basic building block classes of objects be
placed in databases on each LAN when the LAN is initially connected
with the virtual world.  New objects will be introduced as subclasses
of these basic objects.  The subclasses will contain similar but more
sophisticated graphical representations that its superclass.  As
people encounter new objects the classes for these objects will be
downloaded to your LAN, and if there isn't room then older, unused
classes can be forgotten.

    This provides several benefits.  Objects that are viewed from a
distance can be represented using generalized classes high up in the
graphical hierarchy.  As the user nears the object, more sophisticated
classes can be used to represent the object.  This would mean that for
almost all objects only the high levels in the class hierarchy will
have to reside on the local computer.

    Furthermore this adds the benefit of allowing the local computer
to use less sophisticated representations for visible objects when the
CPU becomes overloaed and animation begins to slow down.  In the worst
case really low complexity representations of every object could be
used with an exception for the object or objects presently in use by
the user.

    Network traffic can be further reduced if downloads of new classes
are only requested during a slow-traffic time or when the user focuses
his attention on the object for a predetermined amount of time.

    The graphical hierarchy provides means for distribution of
execution, regimenting time, reducing network traffic, and limiting
the impact on storage space required for hundreds of thousands of
different classes of objects.  With addition of multiple inheritance
classes can inherit graphics from one class while inheriting
functionality from another.  Perhaps this is a viable starting point.

David Harrison
Computer Controls Section
Explosives Hydrodynamics
Los Alamos National Laboratory
Newsgroups: sci.virtual-worlds