Abstract | dc.description.abstract | El objetivo del presente trabajo de titulación es desarrollar y diseñar una aplicación multiplataforma para visualizar y analizar mallas geométricas mixtas en tres dimensiones. El visualizador debió ser implementado priorizando la eficiencia para poder manejar mallas muy grandes, y además poseer un diseño de calidad que permitiera extenderlo fácilmente.
Una malla geométrica es un conjunto de celdas adyacentes que buscan modelar un objeto complejo de forma discreta; dependiendo del tipo de malla, las celdas serán polígonos y/o poliedros. Los elementos que forman las mallas pueden ser evaluados bajo distintos criterios para medir su calidad.
Algunos modelos tienen millones de elementos, por lo que realizar cualquier tipo de cálculo sobre la malla, incluyendo renderizarla, es muy costoso. Para manejar mallas grandes de forma eficiente, varios algoritmos fueron acelerados utilizando la unidad de procesamiento gráfico de la tarjeta de video (GPU). Las GPU de última generación permiten realizar un gran número de tareas en paralelo, ya que tienen cientos de núcleos de procesamiento.
Para poder aprovechar el potencial de la tarjeta de video se utiliza la API gráfica multiplataforma OpenGL. La interfaz de la API provee un gran número de funciones para controlar la tarjeta de video, y además especifica el lenguaje de programación GLSL, el cual nos permite programar el pipeline de renderizado, todo esto sin preocuparse del tipo de tarjeta de video ni del sistema operativo.
Para abordar el problema, primero se analizaron los requerimientos específicos de la aplicación y se confeccionó un diseño para satisfacerlos. Se propuso un esquema modular, utilizando programación orientada a objetos y patrones de diseño, con lo cual se consiguió una aplicación extensible y capaz de realizar las tareas requeridas.
Después, se implementaron las clases especificadas en el diseño y se generó una interfaz gráfica amigable para el usuario utilizando Qt. Esta interfaz permite al usuario acceder a todas las funcionalidades de la aplicación. Además, se utilizaron múltiples programas de Shaders para producir distintos efectos de iluminación y para acelerar algoritmos que no están relacionados con la visualización.
Como resultado se obtuvo una poderosa herramienta gratuita y multiplataforma para analizar mallas. Con un diseño de calidad se consiguió que la aplicación fuese fácilmente extensible en estrategias de evaluación, modos de visualización, tipos de formatos que lee y exporta, y modos de seleccionar elementos. Además, el visualizador es capaz de procesar mallas que contienen por sobre un millón de elementos en tiempos reducidos, por lo que sigue siendo una aplicación altamente interactiva bajo estas condiciones. | es_CL |