The Graphic User Interface in SOFA
I) An overview of the GUI
II) Structure
III) Viewers
IV) QtOgreViewer
An Overview of the GUI
The main
program is divided in two main parts, a rendering window and a control
panel. A slider between them sets their
dimension.
Common Interactions:
ANIM: launch the Simulation. The text field, DTsets the step of time used during the simulation.
STEP: the simulation will compute its state at the time: t+DT.
Reset Scene: reset the Simulation to the initial time, t=0.
Reset View: set your camera at initial configuration found in a view file, or default configuration.
Save View: keep in memory the position and orientation of the camera, for the next time you will load the scene.
Save Screenshot: take a picture of the current scene.
Direct interaction with the scene is possible. To do so, maintain SHIFT button pressed and click on a collision model present in the scene; A Pick Interactor will be created, and attached to the picked collision model, if any, with a spring.
If you release the mouse button first, the spring is removed.
If you release the SHIFT button first, the spring is fixed and exists until you pick another point in the scene.
Several tabs give more information
about the current scene:
This images were taken for the scene shown above.
- depending on the viewer, you can control what is displayed, and the
way it is.
- statistical outputs during the simulation (position and velocity for
each elements, time passed at each branch of the graph, gnuplot files)
- the graph of the scene, with all the nodes. You can export this graph
into a nice png file.
- the last tab, Viewer gives the name and information about
the possibilities of the current viewer, and the shortcuts.
Double clicking on a node allows you to modify several values and
change dynamically the simulation (here, the TetrahedronFEMForceField
node). In some cases, you need to press the update
button
to apply the changes.
Structure
The main interface uses a Qt
environment (Qt3.3 for Linux and Qt4 for Windows). The Main window,
providing all the interactions possible with the simulation,was created
using QtDesigner. The RealGUI contains the viewer which can be selected
directly in the main window. The possible choices depends on the
configuration file, sofa-default.cfg
.
The RealGUI gets a pointer to the root of the scene graph, and controls
the application by calling class
sofa::simulation::tree:Simulation
.
The RealGUI uses an internal timer to repeatedly call
method sofa::simulation::tree:Simulation::animate(GNode* root, double
dt)
and then update the viewer.
To select the
viewers:
sofa-default.cfg located in
your Sofa main directory allows to define what kind of viewer you are
willing to have.
By commenting (adding a# in front of the line) or uncommenting
(removing the #) lines, you can allow multiple kind of viewer.
For example, if you want to have the choice to render the scene with
QtGLViewer and QtOgreViewer, just modify sofa-default.cfg as below:
# DEFINES += SOFA_GUI_QT
DEFINES += SOFA_GUI_QTOGREVIEWER
DEFINES += SOFA_GUI_QGLVIEWER
Then, in the main window, you select the kind of viewer you
want. Qt will appear in gray, whereas QGLViewer and Ogre will be
available.
Warning, you must reload the scene when this change is made!
The Viewers available now are:
QtViewer: uses openGL, derives a QGLWidget in order to be embedded within Qt. This class will probably not be maintained. Use QtGLViewer instead.
QtGLViewer: uses the library
QGLViewer. Provides lots of functions to navigate through the scene.
More information at QGLViewer
Website.
QtOgreViewer: Embed Ogre within a
Qwidget. Allows to get great visuals, through an intensive use of
shaders, materials.
Shadows are provided, but all the controls (show the mechanical
objects, force fields...) are disabled.
Warning: Ogre is not provided by Sofa, you have to previously install
Ogre on your computer.
The support works with Windows, Linux.
- For Windows, the easiest way to proceed is to download and install
the SDK.
- For Linux, you have to compile from the source. If Ogre's library
aren't installed in the default directory /usr/local/lib/Ogre
then, you have to set the
correct path in YourSofaDirectory/share/config/plugins_unix.cfg
To get it: Ogre
Website
To
use this viewer, you must have Ogre installed on your computer.
The configuration files are located in: YourSofaDirectory/share/config/. plugins.cfg describes the plugins used by Ogre for
Windows, and plugins_unix.cfg for... Linux.
By creating a .scene file with the same name as the simulation, you can
provide additional models, lights, visuals to the simulation( see Ogre
documentation for mode details ). This won't interact with Sofa, but
allows you to get a better render.
Additional textures, materials, shaders... in Ogre, have to be put in YourSofaDirectory/share/textures or YourSofaDirectory/share/materials or YourSofaDirectory/share/shaders ... They are loaded at the start-up of the viewer.