CaveSL
A multi-screen mod for the open source Second Life Viewer






VR-Theater


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).

Cave Diagram

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!

Please review the README.txt

Here are the prebuilt windows binaries:
CaveSl-Snowglobe-2.0.0-Win32.zip

REQUIRED! MPICH 2
mpich2-1.2.1p1-win-ia32.msi

Border Crossing Sl Scripts: (Don't bother with these until you get your system setup and working)
SL-Scripts.zip

Full source including entire Snowglobe 2.0.0 tree + art + libs:
SL-CAVE-Source-2.0.0.rar

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:
Cmake-2.4.8
Fmodapi375win
DXSDK_Aug09.exe
Python-2.5.4.msi
QuickTime71SDK.exe

ICT-LOGO