260 likes | 459 Views
The Virtual Radiology Explorer Part 2: Understanding and extending VRE. Robert Belleman robbel@science.uva.nl. Overview. What is what? Brief overview on each component in VRE Understanding VRE How to find your way through the sources How to make changes and extensions. VRE structure.
E N D
The Virtual Radiology ExplorerPart 2:Understanding and extending VRE Robert Belleman robbel@science.uva.nl
Overview • What is what? • Brief overview on each component in VRE • Understanding VRE • How to find your way through the sources • How to make changes and extensions
What is what? An overview on the components in VRE
CVS modules • Note:You will see references to “CVS” modules. To access these, log in on one of the Unix systems and typecvs -d /home/robbel/.cvsroot checkout module-nameThis will create a directory module-name in your current directory.
XiVE • XiVE: • X11 in Virtual Environments library • Allows any X windows GUI to be used in a VE • Bridge between 2D GUIs and 3D VEs • Unfinished/unstable; currently not used in VRE • Think about this when you need “standard” helper applications in a VE (browser, calculator, document reader, etc.) • See http://www.science.uva.nl/~robbel/XiVE/ • CVS module: XiVE
OpenGL|Volumizer • OpenGL|Volumizer: • Volume rendering library • SGI/Irix systems only (hardware support) • Provides full view of 3D grids through “raycasting” • Interactive color map editor • CAVE support by Sean Spicer, Stanford(CVS module: SVR) • See http://www.sgi.com/software/volumizer/ • Latest news (April 2002): SGI released version 2.2 including Vtk support (which may make module SVR obsolete) (still Irix only)
GEOPROVE • GEOPROVE: • Geometric Probes for Virtual Environments • Taking measurements in a VE • Subcomponents: • Freetype: open source TrueType font library • GLTT: OpenGL TrueType • CFC: CAVE Foundation Classes (compare to Windows Foundation classes) • Probing user interface • See http://www.science.uva.nl/~robbel/GEOPROVE/ • CVS module: GEOPROVE
PACS • PACS: • Picture archiving and communication system • Similar to those used in hospital radiology depts • PACS server: • Database access • Remote (pre-)processing (such as parallel isosurface extraction) • Communicates with VRE via PVM • Obsolete; no longer supported in VRE
XML monitor • XML: • eXtended Markup Language interface interface to monitor VRE’s internal state • Provides “X3D” DTD state info of VRE over network port • Context engine: • Student project (David Vismans) • “reasons” about VRE state and provides context feedback
Vtk • Vtk: • Visualization toolkit we know so well • VRE requires version Vtk 3.2 • current Vtk version is 4.x • the changes are minor but haven’t been done in all of VRE yet (only vtk2CAVE is ready for Vtk 4.x) • See also textbook and user’s guide • See http://public.kitware.com/VTK/
vtk2CAVE • vtk2CAVE: • Allows Vtk to be rendered in CAVElib applications • CAVElib versions < 3.1 need shared memory to access structures from other processes • Originally from Matthew Hall, loads of changes by us and others • CVS module: vtk2CAVENote: modules vtk2CAVE and SCAVI may soon be replaced by Denis’ work.
SCAVI • SCAVI: • Speech, CAVE and Vtk interaction • Allows interaction with Vtk actors using voice, wand, joystick and buttons • Uses CAVETalk: • Speech recognition server with support for dynamic vocabularies • Requires ViaVoice: speech recognition engine from IBM • See also http://www.science.uva.nl/~robbel/SCAVI/ • CVS module: scavi
NT • NT: • Network Transfer facility • Communication with lattice Boltzmann simulation code (LBE) using CAVERNUS • Provides geometry and parameters to LB simulation • Provides velocity, pressure, shear stress fields to VRE • Number of techniques to increase network performance • CVS module: NT
Flow Fish • FFVis: • Interactive flow field visualization • Glyphs, streamlines • Student project (Hans Ragas) • CVS module: ffvis
CAVElib • CAVElib: • VR output devices support (displays) • VR input device support (trackers, manipulators) • Versions prior to 3.1 used fork(), version 3.1 and later use threads • Commercial, licensed: see http://www.vrco.com/ • We currently have one “full” and one “simulator” license; if someone is using a license, no one else can! • See also CVS module: cruz • See /usr/local/CAVE on Linux systems
OpenGL, X windows • OpenGL: • (accelerated) 3D graphics rendering • On the Linux PCs, we use ASUS graphics cards and hardware accelerated OpenGL drivers from nVidia (http://www.nvidia.com/) • See http://www.opengl.org/ • See also paper: “VR on commodity hardware” • See also CVS module: cruz • X Windows: • Windowing support
Understanding VRE How to find your way through the sources
Understanding VRE • Complexity increased over time • VRE’s design isn’t pretty (understatement) • Take it one step at a time, don’t panic • Use the source: • Main.C usually a good place to start (init and exit) • MainLoop.C contains application main loop • Many components execute in different threads; see Threads.C
Multithreaded design • Most “independent” components execute in separate threads • this increases responsiveness; very important in immersive virtual environments • communication between threads through shared memory and semaphores
Components in VRE • Most components come from separate CVS modules, others are in subdirectories • See the sheets on “Building VRE” for more info on the CVS modules • For more info on CVS, see CVS module: scssoft (catch-22?). On a Unix system, type:cvs -d /home/robbel/.cvsroot checkout scssoft
Extending/changing VRE • The following applies to the VRE sources only • the ones in VRE/src and below • Check the README files in the CVS modules for other components • In general: • rebuild and install the module from the VRE/module-name directory (“make; make install” should suffice) • type “make install“ in the VRE directory
Extending/changing VRE • When you even consider changing something in VRE: • first type “make depend” in the VRE directory; if you don’t, your changes may not be included in the new binary • After each change, go to the VRE directory and type “make install” • This rebuilds what is necessary and installs the new binary
Adding a new source file • Add the name of the source file to VRE/src/Makefile.in • reconfigure:cd VRE ./config.status • rebuild and installmake depend make install
Committing your changes • If you fixed something/added a new feature, make the change available to others: commit it into CVS!!! • Go to the VRE directory • If you added new files, type “cvs add filename” • Type “cvs commit” • please follow the instructions; add a description on why you committed the change - this will be emailed to others working on VRE
Including changes by others • If anyone commits changes into the VRE CVS module, you will get an email with a description • To include these changes in your own sources: • Go to the VRE directory • Typecvs update ./config.status ; make depend ; make install