• No results found

CHAPTER 6: CONCLUSIONS

6.2 Future Research Directions

La visualización en general es una tarea que requiere de equipos con grandes capacidades de procesamiento y de algoritmos con implementaciones eficientes. Por lo general, las aplicaciones creadas para la visualización y análisis de campos vectoriales son altas consumidoras de recursos, tanto de CPU como de GPU.

El software disponible para la visualización científica puede dividirse en dos grandes grupos, aplicaciones y bibliotecas. Una biblioteca es un tipo especial de software que implementa un número determinado de algoritmos y estructuras de datos, los cuales están disponibles a cualquier aplicación que se enlace con la biblioteca. De esta manera se aumenta la reusabilidad de las funciones implementadas y se divide el desarrollo de aplicaciones complejas en partes más pequeñas, que pueden ser implementadas por equipos independientes. Es común que las aplicaciones también brinden sus propias bibliotecas, para su uso por otras aplicaciones.

2.4.1.

BIBLIOTECAS

Aunque no clasifican exactamente como software de visualización científica, tres de las bibliotecas más utilizadas en la mayoría de los sistemas de visualización son OpenGL (por las siglas en inglés de Open Graphics Library), VTK y OpenInventor.

OPENGL

OpenGL es una especificación estándar que define una API (por las siglas en inglés de Application Programming Interface) multilenguaje y multiplataforma para escribir aplicaciones que generan gráficos 2D y 3D. Su nombre proviene del inglés Open Graphics Library, cuya traducción es biblioteca abierta de gráficos (o mejor, libre, teniendo en cuenta su política de licencias). Esta API fue diseñada para ser usada con los lenguajes de programación C y C++, pero también existen interfaces para otros lenguajes como Java, Tcl, Ada, Fortran y Python.

OpenGL brinda a los programadores un pequeño conjunto de primitivas geométricas (puntos, líneas, polígonos, imágenes y mapas de bits). También ofrece un conjunto de comandos, que permiten la especificación de objetos geométricos en dos y tres dimensiones, utilizando las primitivas anteriores, junto con los comandos que controlan como esos objetos son representados.

La especificación OpenGL es independiente del sistema operativo y del sistema gestor de ventanas. Utiliza los recursos nativos disponibles para la manipulación de ventanas y eventos, las

operaciones con mapas de colores, etc. Además es una biblioteca de bajo nivel para programadores expertos, lo cual dificulta un poco el aprendizaje de la misma.

VTK

VTK es una biblioteca de código abierto, distribuida bajo licencia GPL (por las siglas en inglés de General Public License). Está escrita completamente en C++ y se encuentra disponible en múltiples plataformas (Linux, Mac, Windows), lo que permite escribir aplicaciones multiplataforma.

La biblioteca tiene un tamaño aproximado de 700 clases, y contiene un gran número de algoritmos para la visualización y el procesamiento de imágenes 2D y 3D. Aunque está escrita en C++, puede ser utilizada desde otros lenguajes de programación, a través de los llamados envoltorios (wrappers).

Un envoltorio (en este caso) es una biblioteca que proporciona una interfaz para el lenguaje X y accede a la biblioteca de clases C++. Cada llamada a una función F en el lenguaje X se traduce en una llamada a la función F de la biblioteca C++ mediante el envoltorio. Actualmente existen envoltorios disponibles para Tcl/Tk, Java y Python.

VTK proporciona una variedad de representaciones de datos, incluyendo conjuntos de puntos, datos poligonales, imágenes, volúmenes, y mallas estructuradas, rectilíneas y no estructuradas. Contiene también diversos mecanismos para intercambiar datos con otras aplicaciones en diversos formatos. VTK dispone asimismo de cientos de filtros para el procesamiento de datos, que varían desde convoluciones a imágenes, hasta la triangulación de Delauny. Es importante destacar que VTK es una de las bibliotecas de alto nivel de visualización que más se emplea en la comunidad científica hoy día debido a su facilidad para describir los datos y operar sobre ellos.

OPENINVENTOR

OpenInventor es una biblioteca gráfica orientada a objetos que facilita la programación gráfica. Está basada en la especificación de OpenGL y permite crear gráficos interactivos y acceder al hardware gráfico de la computadora con el menor esfuerzo posible. La biblioteca funciona como un conjunto de bloques que se aplican a un árbol de elementos para crear una escena gráfica. También permite la extensión y modificación de la misma de manera sencilla.

OpenInventor ofrece la economía de cualquier sistema orientado a objetos y permite simplificar la creación de aplicaciones. Una de las características más impresionantes de esta biblioteca es que permite copiar y pegar objetos gráficos en las escenas en tiempo real.

2.4.2.

APLICACIONES

Durante la última década se han establecido potentes sistemas en el campo de la visualización científica. Entre ellos se destacan notablemente: OpenDX, Amira y Mayavi. Estos sistemas son conocidos como ambientes modulares de visualización, puesto que las aplicaciones se componen mediante la unión de diversos módulos en una red, empleando un paradigma de programación visual.

La mayoría de los sistemas de visualización actuales soportan este esquema, y están diseñados para permitir que los usuarios con limitados conocimientos de programación sean capaces de explorar interactivamente un conjunto de datos a través de su representación visual. Casi todos proporcionan un conjunto de módulos básicos de visualización, que pueden interconectarse entre sí en una red para ejecutar una tarea de visualización. Este nivel de programación es el más utilizado por la mayoría de los usuarios. Sin embargo, también existe la posibilidad de desarrollar nuevos módulos en un nivel de programación más bajo (utilizando lenguajes como C o C++), que también son incorporados al sistema.

De los sistemas relacionados arriba solo OpenDX y Mayavi son de código abierto, el resto son sistemas comerciales cuyo costo es prohibitivo para algunas instituciones con escasos recursos. NAG Ltd, el distribuidor de Iris Explorer, rechazó incluso una solicitud de compra del sistema, al conocer que sería utilizado en una universidad cubana. La razón alegada fue el embargo estadounidense contra Cuba. A continuación describimos brevemente las posibilidades del sistema OpenDX, que ofrece aproximadamente las mismas funcionalidades que los otros, y es el que se utiliza desde hace algunos años en nuestro grupo de investigación.

OPENDX

OpenDX es una aplicación y un paquete de desarrollo de software de código abierto para la visualización de datos científicos, especialmente los adquiridos a partir de observaciones y simulaciones. OpenDX apareció en mayo de 1999 cuando IBM convirtió su sistema comercial de visualización, IBM Visualization Data Explorer (conocido como “DX”), en un software de código abierto. En la actualidad, científicos, ingenieros y analistas de negocios de todo el mundo, utilizan OpenDX para generar imágenes y animaciones a partir de sus investigaciones.

Después de la liberación del código, OpenDX se ha portado a distintos tipos de plataformas Linux y Free BSD, además de ser compilado para los sistemas UNIX comerciales donde DX siempre corrió, tales como SGI, HP, Sun y Aix. De igual manera, existe una versión comercial para plataformas Windows, aunque requiere la instalación adicional de software especial.

OpenDX es un sistema de visualización de propósito general, que permite leer datos de distintas fuentes de una manera flexible y amigable. Aun cuando la organización de los datos puede ser muy diferente para cada fuente, OpenDX ofrece una manera de leer casi cualquier tipo de datos a través su herramienta conocida como Data Prompter.

OpenDX ofrece una interfaz gráfica que permite crear programas de manera visual, mediante la interconexión de bloques o módulos, llamados redes. Por otro lado, OpenDX contiene un lenguaje script para crear programas de visualización. Un programa visual es convertido a este lenguaje antes de ser guardado en disco.

Debido a la generalidad de su modelo de datos y a la flexibilidad de la programación visual, OpenDX no está optimizado para alguna rama de la ciencia en particular. Por lo tanto, mientras que es posible utilizar efectivamente OpenDX para visualizar la salida de simulaciones, mediciones, experimentos o cualquier dato generado por computadora, no tiene funcionalidades optimizadas para un área de estudio particular. Por ejemplo, no es posible realizar directamente operaciones visuales de dinámica de fluidos, aunque se pueden adicionar estas operaciones a través de la construcción de módulos especializados.

AMIRA

Amira es un sistema de visualización 3D basado en redes y componentes desarrollado por el ZIB. Este software escrito sobre la biblioteca gráfica OpenInventor permite el análisis y modelación de datos de manera sencilla. Posee una interfaz amigable que ayuda a visualizar datos provenientes desde diferentes ramas de investigación como la medicina, biología, química y la mecánica de fluidos.

Posee un numeroso grupo de técnicas que facilitan la exploración directa de los datos en 3D generando visualizaciones basadas en superficies, polígonos, líneas, puntos, volúmenes, etc.

Dentro de las principales ventajas de este sistema se encuentra:

Multi-propósito – Brinda sobre la misma plataforma la posibilidad de modelar, analizar la información

Flexibilidad – Posee un conjunto de opciones que permiten configurar el entorno de trabajo

Eficiencia – Los algoritmos implementados explotan al máximo las capacidades de hardware

Fácil de usar – Posee un ambiente gráfico amigable y documentación precisa

Manejo de grandes volúmenes de datos- Permite el análisis de grandes volúmenes de datos.

Extensible – Puede ser extendido a través de la creación de módulos en C++

MAYAVI

software libre, genera visualizaciones tan fiables como cualquier otro sistema de visualización bajo distribuciones propietarias y brinda la posibilidad de integrarse a numerosas bibliotecas de programación escritas en python como lo son, numpy, Scipy, Qt, Traits, etc.

Mayavi también puede usarse como un plugin, que ofrece la posibilidad de ser usado en las escenas de cualquier programa Python y realizar una visualización específica. Esta última herramienta la brinda a través de una biblioteca llamadamlab.

Mayavi involucra una serie de filtros y de manera parecida a los sistemas de visualización mencionados con anterioridad que construyen el flujo de trabajo sobre una red de componentes. En este sistema los datos se cargan y se crea un árbol de componentes que describe el orden de los filtros y módulos aplicados sobre los datos.

La principal ventaja que posee este sistema es que puede ser utilizado y extendido sin restricciones de licencias. La aplicación posee una interfaz amigable para el usuario e implementa los mismos filtros y módulos que VTK. En la actualidad ha desplazado varias aplicaciones propietarias debido a su facilidad de uso y calidad de los resultados obtenidos.

Related documents