lance arsenault john kelso ron kriz virginia tech blacksburg, virginia
TRANSCRIPT
Lance ArsenaultJohn KelsoRon Kriz
Virginia TechBlacksburg, Virginiawww.diverse.vt.edu
www.diverse.vt.edu
April 18, 2001
The only thing you should say before giving a demo is “watch
this”…
www.diverse.vt.edu
April 18, 2001
The DIVERSE group
Lance Arsenault• Assistant research professor, Virginia Tech
dept. of Engineering, Science and Mechanics
John Kelso• Research associate, Virginia Tech’s
University Visualization and Animation Group
Ron Kriz• Associate professor, Virginia Tech dept. of
Engineering, Science and Mechanics
evicendependentirtualnvironments-econfigurable,calable,xtensible
www.diverse.vt.edu
April 18, 2001
Motivation
Toolkits and libraries exist, but most have at least one of these problems:• follow the “center of the universe” paradigm• are very expensive• are proprietary• can’t be extended or modified
www.diverse.vt.edu
April 18, 2001
Who uses or supports DIVERSE?
US Navy:• 3d target-acquisition visualization for submarines• Dynamic ship-crane project
Lockheed-Martin:• Extending DIVERSE with collaborative tools.
NIST:• Haptic device for probing data set densities
www.diverse.vt.edu
April 18, 2001
Overview
• C++ API
• Free, Open source• LGPL libraries, GPL applications
• SGI IRIX and GNU/Linux• Support for all three IRIX binary types
www.diverse.vt.edu
April 18, 2001
Goals
Modular• Only use the parts you need
Flexible• Easy to reconfigure and extend
Same program works on all hardware• No changes to application
www.diverse.vt.edu
April 18, 2001
We always tried to keep this in mind…
Stay out of the user’s way• They know better than we do how to do their
job
Augment instead of replace• Build on existing packages, don’t reinvent
new ones
Works by default• Lowest-common-denominator defaults work
anywhere
www.diverse.vt.edu
April 18, 2001
Two separate packages
DTK- the DIVERSE ToolKit• Contains classes not related to graphics• A standalone package in its own right
dgiPf- the DIVERSE graphics interface for OpenGL Performer™ • Built using DTK and Performer
www.diverse.vt.edu
April 18, 2001
DTK DIVERSE ToolKit
Library• C++ classes used to build everything else
Server• Manager process
Services• Interfaces to hardware devices or virtual surrogates
Clients• Programs that control and interact with the server
www.diverse.vt.edu
April 18, 2001
DTK
Library of C++ classes provide:• Remote shared memory• Data queuing• Utilities, such as an affine matrix class• Dynamically Shared Object (DSO) loading:
• Small separately compiled programs• Reconfiguration with recompiling
• Loaded at run-time• Configurations can be changed while program is
running
www.diverse.vt.edu
April 18, 2001
DTK
Server• Manages services, memory, queues • Run as a regular process or as a true Unix daemon• Lightweight select server• Multiple simultaneous copies can run using different
ports
www.diverse.vt.edu
April 18, 2001
DTK
Services• Usually DSOs (shared libraries loaded in run-time)• Can be loaded and unloaded without restarting server• Each service interfaces to a specific device• Devices can be real hardware or software emulations
www.diverse.vt.edu
April 18, 2001
DTK
Clients• Take the form of installed application
programs- examples:• Control and query server
• Start/stop on specified port• Load/unload services
• Connect to remote shared memory of other hosts• Read and write data from remote shared memory• Write remote shared memory to Unix System V
shared memory in VRCO trackd™ compatible format
www.diverse.vt.edu
April 18, 2001
dgiPf DIVERSE Graphics Interface for
PerformerUses DTK and Performer to provide:• Configuration via DSOs• Display-independent graphics• Coordinate systems and scenegraph• Viewing frusta and stereo parallax• Generic input devices• Navigation• New Performer node types
www.diverse.vt.edu
April 18, 2001
dgiPf
Configuration via DSOs:• Used to specify:
• Graphics configurations• Available input devices• Navigation techniques• Interaction techniques• Minor modifications- tweak files
• DSOs can load other DSOs, so groups can be created
www.diverse.vt.edu
April 18, 2001
dgiPf
Configuration via DSOs, continued:• Application can define default set
• “works by default”
• Default can be overridden by user• “stay out of the user’s way”
www.diverse.vt.edu
April 18, 2001
dgiPf
Display-independent graphics• Same program runs on systems from a
CAVE™ to a GNU/Linux laptop without modification• Display configurations are usually DSOs
• Doesn’t prevent display-dependent programs from being written if desired
www.diverse.vt.edu
April 18, 2001
dgiPf
Display-independent graphics, continued• Simulator- allows programs to simulate an
immersive environment on a desktop• Virtual head (locator) and wand (valuator and buttons)
• Can be displayed and positioned• Useful as immersive development/debugging tool
• Can jump outside of ether world and look back in• Loaded as a DSO
• CAVE Simulator• Objects displayed at physically correct size in
simulator
www.diverse.vt.edu
April 18, 2001
dgiPf
Three coordinate systems:• dgiPf
• normalized [ -1.0 1.0 ]• ether
• fixed model units • like 19th century physics
• world• navigated model units
• ether + current navigational transformation
As a world moves through the ether it takes its frame of reference along with it
www.diverse.vt.edu
April 18, 2001
dgiPf
dgiPf coordinate cube
www.diverse.vt.edu
April 18, 2001
dgiPf
Immersive systems can specify coordinates in physical units• Models are displayed with correct physical
size regardless of immersive display size
A meter stick should appear to be a meter long
www.diverse.vt.edu
April 18, 2001
dgiPf
default scenegraph
www.diverse.vt.edu
April 18, 2001
dgiPf
Viewing frusta• Symmetric
• Typically desktop• Base of frusta moves with user’s view
• Asymmetric• Typically immersive• Base of frusta is fixed• Point moves with view• Always perpendicular to base
www.diverse.vt.edu
April 18, 2001
dgiPf
Stereo parallax• Automatically generates correctly positioned
stereo pairs based on view position, interoccular distance and orientation.
• Symmetric frusta can also specify a convergence factor
www.diverse.vt.edu
April 18, 2001
dgiPf
Generic input devices• Locator- a position and orientation• Valuator- an array of continuous values• Button- a 32 bit mask• Keyboard- returns “X” key codes• Pointer- returns normalized cursor position
within a window
www.diverse.vt.edu
April 18, 2001
dgiPf
Input devices, continued• Real or virtual
• Application unaware of data’s hardware
• Local or remote• Application unaware of data’s source
www.diverse.vt.edu
April 18, 2001
dgiPf
Input devices, continued• Any device can be polled or queued
• Polled- reads latest value• Typically used for continuous data, such as
locators, valuators and pointers• Queued- all values are save in a circular queue
• Typically used for discrete data, such as buttons and keyboards
www.diverse.vt.edu
April 18, 2001
dgiPf
Navigation• Navigation technique can be encapsulated in
a DSO• Use mouse when on desktop• Use wand and joystick when in CAVE
• Independent of and transparent to, application• By loading a navigation DSO, navigation can be
added to a static application
www.diverse.vt.edu
April 18, 2001
dgiPf
Navigation, continued• Multiple navigators can be loaded
• Can switch between them to:• Change interaction technique• Change position in the world (portal effect)
• Navigation based on the dgiPfTransform class:• Provides affine transformation on a scenegraph
node which can be placed anywhere in scenegraph
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes:• dgiPf• dgiPfAugment• dgiPfDisplay
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPf• Single instance (singleton)• Application’s entry point into dgiPf system• Factory of other objects• Loads DSOs in form of dgiPfAugment objects
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPfAugment• Adds functionality without program
modification• Four entry points, invoked by dgiPf object
• Before and after pfConfig• Before and after pfFrame
• return values tell dgiPf how to proceed
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPfAugment• dgiPf DSOs are objects based on this class, or
classes derived from this class• Example of classes based on dgiPfAugment:
• dgiPfInput• dgiPfNav• dgiPfTransform• dgiPfTweakFile
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPfDisplay• Singleton created by dgiPf object• Creates scenegraph• Sets up coordinate systems• Usually configured by DSO
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPfDisplay, continued• Manages frusta, parallax and views• Factory of other objects based on
configuration• Structures Performer classes
www.diverse.vt.edu
April 18, 2001
dgiPf
C++ classes: dgiPfDisplay, continued
www.diverse.vt.edu
April 18, 2001
dgiPf
New Performer nodes• Data-driven programming as opposed to
object-oriented methods. Examples include:• dgiPfDCS
• Update a node’s transformation by modifying a variable
• dgiPfToggle• Change a node’s visibility by modifying a bit-
mask
www.diverse.vt.edu
April 18, 2001
dgiPf
Distribution includes examples:• Several dozen small programs to illustrate
specific features of dgiPf• Written so they can easily be moved and
modified
www.diverse.vt.edu
April 18, 2001
dgiPf
Diversifly: a dgiPf application• Loads and navigates through model files• No programming required
www.diverse.vt.edu
April 18, 2001
Future directions
dgiPf• head’s up displays (summer 2001)• hooks to VTK (summer 2001)• more navigation and simulation techniques
(summer 2001)
www.diverse.vt.edu
April 18, 2001
Future directions
DTK• collaborative tools (fall 2001)• motion queuing (fall 2001)• new devices
• Phantom haptic device (fall 2001)• Xwand (summer 2001)• PocketPC (summer 2001)
www.diverse.vt.edu
April 18, 2001
Want to know more?
Visit www.diverse.vt.edu and• Download and try it out• Read the friendly manuals
Contact:
Lance Arsenault ([email protected])
John Kelso ([email protected])
Ron Kriz ([email protected])
www.diverse.vt.edu
April 18, 2001