|
CaveSL A multi-screen mod for the open source Second Life Viewer ![]() Introduction
CaveSL was
developed by Kip Haynes at USC’s
Institute for Creative Technology. The
motivation for the project was to adapt the ICT’s SL-based Coming Home
project to
a large format immersive display. Since Second Life (SL) is designed
for human interaction,
we thought it would be greatly beneficial to interact with other
avatars and virtual
humans in a lifelike scale. Additionally, the assets and physical
environments
within SL are relatively easy to create and use, and the
environments
themselves are very much part of the human interaction
experience. However, the typical
means of accessing SL is through a single computer screen, which
lessens the
immersion that is inherent in such a rich 3D world. Because of this,
the SL
virtual world is a good candidate for adaptation to large scale
immersive
displays such as a CAVE or other multi projector systems. You can
read more in our SIGGRAPH 2010
poster abstract here.
CaveSL
uses multiple concurrent SL logins across an unlimited number of
machines. A client-server
relationship exists between the SL viewer that the user interacts with
(leader)
and all other viewers (followers). Inside the open source SL viewer,
each
viewer synchronizes whenever updateCamera() is called. Simultaneously
the
leader broadcasts the position, rotation and focus of the camera.
Data
and Display Synchronization The
follower viewers receive the position of the leader camera and
synchronization signal. Each follower
reads its assigned rotation
from a local config file and performs the proper translation and
rotation. A
customized 2D rotation was written to handle the translation and
rotation of the
camera about the X axis. Some simple real time configuration functions
have
been added to assist in achieving the proper orientation and alignment.
Additionally,
each node reads its own FOV (field of view) info from a local config,
because
the Second Life FOV adjustment is difficult to set with any accuracy
(slider
bar). ![]() The
above described approach provides a well synchronized multi-viewer
environment
using direct communication between the clients. However, Second Life
consists
of multiple regions or “sims,” which are sections of land that are
often controlled
by different servers. Initial tests revealed that when the leader
crosses a sim
boundary, the followers remain mapped to the original sim coordinates
and show the
camera positions in the old sim. This is because the local coordinates
of each
region or sim in Second Life only form a square grid whose coordinates
number from
0 – 255 meters. This required a fix on the native SL scripting side,
enabling
the follower avatars to subtly follow the leader around the environment
and
into the next sim. Crossing sim boundaries is an elusive and
undocumented
process, and essentially means that a user is switching from one
simulation server
to another. To solve this problem, we created a vehicle object that the
follower avatars could sit on and ride in order to follow the leader’s
camera
around. In order to achieve a proper sim crossing, the movement of the
leader is
always cached and used as a trajectory for the follower vehicle to be
able to
cross the sim. In most cases this works well, but if the leader zigzags
back
and forth across a boundary, the follower can miscalculate the
trajectory. Limitations Currently
the system was designed for a large, multi-screen VR theater and only supports
vertical rotation of the follower cameras. However, it would be very simple
to
add additional rotations for additional display environments. Also due
to the
rapid prototype of this project, the user currently has limited control
of some
of the native Second Life camera functions.
CaveSL is
currently built from Snowglobe 2.0. CaveSL is free and open source at
this
time, however, you will also need to install and configure Install
MPICH2 (included in the downloads.) It serves as the launcher, process
manager and communications broker between the clients. Special thanks to Eric Chance for his
assistance
with the SL boundary crossing scripts. Download: Please send
an
email to haynes@ict.usc.edu
for an automated reply with the links to
the binaries and scripts. Please include a brief description of your
project and organization so that we can know who is using this project.
This is an unsupported open source project. If you would like to
contribute to the project, please email me at haynes [at]
ict.usc.edu. Thanks and
enjoy! Here are the prebuilt windows binaries: REQUIRED! MPICH 2 Border Crossing Sl Scripts: (Don't bother
with
these until you get your system setup and working) Full source including entire Snowglobe 2.0.0
tree
+ art + libs: It will be extremely helpful if you can
build a
virgin source tree before trying this one. See http://wiki.secondlife.com/wiki/Source_downloads
for more information. Other dependencies that you will likely need
to
build: |