| Chapter 1 - CAVELib Programming |
| Introduction |
| Compiling a CAVELib Program |
| CAVELib Applications |
| W2K CAVELib Application Projects |
| Workspace |
| Project |
| Project Settings |
| Source Files |
| CAVELib Callbacks |
| Rendering |
| Interaction |
| Trackers |
| Controller |
| Navigation |
| Multi-Threading |
| Shared Memory |
| Data Synchronization |
| Program Flow |
| CAVELib On Clusters |
| Form of a Basic CAVELib Program |
| Program Source Code |
| Program Structure |
| Chapter 2 - pfCAVELib Programming |
| Introduction |
| Basic pfCAVE Program |
| pfCAVE Functions |
| Overview |
| Functions |
| Special Notes |
| Simulator Mode |
| CAVELib Functions & Variables |
| Chapter 3 - Simulation |
| Introduction |
| Simulated Tracking |
| Head Controls |
| Wand Controls |
| Simulated Wand Controls |
| Simulated Display |
| Chapter 4 - Sample Programs |
| CAVELib Sample Program 1 |
| CAVELib Sample Program 2 |
| Chapter 5 - Software Configuration |
| Introduction |
| Configuration Keywords |
| Legacy Configuration Keywords |
| Chapter 6 - Hardware Configurations |
| i3D Structures |
| Projectors and Mirrors |
| Stereo Glasses |
| Stereo Emitters |
| Controller |
| Tracking Systems |
| Workstation |
| General Configuration Notes |
| Basic Configuration Display |
| Canonical Displays, CAVE and Box Format Displays |
| ImmersaDesk(TM) / Desk-Type Display |
| Holobench / Multi-Screen Desk |
| Reality Center / Curved Screen Display |
| Single Pipe Super Desktop Setup |
| Three Pipe Super Desktop Setup |
| Three Pipe Fixed Projection Point Setup |
| Additional Configuration Options for Clusters |
| Master Node Configuration Settings |
| Slave Node Configuration Settings |
| Chapter 7 - Functions, Data Types, and Macros |
| Overview |
| Data Types |
| CAVE_WALL_ID |
| CAVEID |
| CAVE_SENSOR_ST |
| CAVE_CONTROLLER_ST |
| CAVENETID |
| CAVE_USER_ST |
| CAVELOCK |
| CAVECALLBACK |
| CAVE_ST |
| Basic CAVELib Functions |
| void CAVEConfigure(int *argc,char **argv,char **appdefaults) |
| void CAVEDisplay(CAVECALLBACK function,int num_args,...) |
| void CAVEExit(void) |
| void CAVEFrameFunction(CAVECALLBACK function,int num_args,...) |
| void CAVEInit(void) |
| void CAVEInitApplication(CAVECALLBACK function,int num_args,...) |
| void CAVEStopApplication(CAVECALLBACK function,int numargs,...) |
| CAVE Macros, Variables, and Miscellaneous Functions |
| Sensor & Controller Macros |
| CAVESENSOR(i) |
| CAVENETSENSOR(user,i) |
| CAVEBUTTONn = [ 0 | 1 ] |
| CAVE_JOYSTICK_X |
| CAVE_JOYSTICK_Y |
| Global Variables |
| int CAVENear,CAVEFar |
| int CAVEEye |
| int CAVEWall |
| float *CAVEFramesPerSecond |
| float *CAVETime |
| char *CAVEVersion |
| CAVE_CONTROLLER_ST *CAVEController |
| int *CAVENumUsers |
| CAVE_USER_ST **CAVEUser |
| Miscellaneous Functions |
| void CAVEAddCallback(CAVEID cbtype, CAVECALLBACK function, void *app_data) |
| volatile void * CAVEAllocDisplayData(size_t size) |
| volatile void * CAVEAllocDisplayDataByID(int id,size_t size) |
| int CAVEButtonChange(int button) |
| float CAVEConvertFromCAVEUnits(float val,CAVEID units) |
| float CAVEConvertToCAVEUnits(float val,CAVEID units) |
| void CAVEDisplayBarrier(void) |
| boolean CAVEDisplayDataChanged(volatile void *buf) |
| boolean CAVEDisplayDataChangedByID(int id) |
| boolean CAVEDisplayDataIDExists(int id) |
| void CAVEDisplaySync(void) |
| void CAVEDistribBarrier(int chanID) |
| void CAVEDistribCloseConnection(int chanID) |
| boolean CAVEDistribMaster(void) |
| int CAVEDistribNumNodes(void) |
| void CAVEDistribOpenConnection(int chanID) |
| int CAVEDistribRead(int chanID,void *buffer,size_t size) |
| void CAVEDistribWrite(int chanID,void *buffer,size_t size) |
| void CAVEFree(void *mem) |
| void CAVEFreeLock(CAVELOCK lock) |
| void CAVEGetActiveChannels(CAVEID wall[CAVE_NUM_WALL_IDS]) |
| boolean CAVEgetbutton(CAVE_DEVICE_ID device) |
| volatile void * CAVEGetDisplayData(volatile void *buf,size_t *size) |
| volatile void * CAVEGetDisplayDataByID(int id,size_t *size) |
| int CAVEGetDisplayDataID(void *buf) |
| void CAVEGetEyePosition(CAVEID eye,float *x,float *y,float *z) |
| int CAVEGetFrameNumber(void) |
| void CAVEGetOrientation(CAVEID oname,float *angle) |
| void CAVEGetPipeChannels(CAVEID wall[CAVE_NUM_WALL_IDS]) |
| void CAVEGetPosition(CAVEID posname,float *pos) |
| void CAVEGetSensorOrientation(CAVE_SENSOR_ST *sensor,CAVEID frame,float *angle) |
| void CAVEGetSensorPosition(CAVE_SENSOR_ST *sensor,CAVEID frame,float *pos) |
| void CAVEGetSensorVector(CAVE_SENSOR_ST *sensor,CAVEID vecname,float *vec) |
| float CAVEGetTime(void) |
| long CAVEgetvaluator(CAVE_DEVICE_ID device) |
| void CAVEGetVector(CAVEID vectorid,float vector[3]) |
| void CAVEGetViewport(int *origX,int *origY,int *width,int *height) |
| void CAVEGetWallCorners(CAVE_WALL_ID id, float* ll, float* ul, float* lr) |
| void CAVEGetWallCornersEye(CAVE_WALL_ID id, CAVEID walleye, float* ll, float* ul, float* lr) |
| void CAVEGetWindowGeometry(int *origX,int *origY,int *width,int *height) |
| GLXContext CAVEGLXContext(void) |
| void CAVEHalt(void) |
| void CAVEHeadTransform(void) |
| int CAVEInStereo(void) |
| void *CAVEMalloc(size_t size) |
| boolean CAVEMasterDisplay(void) |
| boolean CAVEMasterWall(void) |
| void CAVENavConvertCAVEToWorld(float inposition[3],float outposition[3]) |
| void CAVENavConvertVectorCAVEToWorld(float invector[3],float outvector[3]) |
| void CAVENavConvertVectorWorldToCAVE(float invector[3],float outvector[3]) |
| void CAVENavConvertWorldToCAVE(float inposition[3],float outposition[3]) |
| void CAVENavGetMatrix(Matrix m) |
| void CAVENavInverseTransform() |
| void CAVENavLoadIdentity(void) |
| void CAVENavLoadMatrix(Matrix m) |
| void CAVENavLock(void) |
| void CAVENavMultMatrix(Matrix m) |
| void CAVENavPreMultMatrix(Matrix m) |
| void CAVENavRot(float angle, char axis) |
| void CAVENavScale(float xscale, float yscale, float zscale) |
| void CAVENavTransform() |
| void CAVENavTranslate(float xtrans, float ytrans, float ztrans) |
| void CAVENavUnlock(void) |
| void CAVENavWorldRot(float angle, char axis) |
| void CAVENavWorldScale(float xscale, float yscale, float zscale) |
| void CAVENavWorldTranslate(float xtrans, float ytrans, float ztrans) |
| CAVE_USER_ST * CAVENetFindUser(CAVENETID id) |
| void CAVENetGetOrientation(volatile CAVE_USER_ST *user,CAVEID oname,float *or) |
| void CAVENetGetPosition(volatile CAVE_USER_ST *user,CAVEID posname,float *pos) |
| void CAVENetGetVector(volatile CAVE_USER_ST *user,CAVEID vecname,float *vec) |
| void CAVENetHeadTransform(volatile CAVE_USER_ST *user) |
| int CAVENetReceive(void *buf,size_t size,CAVE_USER_ST **user) |
| void CAVENetSend(void *data,size_t size) |
| void CAVENetWandTransform(volatile CAVE_USER_ST *user) |
| int CAVENewID(void) |
| CAVELOCK CAVENewLock(void) |
| int CAVENumPipes(void) |
| void CAVEPassAllDisplayData(void) |
| void CAVEPassDisplayData(volatile void *buf,size_t size) |
| void CAVEPassDisplayDataByID(int id,size_t size) |
| int CAVEPipeNumber(void) |
| CAVEID CAVEProcessType(void) |
| void CAVEResetTracker(void) |
| void CAVEScramnetFree(void *mem) |
| void * CAVEScramnetMalloc(size_t size) |
| void CAVESensorTransform(CAVE_SENSOR_ST *sensor) |
| void CAVESetOption(CAVEID option,int value) |
| CAVE_DIST_NETWORKSLAVE |
| CAVE_GL_ACCUMSIZE |
| CAVE_GL_SAMPLES |
| CAVE_GL_ACCUMSIZE |
| CAVE_GL_SAMPLES |
| CAVE_GL_STENCILSIZE |
| CAVE_NET_BUFFERSIZE |
| CAVE_NET_NUMBUFFERS |
| CAVE_NET_UPDATELOCALDATA |
| CAVE_PROJ_INCLUDENAVIGATION |
| CAVE_PROJ_USEWINDOW |
| CAVE_PROJ_USEMODELVIEW |
| CAVE_SCRAMNET_ARENASIZE |
| CAVE_SHMEM_SIZE |
| CAVE_SHMEM_ADDRESS |
| CAVE_SIM_DRAWOUTLINE |
| CAVE_SIM_DRAWTIMING |
| CAVE_SIM_DRAWUSER |
| CAVE_SIM_DRAWWAND |
| CAVE_SIM_VIEWMODE |
| CAVE_TRACKER_SIGNALRESET |
| void CAVESetReadLock(CAVELOCK lock) |
| void CAVESetWriteLock(CAVELOCK lock) |
| void CAVESleep(float seconds) |
| CAVEID CAVEUnits(void) |
| void CAVEUnsetReadLock(CAVELOCK lock) |
| void CAVEUnsetWriteLock(CAVELOCK lock) |
| void *CAVEUserSharedMemory(int size) |
| void CAVEUSleep(unsigned long milliseconds) |
| CAVE_WALL_ID CAVEWallName(char* wallName) |
| char * CAVEWallName(CAVE_WALL_ID wall) |
| void CAVEWallTransform(void) |
| void CAVEWandTransform(void) |
| Display * CAVEXDisplay(void |
| XVisualInfo * CAVEXVisualInfo(void) |
| Window CAVEXWindow(void) |
| pfCAVE Function Calls |
| pfList * pfCAVEChannels(void) |
| void pfCAVEConfig(int *argc, char **argv, char **appdefaults) |
| void pfCAVEDCSHeadTransform(pfDCS *dcs) |
| void pfCAVEDCSNavTransform(pfDCS *dcs) |
| void pfCAVEDCSNetHeadTransform(pfDCS *dcs,volatile CAVE_USER_ST *user) |
| void pfCAVEDCSNetWandTransform(pfDCS *dcs,volatile CAVE_USER_ST *user) |
| void pfCAVEDCSWandTransform(pfDCS *dcs) |
| void pfCAVEDCSSensorTransform(pfDCS *dcs,CAVE_SENSOR_ST *sensor) |
| void pfCAVEDrawFunc(pfChanFuncType func) |
| void pfCAVEHalt(void) |
| void pfCAVEInitChannels(void) |
| pfChannel *pfCAVEMasterChan(void) |
| pfList * pfCAVEPipes(void) |
| void pfCAVEPostDrawFunc(pfChanFuncType func) |
| void pfCAVEPostFrame(void) |
| void pfCAVEPreDrawFunc(pfChanFuncType func) |
| void pfCAVEPreFrame(void) |
| Environment Variables |
| CAVE_HOME |
| CAVEDEBUGCONFIG |
| Chapter 8 - Supporting Software |
| Chapter 9 - CAVELib with FLEXlm Licensing |
| Introduction |
| Benefits |
| Installing |
| Terminology |
| Chapter 10 - Bergen Sound Server & Library |
| Introduction |
| Library Interface |
| bergenServer class |
| bergenSound class |
| bergenSample class |
| snerd |
| Chapter 11 - CAVELib 3.1 Install Guide |
| Step One - Hardware |
| Step Two - Installation |
| Step Three - Configuration Files |
| Step Four - Testing |
| Appendix A - CAVELib ChangeLog |