|
OpenMOIV Architecture
The
OpenMOIV
architecture is almost identical to SGI
Molecular Inventor™ structure. Our
library follows the Open
Inventor scene graph philosophy. Most
improvements have been developed over original Molecular Inventor
classes, although we have created some to facilitate and simplify
some new tasks.
All
changes have tried to avoid the need to modify applications
based on Molecular Inventor library. It is not necessary to
set new parameters, nor even to add new nodes to the scene
graph. To use OpenMOIV
with Molecular Inventor-based applications it only requires
to rebuild the application. No change of code is required,
with the corresponding time saving. One exception to this
source-code compatibility is the User Interface support: if
you use the original ChemUI
class, you need to remove or change all references to it in
your code. However, in order to be able to take advantage
of our improvements it is necessary to change some variable
members of the original classes, although the scene graph
will remain unchanged.
New classes
This UML diagram shows the new OpenMOIV classes :
The
classes within the rectangles have been added to the library.
The red rectangle contains classes that store residue information
and the blue rectangle contains classes that manage structures
to render the primitives. The green rectangle contains classes
for importing standard molecular file formats.
Most of classes are used internally by the
library so the programmers mustn't worry about them. The
programmers can add residues to their scenes by using the
class SbResidue.
Minor changes
The ChemUI was X-Windows dependent and it has been removed
so that the library becomes fully platform independent. The
node was a user-interface class that manipulated parameters
in ChemDisplayParam.
The font cache manager (ChemBitmapFontCache) of Molecular
Inventor has also been modified because the font support was
dependent on the SGI Font Library (libFL). Now, the fonts
are created using the corresponding windowing extensions (wgl,
glx, etc.). It is foreseen to adapt the font manager so that
it uses agl extensions in MacOS X. If your platform does not
implement these extensions, the library allows to use a homemade
hard-coded font, so you do not worry too much about it, even
you can go on using the FL library if you want.
Simplest
scene graph
In
this paragraph, we remind you which nodes the simplest scene
graph of Molecular Inventor-based applications must have and
how they are in OpenMOIV
(red nodes are group nodes, blue nodes are shape nodes and
light blue nodes are property nodes):
The
abstract class ChemBaseData is the container of all the molecular
scene database (atoms, bonds and residues). The ChemDisplayParam
stores the rendering properties for the scene (atoms and bonds
drawstyles, residues drawstyles, atmospheric effects as fog,
etc.). The ChemUI node is a user-interface node that manipulates
various parameters in ChemDisplayParam. The ChemRadii node
contains information related with the radii of the atoms.
The ChemColor node contains information related to the colors
used to represent the molecular entities as color tables,
coloration types, etc. The ChemDisplay node draws the scene
based on the parameters of the ChemDisplayParam node.
All these nodes must be added to a group node (for example
a SoSeparator node).
In
OpenMOIV,
the simplest scene graph must have the following nodes:
Our
simplest scene graph does not contain either ChemUI or ChemBaseData.
ChemUI has been removed (consult minor changes section) and
ChemBaseData has been replaced by ChemData (or derived classes),
to manage residues information.
Molecular
entities selection
The
selection of all molecular entities (including residues) creates
a ChemSelection node and adds the required nodes to it, which
have been explained previously. This is the usual mechanism
of Molecular Inventor-based applications and therefore it
has been maintained.
Importing/Exporting
3D molecular database
OpenMOIV
supports PDB and MOL standard file formats. You can import
these formats using an instance of ChemPDBImporter or ChemMOLImporter
classes. PDB and MOL exporters can be added to the library
in the future.
For
further information, contact us.
Last update of this page: 08-03-2004
|