Contexto
Modelar en 3D con herramientas CAD (Autodesk Maya, Autodesk 3D MAX studio, blender, ...) no es una tarea sencilla y requiere de tiempo y esfuerzo. Existen diseñadores de personajes que pueden dibujar sus modelos en 'papel', o sea en las dos dimensiones, pero que desconocen el uso de herramientas CAD que les permitan obtener el modelo del personaje en 3D. Por ello, sería deseable un sistema que permitiera obtener el consecuente modelo 3D desde un modelo 2D dibujado en varias vistas. Además, este modelo, para poder ser usado en sistemas de animación, debería generar un esqueleto.
El sistema de generación de personajes 3D constaría de tres pasos:
- Detectar las siluetas de los bocetos bidimensionales y reconstruir un modelo 3D de forma implícita.
- Pasar el modelo implícito a un modelo de malla poligonal, preferiblemente de quads, ya que este polígono es bueno para las deformaciones de mallas (ocurre mucho en animaciones).
- Añadir un esqueleto al modelo y unirlo a la 'piel'.
En concreto, mi trabajo de investigación se ha enfocado en resolver el segundo paso: a partir de un modelo implícito dado como un conjunto de esferas, obtener el consecuente modelo poligonal de quads.
Marching Quads
El algoritmo que he diseñado está basado en el algoritmo de Marching Triangles, el cual genera triángulos, y que asu vez esta basado en la triangulación de Delaunay.
Además he añadido algunas mejoras para acelerar el algoritmo en base al principio de localidad. Otro añadido ha sido el de ajustar la construcción de los quad a la simetría del modelo, para facilitar la animación del modelo poligonal. Finalmente permití variar el tamaño de los quads a la curvatura del modelo, de modo que el número de polígonos finales se redujese sin afectar a la calidad del modelo.
El algoritmo se compone de un primer paso en el que se localiza un quad inicial sobre la superficie implícita del modelo. Luego, apartir de este quad semilla, se construyen iterativamente el resto de quads probando diversas alternativas y comprobando que el quad es topológicamente bueno con respecto a la malla mediante una restricción especial basada en Delaunay. Para que los quads se ajusten a la superficie, los nuevos vértices que se crean han de ser movidos mediante un procedimiento en el que se intersecta una circunferencia con la superficie implícita para que se mantenga constante la distancia del quad. Finalmente, porque agujeros aparecen en la malla, un último procedimiento para cerrar cracks es aplicado.
Como anexo al trabajo, un visualizador de superficies implícitas y mallas de quads ha sido diseñado. Este visualizador permite ejecutar el algoritmo y guardar la malla resultante en formato OFF. El visualizador ha sido implementado en C++ utilizando las librerías gráficas OpenGL.
RESULTADOS