DIVE Record Replay
Overview | Basic Record | Basic Replay | Misc.
DIVE currently supports a crude version of record and
replay. Essentially the record and replay tool acts as a 3rd party in
a DIVE session. In record mode it saves all events to a file. In play
mode it creates a world and pushes events in to it, without regard to
existing participants. You can not interact with replays, and the
replay tool must be allowed to create the world; that is the replay
tool must be started before any viewing tools.
Getting the Demo
If you are at UCL a record and replay demo is currently copyable from
our CVS repository. On cygwin the CVSROOT is //smbhelp/vr-dive/cvsroot
and the package is record-replay. That is
export CVSROOT=//smbhelp/vr-dive/cvsroot
cvs checkout record-replay
If you aren't able to see the repository then you download a zipped
version here: record-replay-demo.tgz.
You also need to use a recent bug-fixed version of DIVE (3.3x6 or
later). If you are at UCL, find this in the UNIX directory
/cs/research/vr/dive/starship/dive
or, if you are on WinXX
\\smbhelp\vr-dive\dive
Notes
The record and replay tool is actually ONE executable
recorder(.exe). On Unix, you will find there is a symbollic link in
the appl directory from player to recorder. On Unix, the executable
determines its own name to determine its behaviour (record or
replay). This doesn't work on Win32, so there are also commandline
switches (-record, -play) to force the behaviour to one or other mode.
Limitations
At the moment, replay is once through only. That is, you start the
player, then start the viewers. The timing of events seems to be
"buggy" in that although the code is there to time events as per the
original event file, actually it replays faster or slower depending on
the frame rate of the rendering. This limitation should go away soon.
Recording is quite flexible; you can start a recorder at any time. The
first thing that recorder does is save the state of the whole world in
a .bvr file, and then generates an event log with all subsequent
event. The limitation is that output file naming is hard-coded (bvr
file) or configure in the config file (event log). This means log
maintenance is fiddly. This limitation will go away soon.
Note that it is very important that the diveserver uses exactly the
same multicast groups for record and replay. See the notes about
run_server below. This limitation will go away soon.
Read the README.txt file in the demo directory - it tells you how
to avoid pain and embarrassment from overwriting your precious
files. This is the top thing to fix.
- Start a diveserver
- Start your world
- For example run_desk
- Nothing to note here
- Start the recorder
- For example run_recorder
- Note that you give it an existing directory to log files to, and
also that the -record commandline variable.
- The output files will be out.bvr in the current directory and an
eventlog which you specfied in the config file for the recorder. If
objects were created during the session, you will see numerous other
.bvr files numbered like s2a4..bvr, s2a4.1.nvr, etc.. There may be
dozens, or hundreds of these files - they are all important.
Notes
The .bvr file and event log files are dependent on a major DIVE
version such as DIVE3.3x. They should work with any minor variation on
this branch (3.3x5, 3.3x6, etc.)
- Start a diveserver
- For example run_server
- Note we re-use the server.dat file. If you didn't use the same one
when you recorded you will be unable to replay.
- Start the player
- For example run_play
- Note that recorder will wait a fixed number of seconds before
starting to replay. This can be overridden with -wait X on the
command line where X is seconds as an integer.
- Start a world viewer
- For example run_desk
- Note that if you don't see any avatars, but it appears to be
working, then it may be because of subjective views. Try changing your
subjective view login. This typically happens when you record a CAVE
session, where the user's own avatar is subjectively invisible to
herself, so if you replay logged in under the same account, you also
don't see the avatar.
To Do
- Better file management
- Remove multicast group specificity
- Write a TCL UI to control recording and replaying
- Variable speed replay
- Online record and replay
- Integrating other log files to replay
- 1st person replay
-
Anthony Steed, A.Steed@cs.ucl.ac.uk