VRE - The Volume Rendering Engine
VRE is a volume data visualisation engine with high extendability allowing high code-reuse at the same time. It's cross-platform (Windows/Linux) released under GPLv3 license so feel free to try it. Together with the engine we provide some basic plugins and also develop a GUI application. Engine also allows (yet, currently it's unsupported) to do a remote rendering - using inexpensive client with powerful visualisation server.
Architecture overview
Engine alone only provides interface and integrates functions of other building blocks - plugins. From a user point of view, all relevant functionality is implemented in the plugins. There are 3 types of plugins where for successful rendering one of each type is required.
- Loader provides layer between a volume data file and an engine. Provides unified interface for reading the file.
- To work with data this have to be stored in memory, being it the main memory or memory of the graphics card. Builder plugin implements some storage mechanism, e.g. storing the data as a 3D texture.
- Code that actually renders the data is placed in renderer plugins. Each renderer can choose how it want to have the data stored (which builder plugin to use) and is responsible for creating a rendered image according to specified scene settings.
Apart from the plugins engine merely connects things together giving user an interface through which a virtual scene can be set up. Scene consist of elements defining camera settings, lights, mapping of the optical properties on voxels (transfer function), etc. For a certain scene user selects a renderer to use and data volume to render. After that rendered image can be obtain either as a memory buffer which can be saved to a disk or as an output to an OpenGL context.
Graphical user interface
No user interface is provided by the engine being it merely a library with an API. However we develop a Qt4 widget-set aiming at covering all functionality of the engine. It is still in early development phase so expect the now limited functionality to expand fast. From the widget-set we also build a GUI application serving as a basic volume visualisation tool. Its maturity is strongly related to previously mentioned widget-set though.