LIMBO
Version 0.42 12/10/98

(C) Jason Leigh
Electronic Visualization Lab
University of Illinois at Chicago

Requirements
Compiling LIMBO
Instructions
Navigation
Wand Buttons
Other Tips
Update History
 

LIMBO is a simple template of a program that is designed to give people a starting point to develop collaborative programs in VR.  The program lets you load 3D models files (OBJ, DXF, Inventor, VRML 1 and any other formats Performer can load) into the scene, and move them.  Each participant is visible as an avatar.

You can load a max of 64 objects into the virtual world. Participants can join in and leave at any time.

The participants can also speak to each other via an asynchronous intercom system.

This software is free!   If you use this in your project, great! Just let us know what you do with it and it add a citation on  your next paper or project pointing to one of our CAVERN papers and WEB page. If you would like us to showcase your work we would be happy to link to it from out CAVERN WEB page.

If you have questions, comments, suggestions etc, please email me at:

    cavern@evl.uic.edu

 
 

Requirements

CAVE Library
CAVERN (at least version 2.2)
Performer 2.x

Compiling LIMBO

Edit the lines in the Makefile and in SERVER/Makefile to point to the location of your CAVERN and CAVE library distribution. Also add the necessary -lelm library for CAVE library licensing.
Then type:
 

Instructions

For simplicity each collaborator should have their own copy of the entire LIMBO distribution. For help type:

            limbo -h

There are a number of ways to run LIMBO. I will outline 3.
 
0. Connecting your LIMBO client to our server in Chicago

At EVL we now have a permanent LIMBO server running and we invite you to stop by and visit us. To do this type:

limbo -n Your_name -w evl -s limbo.evl.uic.edu

1. Connecting 2 clients to each other

Lets say you have 2 computers, one called: laurel and the other called hardy.
Lets assume laurel will act as the server in this case.
So on laurel type: Wait till limbo has completely loaded. Now on hardy type: Now you should be able to see each other as an avatar. Use the wand's joystick for navigation.

To load objects into the scene:

Lets say you are on hardy and want to load an object into the space.
Type:

limbo is the name of the world (default is limbo).
localModelFile is some 3D model file like demo1.iv - note: it is important that the proper suffixes are maintained (e.g iv, dxf, obj).  There are sample models in the SAMPLES directory.
0 is the index/slot to choose for the object (You can choose values between 0 and 63.)

If you want to remove the object type:

delimbo limbo laurel NONE 0

 2. Connecting clients to a central server

In this example we designate a separate computer as the server.
On a separate computer (say call it beeviz), go into the SERVER directory and run:
irb
Now on any other machine run limbo like:
limbo -s beeviz -n Jason
Finally to upload models type:
delimbo limbo beeviz localModelFile 0
limbo is the name of the world (default is limbo).
localModelFile is some 3D model file like demo1.iv - note: it is important that the proper suffixes are maintained (e.g iv, dxf, obj). There are sample models in the SAMPLES directory.
0 is the index to choose for the object (You can choose values between 0 and 63.)

If you want to remove object X type:

delimbo limbo beeviz NONE X
 where X is the index of the object (from 0 to 63)

Navigation

Use the joystick on the wand for navigation.

Wand Buttons

LEFT Button - lets you pick and move an object. The intersection is shown as a blinking white box.

MIDDLE Button - lets you fly towards whatever your wand is intersecting with so you don't have to deal with navigation.

RIGHT Button - press and hold the button down while speaking into the microphone. Release the button to deliver your message to everyone. To do this make sure that your audio-in and audio-out in the audio panel is set at 11kHz. Run the audio panel by typing: apanel
 
LEFT and MIDDLE Button together - lets you delete the object that you are pointing at.
 

Other Tips

Now you can run LIMBO in any directory other than the directory in which LIMBO was installed. To do this you need to set  the environment variable LIMBO to point to the directory where the LIMBO installation resides.
e.g. setenv LIMBO /usr/local/limbo
Also to set a permanent location for your own LIMBO database use the LIMBO_DB environment variable.
e.g. setenv LIMBO_DB ~/mylimbodb
 
The network port that LIMBO opens for accepting incoming connections can be set using the -l option at limbo's command line. In addition the port number that LIMBO will connect-to at the remote site can  be changed using the -r option. By default both of these values are set at 10000.

Update History

Version 0.42 (12/10/98)
  1. Additional code has been added allowing you to more easily share your own data. See lim_user.c++.
  2. Avatar's names are printed including full hostname resolution.
Version 0.41 (12/3/98)
  1. A permanent LIMBO server has been set up at EVL. The world name is: evl and the server name is: limbo.evl.uic.edu. You can use your LIMBO browser to jump into our world.
  2. Bug fixes for version 0.4 involving limbo path names that occur when you try to run LIMBO a separate directory from LIMBO's installation directory.
  3. LIMBO_TEMP directory is no longer needed. Temporary files are written to /usr/tmp.
Version 0.4 (11/24/98)
  1. This version of LIMBO must use at least version 2.2 of CAVERN.
  2. The parameter list for launching limbo and delimbo have been changed. They are:

  3. limbo [-n your_name] [-w world_name] [-s server_address] [-l local_port] [-r remote_port] [-help]
     

    delimbo world_name remoteIP <local_object_file | NONE> id

    By including the world_name parameter you can use the same LIMBO program to browse different limbo worlds just by changing the name of the limbo world. By default the world's name is limbo. But you can have different people build their own worlds with their own unique world names and you run limbo to tour them. Limbo will cache the objects for each of these worlds in completely separate databases hence keeping the contents and state of the worlds separate. Used in conjunction with the server address you can have many servers host many worlds.

    The local_port and remote_port parameters allow you to override the network port numbers from their default values (10000).

  4. Fixed another small bug in version 0.32a that may appear when objects are erased in LIMBO.
  5. Added LIMBO and LIMBO_DB environment variables. See TIPS above.

  6.  
Version 0.32a (11/21/98)
  1. Modified LIMBO database path names so that many independent LIMBO worlds can be managed by 1 server. See lim_appName.h++
Version 0.31a (11/17/98)
  1. Fixed a tiny bug when erasing objects in LIMBO
Version 0.3a (10/27/98)
  1. Added collision detection to navigation so that you cannot walk through walls and you can climb objects.
  2. Added rotation with object movement.
  3. NOTE: LIMBO 0.3a is NOT compatible with older versions of LIMBO.
Version 0.2a (6/6/98)
  1. Fixed a small bug in object position synchronization on start up.
  2. Changed avatar designs yet again.
Version 0.1a (6/1/98)
  1. Must be compiled with CAVERNsoft Version 1.7.
  2. Changed avatar designs.
  3. Added ability to point and remove an object.
  4. Supports all the file formats supported by Performer as long as the filename suffixes are correctly kept.
Version 0.0a (4/3/98)  - First release.