Abstract:
|
Morphing es el nombre que reciben las diversas técnicas utilizadas para
la transformación de unas siluetas en otras, ya sean imágenes u objetos
tridimensionales. Estas técnicas son ampliamente usadas en una gran
variedad de ámbitos, desde los efectos especiales que forman parte de
una película de ciencia ficción hasta la visualización médica de los
movimientos de un órgano. Baste de ejemplo la laureada simulación del
corazón humano que llevó a cabo el BSC-CNS con el proyecto Alya Red.
No sorprende, por tanto, el acusado interés por estas técnicas que ha
surgido en los últimos lustros, especialmente en el ámbito de la
transformación de mallas de objetos 3D. Este proyecto final de carrera
aborda precisamente eso, el estudio y diseño de algoritmos de
transformación de mallas tridimensionales, pero con un enfoque
relativamente novedoso: la paralelización. Concretamente, la búsqueda
de un algoritmo de morphing que permita aprovechar la potencia y el
paralelismo de las tarjetas gráficas actuales, también conocidas como
GPU (del inglés: Graphics Processing Unit).
Dado que, si no la mayor, sí una gran parte de los casos de uso de las
técnicas de morphing recaen en soluciones esencialmente gráficas, el
hecho de sacar el máximo provecho de la GPU adquiere una especial
relevancia. Si a esto sumamos que muchos algoritmos no fueron
diseñados con el paralelismo en mente y que su ejecución está ideada
probablemente para ejecutarse en granjas de servidores, muchos casos
de uso quedarían excluidos o como mínimo, mermados en la explotación
de esta clase de técnicas.
Este trabajo tiene como fin desarrollar una serie de "morphing shaders",
es decir, diseñar un algoritmo compuesto por un conjunto de pequeños
fragmentos de código susceptibles de ser ejecutados de forma paralela
por la inmensa cantidad de núcleos de la GPU sin salir del contexto
gráfico. Realizando, así, la deseada transformación en tiempo de
ejecución, sin requerir de intervención alguna por parte del usuario.
Para ello, la meta está dividida en tres objetivos concretos:
1. Investigar y conocer los últimos avances en el área
2. Comprender y aprender a desarrollar toda clase de shaders
3. Desarrollar un algoritmo idóneo para realizar morphing sobre GPU. |