Title: Enriching Scholarship 2001
1Principles of 3D Modeling and CAVE
Programming Imaging Technology Lab Media Union
2The CAVE
3- A typical VR application is divided into
components - A program
- Describes all interactions, behavior, animations
- A geometric model
- All the geometry created with common tools, such
as 3D Studio, AutoCAD - Sound
- Sound files (access to sound servers)
4The Model
5- Programming
- There are different ways to program the CAVE
- Toolkits, such as CAVELib or VR Juggler
- Basic graphics packages, such as OpenGL or IrisGL
- Higher open packages, such as Inventor or
Performer - Higher commercial packages, such as WorldToolKit
or eNai
6The System
Unix (Irix, Linux)
C
Performer
CAVELib
Additional in-house libs
7- Performer
- Designed for high-performance interactive
graphics - Very efficient, if there is more than one view in
a scene - Classes for multiprocessing
- Classes for scene manipulation
- Libs for C and C
- Generates calls for IrisGL and OpenGL
8- CAVELib
- Specifics of CAVE
- Displaying
- Interaction
- Tracking
- Networking
9Basic Program (outline.cpp) include
ltpfcave.hgtint main(int argc, char argv)
pfInit() pfCAVEConfig(argc, argv, NULL)
pfConfig() pfCAVEInitChannels() while
(!CAVEgetbutton(CAVE_ESCKEY)) pfSync()
pfCAVEPreFrame() pfFrame()
pfCAVEPostFrame() CAVEHalt()
pfExit() return 0
10Compiling CC -I/usr/local/CAVE/include -DOPENGL
name.c -o name \ -L/usr/local/CAVE/lib
-lpfcave_ogl -lpfdu -lpfutil \ -lpf -lGL -lXi
-lX11 -lm -lfpe -lC -limage
11.caverc Units inches Units feet Units
millimeters Units centimetersUnits meters
DisplayMode mono Simulator y Wall front
Wall front floor right leftWandSensorRotation 1
0 0 0WandSensorOffset 0 0 -9 inches
12Simulator Move wand with CONTROL mouse movement
or SHIFT mouse.Rotate wand with ALT mouse
roll wand with 'lt' / 'gt'.Move head with arrow
keys or SHIFT arrow keys.Rotate head with ALT
arrow keys.Reset tracking with 'P'. Mouse
buttons correspond to wand buttons.Joystick
operated with SPACEBAR mouse movement. 0 Wall
view (select wall with 'F'/'L'/'R'/'B'/'D')1
Perspective view2 Outside view (use numeric
keypad to rotate/zoom view)
13- Loading geometry
- Supports a wide range of formats, such as
- SGI Open Inventor (.iv)
- Wavefront OBJ (.obj)
- AutoCAD DXF (.dxf)
- AutoDesk 3DStudio (.3ds)
- MultiGen OpenFlight (.flt)
14Scene
DCS
Light
Group
Switch
SCS
Geode
Geode
Geode
Geode
DCS
Light
Sequence
pfScene - root node of a scene graphpfGroup -
generic grouping nodepfSCS - a transformation
which does not changepfDCS - a transformation
which can changepfSwitch - selects children to
be activepfSequence - cycles through a series of
children
Geode
Geode
Geode
15Show program (simple.c)
16DCS
A DCS can be updated by using the setTrans,
setRot, setScale, and setMat methods. The order
of effect is S R T. pfDCS dcs ...
dcs-gtsetTrans(transx, transy, transz)
dcs-gtsetRot(heading, pitch, roll) // RPH
17Show program (animation.cpp) Show program
(navigation.cpp)
18In-house libs - DDTk
Performer/CAVELib
DDTk Primitives
DDTk Services
DDTk Managers / Tools
19Links