Función de transferencia en OpenGL

En diversas aplicaciones gráficas basadas en el despliegue de volúmenes, se requiere de la utilización de una función de transferencia para definir la opacidad y color en cada vóxel. Esta función, generalmente en RGBA, define un valor RGBA para cada vóxel en el volumen.

Función de transferencia RGBA. Tomado de Volt, Bonn-Reig-Sieg University of Applied Sciences [website]

Dependiendo del API gráfico empleado y del sistema de ventanas utilizado, puede resultar en una tarea tediosa. En el caso de OpenGL, si se emplea un sistema de ventanas básico entonces el despliegue de una función de transferencia se torna en una tarea complicada ya que se debe construir todos sus controles de interfaz – GUI. Igualmente, la función de transferencia debe ser interactiva para su edición y no tener impacto en el render de un volumen.

Hace un tiempo, un estudiante de los cursos de Computación Gráfica en la Universidad Central de Venezuela, Luiyit Hernández, desarrolló una versión ligera y bastante útil de una función de transferencia escrita en OpenGL empleando GLUT. El código completo puede ser descargado aquí y se emplea de forma muy sencilla. Adicionalmente, hay un video donde se muestra un poco este componente.


Recientemente, esta versión de la función de transferencia fue mejorada y escrita para GLFW por otro estudiante de los mismos cursos, Andrés Álvarez. La función de transferencia ahora puede ser desplazada a cualquier posición del viewport e incluye unas texturas. El código e instrucciones de uso está alojado en Github en la cuenta de Andrés. Dicho código usa DevIL para la carga de las imágenes, si deseas integrar el código y empleas una librería de carga de imágenes distinta, debes reemplazar solo esa parte. Igualmente, se emplea glm para el manejo de las estructuras de datos.

Como mencioné anteriormente, para desplegar una función de transferencia en GLUT, SDL, GLFW, etc., se requiere de invertir tiempo en hacerla. Sin embargo, estos componentes, para GLUT y GLFW, pueden ser de mucha utilidad.

Resumen: Si tú volume rendering en OpenGL sobre un sistema de ventanas básico requiere de una función de transferencia editable, en este post está tú código 🙂

Anuncios

Acerca de smittynpro

Escribiendo algunas cosas de computación gráfica
Esta entrada fue publicada en Algoritmos, Código, Herramientas y etiquetada , , , . Guarda el enlace permanente.

2 respuestas a Función de transferencia en OpenGL

  1. JOSE CRIOLLO dijo:

    EXCELENTE POST

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s