Articulo de referencia

Biblioteca de visualización

Visualization Library ( VL ) es un middleware de código abierto en C++ para aplicaciones gráficas 2D/3D basado en OpenGL 4, diseñado para desarrollar aplicaciones portátiles par...

Visualization Library ( VL ) es un middleware de código abierto en C++ para aplicaciones gráficas 2D/3D basado en OpenGL 4, diseñado para desarrollar aplicaciones portátiles para los sistemas operativos Microsoft Windows , Linux y Mac OS X.

Objetivos de diseño

La biblioteca de visualización fue diseñada para:

  1. Implementar una capa de abstracción en C++ intuitiva, ligera y portátil para OpenGL 4.
  2. Debe ser totalmente compatible con versiones anteriores de OpenGL (1.x, 2.x y 3.x).
  3. Ofrecer las características y el rendimiento de las GPU modernas también a aplicaciones que no sean de juegos, como la realidad virtual, la visualización científica y médica, los simuladores, la formación, etc.
  4. Proporcionar un marco genérico y detallado que pueda utilizarse para ensamblar técnicas de renderizado personalizadas.
  5. Evite las limitaciones arquitectónicas del paradigma del supergrafo de escena.
  6. Otorgue al programador el mayor control posible, sin descuidar los detalles técnicos.

Diseño interno

El diseño de Visualization Library se basa en la especialización y separación de algoritmos y estructuras de datos , a diferencia de muchos otros frameworks 3D que forman parte de la denominada familia de " grafos de escena superiores ", es decir, aquellos motores 3D que almacenan toda la información de renderizado en una única estructura jerárquica. Por lo tanto, Visualization Library utiliza diferentes estructuras de datos (posiblemente jerárquicas) para gestionar cada dominio particular del proceso de renderizado.

Por ejemplo, el árbol de transformación se guarda en una estructura de datos de grafo de árbol separada, y los objetos que forman parte de la escena ("Actores" en la jerga de la Biblioteca de Visualización) pueden hacer referencia libremente a un nodo del árbol de transformación.

Los actores se almacenan en su propia estructura de datos de partición de escena, desde la cual se comprueba su visibilidad con respecto al frustum de visión y, finalmente, se extraen durante el renderizado para formar parte de la cola de renderizado. Esto permite que VL sea independiente de prácticamente cualquier técnica de gestión de escenas, como PVS, portal/sector, KdTree , quadtrees , octrees , etc. , y que pueda aprovecharla.

Los shaders son un concepto independiente del resto de la lógica y no requieren ninguna estructura de datos jerárquica para ser utilizados por un Actor. Sin embargo, VL proporciona una clase ShaderNode, como servicio de alto nivel, que permite al usuario actualizar y gestionar shaders de forma jerárquica mediante reglas de herencia similares a las que se encuentran habitualmente en los frameworks basados ​​en grafos de escena. El pipeline de renderizado sigue un enfoque modular similar, de modo que se pueden implementar técnicas de renderizado altamente personalizadas mediante el ensamblaje y la reutilización de componentes VL.

Características principales

  • Compatibilidad con OpenGL: 1.x, 2.x, 3.x, 4.x.
  • Compatibilidad con sistemas operativos: Windows XP, Vista, 7, Mac OS, Linux
  • Enlaces de interfaz gráfica de usuario: Win32, MFC, Qt4, wxWidgets, SDL, GLUT.
  • Formatos de archivo 3D: 3DS, OBJ, PLY (binario y ASCII), STL (binario y ASCII), AC3D, MD2. Se pueden añadir más.
  • Formatos de archivo de imagen compatibles: JPG, PNG, TGA, TIFF, BMP, DDS, DICOM. Se pueden añadir más.
  • Visualización de volumen: renderizado de volumen mediante raycasting (funciones de transferencia, isosuperficies, etc.), cortes alineados con la pantalla, implementación eficiente del algoritmo Marching Cubes .
  • Texturizado: texturas 1D/2D/3D, mapas cúbicos, multitexturizado, matrices de texturas, rectángulos de textura, renderizado a textura, generación de coordenadas de textura, combinadores de texturas, mipmapping y generación de mipmaps, filtrado anisotrópico, texturas comprimidas, texturas de profundidad, texturas enteras, texturas no normalizadas, búferes de textura, texturas multisample.
  • Compatibilidad con el lenguaje de sombreado OpenGL versiones 1.x a 4.x, incluyendo sombreadores de geometría y teselación.
  • Gestión automática de la transparencia.
  • Clasificación automática del estado de renderizado y minimización de la configuración.
  • Gestión automática de objetos de búfer de vértices.
  • Compatibilidad extensa con objetos de búfer de fotogramas.
  • Gestores de escena proporcionados: árbol de volumen jerárquico genérico, KdTree, grafo de escena basado en portal.
  • Funciones y clases de alta calidad para la representación y manipulación de texto Unicode.
  • Biblioteca avanzada de vectores/matrices basada en C++ y GLSL.
  • Funciones de optimización geométrica, reducción/diezmado de triángulos, eliminación de vértices dobles, etc.
  • Visualización molecular.
  • Generación por extrusión.
  • Interpolación de trayectorias lineal y de Catmull-Rom.
  • Superficies de Bézier bicúbicas.
  • Realce de bordes y siluetas.
  • Sistema de archivos virtual: sistema de archivos abstracto que permite el acceso transparente a archivos de disco, archivos de memoria, archivos .zip y archivos .gz.
  • Sistema de recursos extensible para admitir nuevos tipos de recursos y formatos de archivo.
  • Mucha documentación y muchos ejemplos.

Estado de desarrollo

La primera versión pública de Visualization Library se lanzó el 7 de mayo de 2007.

La biblioteca Visualization Library se encuentra actualmente en su segunda versión estable, VL 2011.05.1140, que sigue a la primera, VL 2009.07.640. Si bien el diseño se mantuvo prácticamente igual, la última versión estable se diferencia de su predecesora principalmente por: compatibilidad con OpenGL 3 y 4 y, en particular, con sombreadores de teselación, variables uniformes de doble precisión, nuevos formatos de textura como texturas multisample y objetos de textura, amplia compatibilidad con objetos de framebuffer y una mejor optimización para aplicaciones que hacen un uso intensivo de GLSL , entre muchas otras mejoras.

Véase también

  • Sitio web oficial
  • Repositorio oficial de GitHub
  • Michele Bosi, autora de Visualization Library