Visualization Library
Encyclopedia
Visualization Library is an open source C++ middleware for 2D/3D graphics applications based on OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

 4, designed to develop portable applications for the Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, GNU/Linux/X11 and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 operating systems.

Design goals

Visualization Library was designed to:
  1. Implement an intuitive, thin and portable C++ wrapper around OpenGL 4.
  2. Be fully compatible with older versions of OpenGL (1.x, 2.x and 3.x).
  3. Deliver the features and performances of modern GPUs also to non-gaming applications, like virtual reality, scientific and medical visualization, simulators, training and so on.
  4. Provide a generic and fine-grained framework that can be used to assemble customized rendering techniques.
  5. Avoid the architectural limitations of the uber-scene-graph paradigm.
  6. Give to the programmer as much control as possible while taking care of the dirty details.

Internal design

Visualization Library design is based on algorithmic and data structure specialization and separation, unlike many other 3D frameworks part of the so called "uber scene graph" family, that is, those 3d engines that keep all the rendering information in a single hierarchical structure. Thus, Visualization Library uses different data structures (possibly hierarchical) to manage each particular domain of the rendering pipeline.
For example the transform tree is kept in a separate tree graph data structure and the objects part of the scene ("Actors" in Visualization Library parlance) can freely refer to a node of the transform tree.
Actors are kept in their own scene partitioning data structure from which their visibility is tested against the view frustum and from which eventually they are extracted at rendering time to be part of the rendering queue. This allow VL to be independent from, and take advantage of, virtually any type of scene management technique, such as PVS, portal/sector, KdTree, quad trees, octrees etc.
Shaders are also a concept that is kept independent from the rest of the logic and do not require any hierarchical data structure to be used by an Actor. However VL provides a ShaderNode class, as a high level service, that allows the user to update and manage Shaders in a hierarchical way using inheritance rules similar to the ones commonly available in uber-scene-graph based frameworks.
The rendering pipeline follows a similar modular approach, so that highly customized rendering techniques can be implemented by assembling and reusing VL components.

Main features

  • OpenGL Support: 1.x, 2.x, 3.x, 4.x.
  • OS Support: Windows XP, Vista, 7, Mac OS, Linux
  • GUI bindings: Win32, MFC, Qt4, wxWidgets, SDL, GLUT.
  • 3D file formats: 3DS, OBJ, PLY (binary and ascii), STL (binary and ascii), AC3D, MD2. More can be plugged in.
  • Image file formats supported: JPG, PNG, TGA, TIFF, BMP, DDS, DICOM. More can be plugged in.
  • Volume visualization: raycast volume rendering (transfer functions, isosurface etc.), screen aligned slices, efficient marching cubes implementation.
  • Texturing: 1D/2D/3D textures, cubemaps, multi-texturing, texture arrays, texture rectangles, render to texture, texture coordinate generation, texture combiners, mipmapping and mipmaps generation, anisotropic filtering, compressed textures, depth textures, integer textures, non normalized textures, texture buffers, multisample textures.
  • OpenGL Shading Language 1.x to 4.x support including geometry and tessellation shaders.
  • Automatic transparency management.
  • Automatic render state sorting and setup minimization.
  • Automatic management of Vertex Buffer Objects.
  • Extensive framebuffer objects support.
  • Provided scene managers: generic hierarchical volume tree, KdTree, portal-based scene graph.
  • High quality unicode text rendering and text manipulation functions and classes.
  • GLSL based C++ advanced vector/matrix library.
  • Geometry optimization functions, triangle reduction/decimation, double vertex removal etc.
  • Molecular visualization.
  • Extrusion generation.
  • Linear and Catmull-Rom path interpolation.
  • Bicubic Bézier surfaces.
  • Edge and silhouette enhancement.
  • Virtual file system: abstract file system that transparently allows access to disk files, memory files, .zip files and .gz files.
  • Extensible resource system to support new resource types and file formats.
  • Lots of documentation and examples.

Development status

The first public release of Visualization Library was on May 7, 2007.
Visualization Library is currently at its second stable release, VL 2011.05.1140, which follows the first one, VL 2009.07.640. While the design remained essentially the same the latest stable release differs from its predecessor mainly for: supporting OpenGL 3 and 4 and in particular tessellation shaders, double precision uniform variables, new texture formats such as multisample textures and texture objects, extensive framebuffer object support and a better tuning for applications that make heavy use of GLSL
GLSL
OpenGL Shading Language , is a high-level shading language based on the syntax of the C programming language...

, among many other enhancements.

See also

  • Scientific visualization
    Scientific visualization
    Scientific visualization is an interdisciplinary branch of science according to Friendly "primarily concerned with the visualization of three-dimensional phenomena , where the emphasis is on realistic renderings of volumes, surfaces, illumination sources, and so forth, perhaps...

  • Open Inventor
    Open Inventor
    Open Inventor, originally IRIS Inventor, is a C++ object oriented retained mode 3D graphics API designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency.-Early history:...

  • OpenGL Performer
    OpenGL Performer
    OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is a commercial library of utility code built on top of OpenGL for the purpose of enabling hard real-time visual simulation applications. OpenGL Performer was developed by SGI which continues to...

  • OpenGL
    OpenGL
    OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

  • VTK
    VTK
    The Visualization Toolkit is an open-source, freely available software system for 3D computer graphics, image processing and visualization. VTK consists of a C++ class library and several interpreted interface layers including Tcl/Tk, Java, and Python. Kitware, whose team created and continues to...

  • OpenSceneGraph
    OpenSceneGraph
    OpenSceneGraph is an open source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling....

  • OGRE 3D
  • Irrlicht Engine
    Irrlicht Engine
    Irrlicht is an open source 3D engine written in C++. It is cross-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including Xbox, PlayStation Portable, SymbianOS and iPhone.Irrlicht is known for its small size...

  • Unreal Engine
    Unreal Engine
    The Unreal Engine is a game engine developed by Epic Games, first illustrated in the 1998 first-person shooter game Unreal. Although primarily developed for first-person shooters, it has been successfully used in a variety of other genres, including stealth, MMORPGs and RPGs...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK