Immersive Visualization / IQ-Station Wiki
This site hosts information on virtual reality systems that are geared toward scientific visualization, and as such often toward VR on Linux-based systems. Thus, pages here cover various software (and sometimes hardware) technologies that enable virtual reality operation on Linux.
The original IQ-station effort was to create low-cost (for the time) VR systems making use of 3DTV displays to produce CAVE/Fishtank-style VR displays. That effort pre-dated the rise of the consumer HMD VR systems, however, the realm of midrange-cost large-fishtank systems is still important, and has transitioned from 3DTV-based systems to short-throw projectors.
Difference between revisions of "VMD"
m (fixed case of export & small update to development issues) |
m (Preparations for a section on HPC usage.) |
||
Line 1: | Line 1: | ||
{{TOCright}} | {{TOCright}} | ||
'''Visual Molecular Dynamics (VMD)''' | |||
[http://www.ks.uiuc.edu/Research/vmd/ VMD] is a good visualization tool for visualizing large molecular systems (typically used for large biomolecular systems). VMD has a long history of being interfaced to immersive technologies, including haptic devices and CAVE VR displays. | [http://www.ks.uiuc.edu/Research/vmd/ VMD] is a good visualization tool for visualizing large molecular systems (typically used for large biomolecular systems). VMD has a long history of being interfaced to immersive technologies, including haptic devices and CAVE VR displays. There is also a section on the usage of VMD for HPC systems. | ||
=Immersive Mode VMD= | |||
Information specific to the usage and setup of VMD for immserive systems such as the | |||
[http://en.wikipedia.org/wiki/Cave_automatic_virtual_environment CAVE virtual reality display]. | |||
==How to Run VMD in Immersive Mode== | ==How to Run VMD in Immersive Mode== | ||
Line 91: | Line 94: | ||
</BLOCKQUOTE> | </BLOCKQUOTE> | ||
=General Usage= | |||
==Usage Tidbits== | ==Usage Tidbits== | ||
Line 121: | Line 124: | ||
* '''DONE:''' Need to figure out how to pass <CODE>RenderInfo *</CODE> argument to <CODE>FreeVRScene::draw()</CODE> in order to add the navigation controls to where the virtual world is rendered. | * '''DONE:''' Need to figure out how to pass <CODE>RenderInfo *</CODE> argument to <CODE>FreeVRScene::draw()</CODE> in order to add the navigation controls to where the virtual world is rendered. | ||
* Need to go over the source code in <CODE>P_GrabTool.C</CODE> so that I can know how to improve it (and I'll add comments as we go.) My goal is to avoid the use of Euler angles, since there are gimble lock issues in the interface. | * Need to go over the source code in <CODE>P_GrabTool.C</CODE> so that I can know how to improve it (and I'll add comments as we go.) My goal is to avoid the use of Euler angles, since there are gimble lock issues in the interface. | ||
* Consider adding a <CODE>grab-world</CODE> tool that allows the entire world to be grabbed with the wand. '''An alternative was done — an always active "Grab-World operation.''' | * Consider adding a <CODE>grab-world</CODE> tool that allows the entire world to be grabbed with the wand. '''An alternative was done — an always active "Grab-World" operation.''' | ||
* Determine whether there is a mechanism to enable an X11 window always-on-top property for the FLTK control menu. | * Determine whether there is a mechanism to enable an X11 window always-on-top property for the FLTK control menu. | ||
=HPC Usage of VMD= | |||
This section describes specific usage and compiling issues related the VMD | |||
on HPC systems such as the Indiana University [http://kb.iu.edu/data/bcqt.html BigRedII supercomputer]. |
Revision as of 15:48, 7 April 2014
Visual Molecular Dynamics (VMD)
VMD is a good visualization tool for visualizing large molecular systems (typically used for large biomolecular systems). VMD has a long history of being interfaced to immersive technologies, including haptic devices and CAVE VR displays. There is also a section on the usage of VMD for HPC systems.
Immersive Mode VMD
Information specific to the usage and setup of VMD for immserive systems such as the CAVE virtual reality display.
How to Run VMD in Immersive Mode
If VMD with the FreeVR interface is installed and properly configured, follow these steps to run in immersive mode:
% vmd -dispdev freevrforms ../proteins/brH.pdb
- In order to grab and move an object, the
grab
tool must be initialized:- →
Graphics
→Tools
- →
Create
agrab
style tool - set
Position
toFreeVRTracker
- set
Buttons
toFreeVRButtons
- The wand avatar will now appear in the scene
- →
- Now touch an object with the wand avatar and press
Button-1
to move it.
How to Build VMD w/ Immersive features
This section specifically instructs on how to compile VMD using the FreeVR immersive interface library.
- Install missing dependencies
- Commonly needed packages include:
- tcl-devel (8.x -- perhaps 8.4 or greater)
- tk-devel (8.x -- perhaps 8.4 or greater)
- fltk-devel
- netcdf-devel
- Commonly needed packages include:
- Download the latest source (version 1.9.1 as of this writing [04/09/12])
- NOTE: there is a (free) registration process required
- NOTE: the pre-built packages may not contain the Immersive features
- Untar the source ball
- E.g.
% tar -zxf vmd-1.9.1.src.tar.gz
- E.g.
- Compile the plugins
% cd plugins
% make <architecture>
— E.g. LINUXAMD64% export PLUGINDIR=`pwd`/../vmd-<version>/plugins
% make distrib
- Configure VMD
% cd ../vmd-<version>
% $EDITOR configure.options
- Enter a list of desired options -- make sure to include
FREEVR
- A sample list is:
LINUXAMD64 OPENGL FREEVR FLTK TK TCL PTHREADS
- Enter a list of desired options -- make sure to include
% ./configure
- Compile VMD
% export PLUGINDIR=`pwd`/plugins
— only if you're in a different shell from where this happened in step 4% cd src
% $EDITOR Makefile
- NOTE: you will need to edit the values for
INCDIRS
andLIBDIRS
to point to the correct directory for the FreeVR includes and library.
- NOTE: you will need to edit the values for
* make veryclean
% make -j 8
- NOTE: you will get several compiler warnings. As long as they are only warnings, you should be fine.
- Install VMD
% sudo make install
At this point you can now run VMD in standard desktop mode.
- For example:
% vmd ../proteins/brH.pdb
How to Configure VMD for Immersive displays
There are two stages of configuration required for the overall configuration of VMD for immersive displays. The first step is to configure FreeVR for the specific hardware setup of the immersive facility. This is explained in the FreeVR documentation. The second stage is to link the FreeVR inputs to VMD "sensors devices".
VMD "sensor devices" are specified in the .vmdsensors
file.
The format of this file is described in the VMD User's Guide: Tool Window documentation.
- Create a
.vmdsensors
file:- Here is a sample
.vmdsensors
file for use with FreeVR:
- Here is a sample
### ### Configuration for the FreeVR trackers ### device freevrtracker freevrtracker://local/freevr scale 0.5 offset 0.9 -4.0 -1.0 device freevrbuttons freevrbuttons://local/freevr:0,1,2,3 ## if you have more than one wand.. #device vrtracker2 freevrtracker://local/freevr:1 #scale 1.0 #offset 0.9 -4.0 -1.0
General Usage
Usage Tidbits
- To change the overall world transformation via the Tcl command shell, try these options:
scale to .5
translate to 0 0 -3
- To place the FLTK menu interface on a screen separate from the immersive displays, use the
DISPLAY
environment variable.
Usage Issues
[NOTE: these issues are from tests with VMD version 1.9.2a15.]
- I still need to figure out the proper scale and offset (this would/will be easier if we can avoid the use of Euler angles in
P_GrabTool.C
). - The
grab
tool only grabs one molecule object at a time, so multiple molecules won't stay together. - The
grab
tool requires that the wand avatar be touching an object before it can be moved. - The
rotate
tool does not work - I don't know how to use the
joystick
tool — does it work with the VR interfaces? - I need to learn whether (and if so what) the command-line and/or tcl-shell options for setting up the graphics tools w/o the need for the interactive menu.
- There are gimble lock issues when the wand points up or down.
- The material colors of some/all of the objects in the scene are not always present.
- Changes in representations seem to only have an effect on a single screen.
Development Issues
This section is for issues that are of interest to those working directly on the VMD code-base as it relates to immersive interfaces.
- DONE: Need to figure out how to pass
RenderInfo *
argument toFreeVRScene::draw()
in order to add the navigation controls to where the virtual world is rendered. - Need to go over the source code in
P_GrabTool.C
so that I can know how to improve it (and I'll add comments as we go.) My goal is to avoid the use of Euler angles, since there are gimble lock issues in the interface. - Consider adding a
grab-world
tool that allows the entire world to be grabbed with the wand. An alternative was done — an always active "Grab-World" operation. - Determine whether there is a mechanism to enable an X11 window always-on-top property for the FLTK control menu.
HPC Usage of VMD
This section describes specific usage and compiling issues related the VMD on HPC systems such as the Indiana University BigRedII supercomputer.