Dive 3.3x Keypoints

This page contains a brief summary of the main additions from Dive
3.2 to Dive 3.3x. More
detailed information can be gained through the
changes log that follows with the distribution.
- Geometry Optimisers
- Tesselator - A simple tesselator allows you to cut all
pointsets into triangles. This tool should be used as a first step
before producing triangle strips (see below).
- Center Hierarchy - This tool allows you to hierarchically
recenter a tree around its approximate center of gravity. Centered
models will improve all operations that involve culling the scene
graph, e.g. rendering, collision, intersection, etc.
- T-stripper - A greedy algorithm allows you to convert any
multi-polygon that is composed exclusively of triangles into a set of
triangle strips, which are usually quicker to render.
- Texturing Improvements
- Mip Mapping - Mip maps are now supported, this allows for
visually better textures and for variable resolution depending on the
distance to the viewer.
- Texture Transformations - All views now contain a texture
transformation that allows you to translate and rotate the texture
mapped on their surface.
- Native Graphics - There is now native support for the most
common graphics type. In practice, Dive almost never relies on
external processes to be able to read the content of textures. The
supported formats are (animated) GIF, JPEG, PNG, PPM and XWD.
- Texture Blend - Dive now supports most of the texture
blending possibilities offered by OpenGL, e.g. it is possible to
ignore materials when texturing.
- Environment Mapping - Support for environment mapping is
present.
- Rendering Enhancements
- Stero - Stereo is now fully supported on Silicon Graphics
machines.
- Display Lists - There is an initial support for display
lists, at the view level. This allows rendering improvements on some
architectures.
- World Background - Support for VRML-like world background
is now present in the platform.
- FOV - Different ways of associating field of view
modifications to window resizes are now supported.
- Target Frame Rate - Dive now allows to specify a target
frame rate, the software far clipping plane will be adjusted
dynamically to reach that goal.
- Anti-Aliasing - Lines are now correctly anti-aliased.
- External Devices
- HMD - Support for head mounted displays with stereo view
has been addded.
- Fastrak - Support for fastrak sensors.
- Track-Ball - Support for a track ball through a specific
plugin.
- MSD - Support for multi-screens displays, this is currently
hard coded to three different viewports and screens and has only been
tested on our Onyx.
- Networking Improvements
- Packet Size - All transiting packets have been optimised
so as to reduce their size to the vital minimum.
- Message Aggregation - Dive now allows to aggregate a series
of transformations into a single message, that will lead to a single
chain of network packets. Noticeable improvements in animations result
from this feature.
- DNS Helper - Dive now provides a separate DNS helper
application on UNIX systems. This allow other processes to avoid
blocking when resolving host names to IP addresses.
- Weak & Strong Peers - Dive now makes a difference between
weak and strong peers. Weak peers will never be able to send state
transfer or to become world server, and thus take in charge some
possibly heavy operations.
- SRM Improvements - The SRM (Scalable Reliable Multicast)
implementation has been consolidated, which allows the platforms to
run better on wide aread networks.
- Debug Loss Rate - Dive now has support for simulation
packet loss both on reception and sending.
- RTT - Round-Trip Time between peers is now estimated
on-the-fly, which allows for better behaviour on wide area networks.
- Audio Enhancements
- Light-Weight Groups - Dive supports multiple audio groups,
their creation and manipulation is eased by a Tcl interface.
- Sampling Rate - Dive now allows you to choose the sampling
rate on sending and reception, which enables better audio quality on
local networks.
- Playout Delay - The playout delay has been minimised and
can now be configured, which allows for minimised delays on local
networks, but also allows to adapt to wide-area trials.
- Separate Process - Dive offers the possibility to run audio
in a separate process or preemptive thread. While this is still work
in progress, the resulting audio quality is noticeably improved.
- Database Improvements
- Identifier Comparison - Entity identifier generation and
testing have been modified to allow for faster comparisons and
look-ups.
- Dynamic Rehash - The databases containing the different
entities are now dynamically rehashed when the mean number of elements
for each hash value gets to big. This allows for faster look-ups in
the database.
- Dynamic Reordering - The lists forming the hash tables are
reordered automatically so that the last looked-up object is placed at
the head of the list automatically. This minimises the number of
iterations the next time it is looked up, a situation that occurs
quite often.
- General Collections - Dive now supports the concept of
collection. Collections are sets of entities, gathered in no specific
order and across the hierarchy. Each entity has a floating membership
value and collections can contain collections.
- Access Control - There is support for some access control
and possibility exists to control the actions that can be performed by
a user or collection of users.
- Additional 3D File Formats
- 3DS - There is an initial support for 3D Studio files, the
code is based on the file format "specifications" that are found at
various locations
.
- VRML97 - Initial support for the
VRML97
specification, some primitives are not yet supported and only some of
the animation nodes are supported through Dive/Tcl scripts.
- AC3D - Internal support for the AC3D
file format. Note that loading AC3D files directly into Dive gives
generally better results than exporting Dive files from AC3D.
- Binary Files - Dive now supports a binary file format, note
that binary files created with 3.3x are likely not to work with
further versions. Consequently, binary files should only be used to
speed up file loading and the original text files should always kept
as a backup.
- User Interface
- Awareness List - The actor list has been improved and
offers a quick view of what other users present in the same world are
doing and allows for some common actions from a right-click menu. The
list can be used as an awareness mechanism by running continuously and
hiding the rendering window.
- Shell Prompt - "diva" can now be started without any
graphical interface, but with a Dive/Tcl prompt that allows you to
enter commands and gather information about the environment
programatically.
- Better Widgets - The interface has been improved through
the use of
mega-widgets, especially the configure table edition and the
scripting consoles.
- Menu Reorganisation - The menus have been reorganised
slightly and some accelerators have been added.
- Object-Based Navigation - "diva" can now be started as an
object viewer. The specific navigation methods can also be used from
"vishnu", through a special vehicle.
- Built-In Tools - An interactive box editor now allows the
user to rescale any object dynamically. Similarily, a distance
measurement tool can be accessed from the interface.
- Programming Interface
- Plugin - Any Dive application can now load a list of
plugins when starting up. These plugins will be activated through the
call of a specific init function and they have access to all of the C
programming facilities of the platform.
- Dive/Tcl - As for every new release, some new Dive/Tcl
commands have been added.
- Miscellaneous
- Internal Operations - Dive now integrates an internal CPP
(C pre-processor, used for resolving macros in .vr files) and an
internal unzipping facility.
- Logging - The logging facilities have been improved,
especially through the a separate process that logs all actor
movements.
- Persistency - A first step towards persistent worlds has
been taken. This is currently achieved through running one or several
processes which only goal is to store the state of the environments.
- SQL Support - SQL support has been added through a plugin.

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