Dive 3.2 Keypoints

- Pointset - Pointsets are a unified way of describing multi-polygons,
triangular and quadratic meshes, polylines and set of vertices. Pointsets
contain a table of vertices, which are indexed in order to build the polygons
and such. This reduces file size, memory occupation and network traffic.
Pointsets are also an easy way of performing polygon deformations, such
as those needed for body animation.
- New Dive Node types - New node types have been added:
- Switch nodes decide which of their children should be used for
rendering, interactions, collisions, etc. Switch nodes are an easy way
of creating simple animations from Dive/Tcl scripts or C programs.
- Billboards rotate around an axis or their center to always look
at a user. Billboards are an easy way of creating textured trees, birds,
etc.
- Level of Details have been improved and are now a special node
type. Level of details can choose which representation to use depending
on the distance or the angle between the viewer and the object.
- Texture transforms - Texture coordinate rotation and translation
matrices have been added to allow control of texture mapping via transform
operations. This makes it possible to rotate or translate textures in different
ways on the mapping surface.
- New VRML 1.0 parser - The parser is not anymore based on a BNF
grammar, but on a dynamic grammar. Such a grammar is necessary since VRML
1.0 files can be self-describing. The new parser optimize the number of
objects, views and material created and is adapted to the new pointsets.
Special VRML nodes exist for specific Dive information such as properties
and scripts.
- New vishnu interface - The interface of vishnu, Dive's default
viewer has been improved. It contains a Netscape-like button bar which
can be detached from the main window. Several new functionalities have
been added:
- On-the-fly edition of all the materials associated to an object is
now possible using a material editor.
- New simplification rendering flags have been added for low-end platforms.
- All top windows can be raised through a new menu.
- Support for subjective
views and AC3D
(see below) is present.
- Several entity (actor, object, world, etc.) information windows can
be opened simultaneously.
- All notifications since the beginning of a session are accessible from
an history window.
- The entity inspector is enhanced and an "inspect by name"
tool has been added.
- Positions and Orientations as user defined functions - The position
and orientation of objects within the virtual world can be described by
a set of associated functions. Even if some distribution problems remain,
the following user-defined functions are offered:
- angular and linear velocities associated to objects are a special case
of these general functions.
- gravity and collision detection have been implemented.
- Dive/Tcl commands can be called each time the position and orientation
of an object is requested. This allow easy implementation of complex mathematical
based movements and constraints.
- Faster state transfers - The content of state transfers can
be compressed, which results in faster state transfers, even on a local
network. This improves the dynamic of connection and disconnection of processes,
since senders are not blocking as long as before.
- RTP v2 - All Dive packets are now encoding according to the
IETF standard for real-time communication. Dive sessions can now coexist
on the same multicast address as RTP
v2 compliant tools, such as VIC,
VAT or RAT.
- Text-to-speech - An experimental and simple text-to-speech interface
has been added to all platforms supporting audio. Sound generated from
the text-to-speech synthesis will locally be spatialized and mixed with
all Dive sound. As an example, messages received in the "talk"
windows can be synthesized as human voice. The voice will be spatialized
as coming from the sender's representation.
- Audio Encoding - GSM and DVI encoding have been added to the
platform, in order to improve long distance audio communication and to
reduce band-width use.
- Video Support - Dive processes can send and receive video streams
on a separate channel. Streams can dynamically bound to textures. As a
result, only powerful texture machines can be used to visualize video streams.
The frame rate is a function of CPU power (for decompression) and texture
binding time. Encoding is only possible on SGI workstations.
- The DiveBone - Dive proxyservers can now be connected to each
others in order to connect together islands of multicast networks. A transparent
mechanism ensure that the traffic from regular Dive processes on a local
island will be forwarded to all other islands, and thus be received by
possible remote Dive processes. Proxyservers can be controlled by a separate
Tk-based windowing interface, which will be able to display their current
status and some network statistics. This setup allows remote control of
the different proxyservers running along the DiveBone.
- Network analysis - Real-time and delayed network analysis is
possible using the following tools:
- All incoming and outgoing Dive events can be logged to a file, together
with most of the content.
- Proxyservers can regularily send statistics to their controlling Tk
interface. The statistics include the number of bytes sent and received
for each application entry, i.e. for each event type.
- Subjective views - Subjective
views are a way of slightly tweaking how users see the virtual environment,
e.g. making some objects transparent or brighter for some users. Edition
and use of subjective views is possible from new menu entries in vishnu.
- AC3D - AC3D
is a modeller supporting different file formats, including the Dive file
format. The following key points are now part of Dive 3.2:
- Dive can export entity trees to the new AC3D file format.
- During a vishnu session, objects can be exported to a running AC3D,
in which edition is possible. AC3D objects can then be put in place of
the original version.

Emmanuel
Frécon - emmanuel@sics.se
Olov Ståhl - olovs@sics.se