From: rex@sics.se (Rolf Staflin)
Newsgroups: sci.virtual-worlds
Subject: WHO: Swedish Inst. of Computer Science, Update - 8 Sept 1992
Date: 8 Sep 92 14:18:41 GMT
Article-I.D.: u.1992Sep9.053750.26821
Organization: University of Washington
Originator: hlab@milton.u.washington.edu



Hi!

Some time ago, Bob Jacobson asked me for information about the current
activities of SICS in the VW area. For those of you who've never heard
of us, "SICS" is the Swedish Institute of Computer Science and
conducts research in collaboration with universities and industry.
Among other things, we're building a VR system - DIVE (for
"Distributed Interactive Virtual Environment", though I personally
prefer "DIVE Into a Virtual Environment"). It is a part of the
"MultiG" project, a Swedish effort to develop high speed computer
networks and advanced distributed multimedia applications and
platforms. DIVE has previously been called "The TelePresence System".

About DIVE
----------

DIVE is a Unix-based heterogeneous distributed system that is easily
extended to new hardware platforms and graphics libraries (we are
currently running it on Sun SPARCs, IBM RS/6000s and SGI Indigos).
Since DIVE is fully distributed (using the ISIS distributed
programming tool kit from Cornell University), many processes on
different nodes in the network can work in the same world. The nodes
are divided into visualization nodes (which handle user interfaces)
and computational nodes (where AI processes run -- An AI is a process
that handles objects in the world but does not have a renderer, e.g. a
process that turns the hands of a clock, implements gravity or checks
for collisions).  We distribute the system, and new version (2.0) will
be released before the end of the year.

Software
--------

The new version has a much more detailed object model than version 1,
with structured object hierarchies and cumulative transformation
matrices, making it easy to move objects relative to themselves, their
super objects, the global origin or even arbitrary objects in the
world. Objects can now have a "behavior"--basically you can specify a
DFA (Deterministic Finite Automaton) for each object, with arcs
between states performing actions such as moving the object, making it
invisible or sending signals to other objects. State transitions are
triggered by incoming signals to the object. The interface to "AI"
applications (non-rendering processes operating in a world, not
Artificial Intelligence applications) has been structured and
expanded, making it easier to create interesting applications. The
"visor" concept has been incorporated in the system so that an AI can
attach objects to an invisible visor hanging in front of the user's
eyes, making it easy to put interface controls within comfortable
reach of the user.

The overall implementation strategy is pretty much the same--we still
have separate worlds with opaque gateways between them to keep the
amount of information manageable, and we still use ISIS process groups
for interprocess communication.

Most processes have their own copy of the world database, just as in
version 1, but we have added a new kind of process -- `lightweight'
AI's that do not possess any world `state'. These processes do not
participate in state transfers and multicast communication, so they do
not cause any system overhead. On the other hand, they can not perform
any computation dependent on the state of the database, and their
applicability is therefore somewhat limited.

The new version still supports only CRT output, with a mouse and a
Bird as input devices. It's fairly easy to extend it to other I/O
units, though.  The renderer is a separate application, and input
devices are handled by "vehicles"--software modules that map from
input devices to actions in the DIVE worlds.

Software work
-------------

While DIVE v.2 is being completed, three of our team are creating "AI"
applications to be used in the system.  Magnus Andersson is working in
collaboration with the Swedish Institute for the Handicapped on a
project that involves controlling a real-world robot from within the
VR. You can, for example, order the virtual robot to move an object,
and the real world robot moves the corresponding object in the same
way. With a visor control, you can switch viewpoints so that you look
out from the virtual robot's hand and perform precision operations.

Olov Stahl (there's a circle over the "a" in that word making the
Swedish letter that's pronounced "awe") is working on several projects
for virtual conferences. He is updating and extending his distributed
whiteboard (which has become SICS's contribution to the field of VR
documents) to work in the new version of DIVE. You can have several
copies of a whiteboard in the world, and anything you draw on one
shows up on all the others.  Olov is also working with the "aura"
concept. An aura is basically an invisible volume round each user's
graphical body, and can be used to determine when users have come
close to each other (the auras collide).  When this happens, you can,
for example, establish a speech connection between these users.

I'm working on a 3-D customizable graph editor (that's graph as in
"nodes and arcs", not as in modelling). With this, you are able to
"draw" and edit graphs in 3-D space, hopefully making it easier to
grasp the relationships in large node structures. This is a quite new,
but very interesting field of research (What's a good graph layout
strategy when the user can move around in the graph? The concept of
"planar" graphs is pretty meaningless in 3-space, but what other
concepts will arise?). Several users can edit a graph simultaneously,
using visor control panels.

Hardware
--------

IMHO, the most interesting hardware project here is the HMD project.
Jan Bogdanski is developing a color head mounted display using 1"
CRT's and Liquid Crystal Shutter displays from Tektronix. Jan now has
a working display system (the quality of those LCS displays is
amazing) and is working on turning it into a prototype helmet.

Stephen Pope and Lennart Fahlen are working on designing and building
a "sound renderer" or "auralizer" for DIVE. The idea here is to use a
"source/filter/listener" audio model to allow VR objects or events to
have sounds, and for these sounds to be spatialized and mixed for each
user's perspective (just like the visual renderers for multiple users
display different perspectives of the state of a VR). Objects and
events in a VR can also have several "aural perspectives" meaning, for
example, that one user hears the clock ticking, and another one hears
the word "tick." It is possible to use a dedicated sound server for
several users, or do the sound rendering locally. Things like reverb,
volume control and sound direction (for headphones) can be done both
on hardware and software. Stephen (a guest researcher from the U.S.
He's editor of the "Computer Music Journal" among other things) has
also created a framework for testing various approaches to gesture
recognition using alternative controllers (e.g., MIDI input devices)
connectred via sockets to a Smalltalk-80 program that can map input
gestures onto AI or vehicle actions.

More info
---------

Contact these people if you want more information about DIVE:

Christer Carlsson (cc@sics.se)

Kai-Mikael Jaa-Aro (with umlaut accents over both "a"s in "Jaa")
(kai@nada.kth.se)


  /Rex
---------
Rolf Staflin              SnailMail: SICS, Box 1263, S-164 28 KISTA, Sweden
Email: rex@sics.se        Phone: +46 8 752 15 67  Telex: 812 6154 7038 SICS
Telefax: +46 8 751 72 30  Voice: "Vakna, Roffe!"  Mizar: >greet Zarquon
Newsgroups: sci.virtual-worlds