• No se han encontrado resultados

Marching Quads: un poligonizador de superficies implícitas orientado a modelos para animación.

N/A
N/A
Protected

Academic year: 2021

Share "Marching Quads: un poligonizador de superficies implícitas orientado a modelos para animación."

Copied!
110
0
0

Texto completo

(1)

PROYECTO FIN DE M ´

ASTER

Marching Quads: un poligonizador

de superficies impl´ıcitas orientado

a modelos para animaci´

on.

AUTOR: Jos´e Javier Mac´ıas S´anchez

TUTORA: Caroline Larboulette

(2)
(3)

Agradecimientos

En primer lugar, agradezco la gran ayuda prestada por mi tutora Caroline, qui´en me ha orientado perfectamente a lo largo de este trabajo para alcanzar la meta que nos propusimos, y poder mostrar el resultado de nuestro esfuerzo en este documento. Tambi´en agradezco a Olivier su ayuda por todos los modelos que ha dise˜nado, y aportado, para utilizar en este trabajo de investigaci´on.

Por su ayuda en la resoluci´on de problemas matem´aticos, agradezco la ayuda al departamento de matem´aticas de la Universidad Rey Juan Carlos, y en especial a Esther por su inter´es y dedicaci´on.

Finalmente, hago extenso este agradecimiento a todos los familiares, y amigos, que me han dado ´animos y me han ayudado en diversos aspectos de la investigaci´on, permiti´endome solventar todos los baches que se han cruzado por mi camino, y as´ı poder llegar con ´exito a esta tan ansiada meta.

(4)
(5)

Resumen

Existen multitud de algoritmos enfocados a obtener mallas de pol´ıgonos que permitan aproximar modelos definidos impl´ıcitamente. Sin embargo, ninguno de ellos est´a encaminado a la obtenci´on de mallas adecuadas para ser utilizadas en sistemas de animaci´on.

Como parte de un sistema de generaci´on autom´atica de personajes 3D para ani-maci´on desde im´agenes bidimensionales, proponemos un algoritmo de poligonizaci´on de superficies impl´ıcitas que permite obtener mallas de quads para deformaci´on en animaciones, utilizando una restricci´on de Delaunay para superficies 3D que hemos adaptado para quads. Adem´as, los pol´ıgonos de las mallas son ajustados a la simetr´ıa y a la curvatura del modelo.

There is a large variety of algorithms that focus on obtaining polygonal meshes from implicit surfaces. However, none of them generates suitable meshes for use in animation systems.

As part of an automatic 3D character generation system from bidimensional ima-ges, we propose an implicit surfaces poligonalization algorithm aimed at generating quad meshes suitable for animations. To this end, we propose an adapted 3D De-launay surface constraint for quads. In addition, the polygons of the obtained mesh follow the symmetry plane as well as the curvature of the surface.

(6)
(7)

´Indice general

Agradecimientos I

Resumen III

1. Introducci´on 1

1.1. Descripci´on del Problema . . . 1

1.1.1. Mallas de quads de personajes para animaci´on. . . 1

1.1.2. Generaci´on autom´atica de personajes. . . 2

1.1.3. Trabajos relacionados. . . 3

1.2. Objetivos . . . 3

1.3. Desarrollo del proyecto . . . 6

1.3.1. Etapas de desarrollo . . . 6

1.3.2. Herramientas utilizadas . . . 7

1.4. Estructura del documento . . . 8

2. Estado del arte 9 2.1. Superficies impl´ıcitas . . . 9

2.1.1. Definici´on matem´atica . . . 10

2.1.2. Vectores Normales . . . 10

2.1.3. Animaci´on de superficies impl´ıcitas . . . 11

2.1.4. Visualizaci´on de superficies impl´ıcitas . . . 12 v

(8)

2.2. Poligonizaci´on de superficies impl´ıcitas . . . 12

2.2.1. Marching Cubes . . . 14

2.2.2. T´ecnicas de simulaci´on de part´ıculas . . . 15

2.2.3. T´ecnicas de rastreo de superficie . . . 17

2.3. Marching Triangles . . . 19

2.3.1. Marching Triangles adaptativo . . . 22

2.3.2. Marching Triangles con restricci´on para aristas . . . 24

2.3.3. Marching Triangles evitando generaci´on de cracks . . . 25

2.4. Conclusiones . . . 27

3. Algoritmo de Marching Quads 29 3.1. Introducci´on . . . 29

3.1.1. Estructura del algoritmo . . . 29

3.1.2. Problemas a resolver . . . 31

3.2. Poligonizaci´on de la superficie impl´ıcita: Marching Quads . . . 32

3.2.1. 3D Delaunay Surface Constraint aplicado a quads . . . 32

3.2.2. Creaci´on del nuevo quad candidato . . . 36

3.2.3. Alternativas de nuevos quads . . . 39

3.2.4. Cracks debido a v´ertices escogidos err´oneamente . . . 43

3.3. B´usqueda del punto m´as cercano sobre la superficie impl´ıcita . . . 45

3.3.1. Algoritmo de b´usqueda de punto cercano a la superficie . . . . 46

3.3.2. Formulaci´on matem´atica de intersecci´on circunferencia-esfera . 47 3.4. B´usqueda del quad inicial . . . 48

3.4.1. Algoritmo de b´usqueda de quad inicial . . . 49

3.4.2. Detalle de los pasos del algoritmo . . . 49

(9)

´INDICE GENERAL vii

3.5. Cierre de cracks . . . 51

3.5.1. Introducci´on al algoritmo de cierre de cracks . . . 52

3.5.2. Aislamiento de un crack . . . 53

3.5.3. Cerramiento de un crack . . . 54

4. Mejoras en Marching Quads 61 4.1. Aceleraci´on del algoritmo Marching Quads . . . 61

4.1.1. An´alisis del problema . . . 61

4.1.2. Soluci´on al problema . . . 62

4.2. Crecimiento del algoritmo en base a la simetr´ıa del modelo . . . 62

4.3. Marching Quads adaptativo a la curvatura del modelo . . . 63

4.3.1. An´alisis del problema . . . 63

4.3.2. Algoritmo adaptativo . . . 64

5. Resultados experimentales 67 5.1. Caracter´ısticas de Marching Quads . . . 68

5.1.1. Algoritmo b´asico . . . 68

5.1.2. Mejora acelerativa del algoritmo . . . 70

5.1.3. Mejora de quads ajustados a la simetr´ıa del modelo . . . 72

5.1.4. Mejora de quads adaptados a la curvatura de la superficie . . 74

5.2. Resultados en modelos impl´ıcitos complejos . . . 77

6. Conclusiones y trabajos futuros 83 6.1. Conclusiones . . . 83

6.1.1. Caracter´ısticas de Marching Quads . . . 83

6.1.2. Limitaciones . . . 84

(10)

6.1.4. Otras aplicaciones del algoritmo . . . 90

6.2. Trabajos futuros . . . 90

6.2.1. Mejora adaptativa . . . 90

6.2.2. Aceleraci´on por simetr´ıa . . . 92

6.2.3. Mejora de orientaci´on de quads por simetr´ıa . . . 93

6.2.4. Mejora en la b´usqueda del punto cercano a la superficie . . . . 93

6.2.5. Remallado en zonas de mallas enfrentadas . . . 93

6.2.6. Remallado en zonas de cracks . . . 94

(11)

´Indice de figuras

1.1. Animaci´on de mallas mediante esqueleto . . . 2

1.2. Sistema de generaci´on autom´atica de modelos . . . 3

1.3. Boceto 2D y modelo de malla poligonal . . . 4

2.1. Definici´on matem´atica de una esfera. . . 11

2.2. Superficie impl´ıcita basada en esqueleto. . . 11

2.3. Patrones de Marching Cubes . . . 16

2.4. Mejoras a Marching Cubes . . . 16

2.5. Algoritmo de Hartmann . . . 18

2.6. Algoritmo edge-spinning . . . 18

2.7. Restricci´on de superficie 3D de Delaunay. . . 20

2.8. Pasos del algoritmo Marching Triangles . . . 20

2.9. Buen tri´angulo que generar´a crack . . . 23

2.10. Problemas que presenta el algoritmo de Marching Triangles . . . 23

2.11. Algoritmo de Edge-Constrained Marching Triangles . . . 25

2.12. Mejora de Fournier al algoritmo Marching Triangles . . . 25

2.13. Comparaci´on entre algoritmos de poligonizaci´on . . . 28

3.1. Restricci´on de Delaunay aplicable a quads . . . 34

3.2. Restricciones para evitar malos quads. . . 35 ix

(12)

3.3. Proyecci´on de puntos para quads. . . 37

3.4. Detecci´on de v´ertices cercanos . . . 38

3.5. Fallo en la proyecci´on de un nuevo v´ertice . . . 39

3.6. Creaci´on de quad utilizando arista enfrentada . . . 40

3.7. Alternativas de construcci´on de quads en Marching Quads . . . 42

3.8. Problema: quad que provoca fallo de restricci´on en existente . . . 44

3.9. Problema: quad deformado en superficie muy curva . . . 46

3.10. Generaci´on del quad inicial . . . 51

3.11. Alternativas para cerrar un crack. . . 55

3.12. Solapamiento de quad con crack . . . 57

5.1. Marching Quads b´asico sobre esfera . . . 69

5.2. Comparativa de variaci´on del factor de tama˜no de quad . . . 69

5.3. Cierre de Cracks . . . 71

5.4. Poligonizaci´on del modelo de 5 esferas. . . 72

5.5. Crecimiento de la malla ajustado a la simetr´ıa . . . 73

5.6. Resultado de mejora de simetr´ıa . . . 75

5.7. Comparaci´on para mejora adaptativa . . . 76

5.8. P . . . 78

5.9. Poligonizaci´on del modelo de humanoide. . . 79

5.10. Poligonizaci´on del modelo de humanoide sentado. . . 80

5.11. Poligonizaci´on del modelo de perro. . . 81

6.1. Problema de poligonizaci´on no adaptativa en modelos complejos . . . 85

6.2. Recorte del algoritmo adaptativo debido a estrechez del modelo. . . . 88

6.3. Modelo de perro recortado por el algoritmo adaptativo. . . 89

(13)

Cap´ıtulo 1

Introducci´

on

1.1.

Descripci´

on del Problema

1.1.1.

Mallas de quads de personajes para animaci´

on.

En el mundo de la animaci´on por computadora, se encuentra ampliamente ex-tendido el uso de modelos de mallas poligonales, las cuales est´an formadas por un conjunto de pol´ıgonos en el espacio 3D. La uni´on de todos estos pol´ıgonos por medio de sus aristas, permite representar la superficie del modelo.

En animaci´on de personajes, a la malla poligonal se la denomina piel, ya que se corresponde con la parte exterior y visible del modelo al que representa. Sin embargo, para poder animar f´acilmente el personaje, se utiliza un conjunto de elementos estructurales internos a la piel del modelo el cual, por analog´ıa con los elementos estructurales de animales y humanos, se denomina esqueleto del modelo.

Un modelo de malla poligonal con esqueleto utiliza t´ecnicas de skinning para hacer coincidir los huesos del esqueleto con las zonas de la piel respectivas. De este modo, el animador solo tiene que centrarse en mover el esqueleto y, la herramienta de animaci´on, autom´aticamente se encarga de deformar la malla poligonal acorde a las poses que define el artista. La figura 1.1 muestra tres poses distintas de un esqueleto formado por tres huesos, y la deformaci´on de la piel correspondiente.

En sistemas de visualizaci´on en tiempo real como los videojuegos, los elementos de las mallas suelen ser pol´ıgonos triangulares. Dada la caracter´ıstica coplanar del tri´angulo, y por ser el pol´ıgono m´as simple, el renderizado de estas mallas es muy

(14)

Figura 1.1: (a) Malla poligonal de un modelo de cilindro con esqueleto de dos huesos (b) Malla unida totalmente al hueso derecho. El movimiento de ´este provoca que toda la malla se mueva conjuntamente. (c) Malla unida a ambos huesos de forma ponderada. El movimiento del esqueleto provoca una deformaci´on suave en la malla. (d) Malla unida totalmente al hueso izquierdo. El movimiento del hueso derecho provoca que la malla no sea alterada.

r´apido. Sin embargo, las mallas de quads obtienen mejores resultados cuando se desea subdividir o deformar una malla. Debido a que la animaci´on se basa en continuas deformaciones del modelo, estos pol´ıgonos de cuatro v´ertices son m´as adecuados para mallas orientadas a este prop´osito.

Para obtener modelos poligonales, existen multitud de herramientas CAD (Di-se˜no Asistido por Computador), tales como Autodesk Maya [May10], Autodesk 3D Max Studio [3Ds10] o Autodesk Softimage [Sof10], las cuales permiten modelar ma-llas en 3D. Sin embargo, el modelado de mama-llas es una tarea muy compleja, lenta y tediosa. Esta complejidad aumenta cuando el dise˜nador del modelo es un artista tradicional de dibujo en 2D, requiriendo o bien un aprendizaje de la herramienta CAD, o bien la necesidad de un modelador para que traduzca el boceto 2D a un modelo poligonal 3D.

1.1.2.

Generaci´

on autom´

atica de personajes.

Debido a que un dibujante tradicional de personajes suele no tener conocimientos sobre herramientas CAD, ser´ıa ideal un proceso autom´atico que obtuviera modelos 3D orientados a su uso para animaci´on, a partir de bocetos del personaje dise˜nados en 2D por el artista. Adicionalmente, para poder utilizar la malla obtenida en ani-maciones, el sistema deber´ıa generar autom´aticamente una estructura esquel´etica adaptada al modelo.

(15)

1.2. OBJETIVOS 3 Otra caracter´ıstica interesante para el artista 2D ser´ıa la de permitirle generar poses del modelo 3D, dibujando ´estas en 2D. Un proceso autom´atico ser´ıa el en-cargado de detectar el posicionamiento de la estructura esquel´etica para mover el esqueleto de la malla de manera acorde al dibujo.

La motivaci´on para la investigaci´on de este trabajo, es la de crear una herra-mienta que permita automatizar la obtenci´on de un modelo poligonal con estructura esquel´etica, y para su uso en animaci´on, a partir de im´agenes bidimensionales que defina el modelo 3D por medio de varias vistas ortogonales.

1.1.3.

Trabajos relacionados.

Actualmente, se est´a desarrollando un sistema similar que permite generar mo-delos 3D desde siluetas dibujadas en diferentes vistas 2D utilizando geometr´ıa solida constructiva [RDI10a, RDI10b]. La figura 1.2 muestra un modelo de avi´on dibujado en vista frontal y lateral que es convertido en un modelo tridimensional.

El sistema que nosotros deseamos est´a orientado no a objetos est´aticos, sino en modelos de caracteres que permitan ser animados.

Figura 1.2: Sistema de generaci´on autom´atica de modelos a partir de siluetas dibu-jadas en 2D desarrollado en [RDI10a, RDI10b]. Un modelo de avi´on dibujado en vista frontal y lateral (izquierda) es convertido en un modelo 3D (derecha).

1.2.

Objetivos

Se desea desarrollar un sistema que permita obtener mallas poligonales orientadas a la animaci´on de personajes, a partir de una definici´on del modelo dada por varias im´agenes bidimensionales correspondientes a vistas ortogonales (superior, lateral, frontal, . . . ).

(16)

El resultado final del sistema que se desea dise˜nar ha de ser una malla de pol´ıgo-nos cuadrangulares, conteniendo un sistema esquel´etico asociado para poder animar el modelo. Adem´as, cualquier caracter´ıstica que pueda ser a˜nadida al modelo resul-tante para mejorar su uso para animaciones, deber´a ser contemplada en la investi-gaci´on.

La figura 1.3 muestra un modelo definido en 2D en sus vistas frontal y superior. La parte derecha de la imagen muestra el mismo modelo definido tridimensional-mente como una malla poligonal de quads, la cual ha sido dise˜nada ’a mano’ con la herramienta Autodesk Maya [May10]. Lo que se pretende es conseguir que este proceso de generaci´on de la malla poligonal se realice de manera autom´atica, sin necesidad de recurrir a herramientas CAD.

Figura 1.3: Boceto 2D y su modelo de malla poligonal correspondiente realizado ’a mano’ mediante la herramienta Autodesk Maya.

Otro objetivo que se desea alcanzar es el de dise˜nar una herramienta que permita mover la estructura esquel´etica del modelo 3D obtenido en el sistema anteriormente descrito, a partir de poses representadas en dibujos bidimensionales.

El sistema que se desea desarrollar, dada su complejidad, est´a dividido en cuatro bloques m´as simples:

Obtenci´on de un modelo impl´ıcito: Desarrollar una t´ecnica que permita detectar las siluetas de las im´agenes bidimensionales, fusionarlas y obtener un volumen tridimensional definido de forma impl´ıcita.

(17)

1.2. OBJETIVOS 5 Poligonizaci´on del modelo impl´ıcito: Debido a que el modelo resultante es deseable que est´e definido de forma expl´ıcita mediante una superficie poligonal, se necesita desarrollar un algoritmo que permita pasar del volumen especificado de forma impl´ıcita a una superficie de pol´ıgonos, preferiblemente quads. Esqueletizaci´on de la malla: De las im´agenes 2D se pueden obtener l´ıneas centrales en el modelo como l´ıneas esquel´eticas del mismo. Fusionando estos esqueletos de cada imagen, se puede obtener un elemento estructural para el modelo de malla obtenido en el bloque anterior. Para que este esqueleto estruc-tural est´e dividido en huesos, es necesario una t´ecnica que permita detectar las uniones entre huesos, observando aquellas zonas del volumen impl´ıcito donde hay cambios.

Definici´on de poses: Se pretende hacer una coincidencia entre las estructu-ras esquel´eticas de bocetos 2D con el esqueleto tridimensional. De esta forma, se podr´ıa hacer una traducci´on autom´atica de una pose en el modelo bidimen-sional a la pose correspondiente en el modelo 3D.

Este documento presenta una t´ecnica dise˜nada para resolver el problema plan-teado en el segundo bloque. Se propone un algoritmo que permite obtener una malla poligonal de quads que aproxime la superficie del modelo definido de forma impl´ıcita mediante un conjunto de esferas.

Los objetivos iniciales a alcanzar en esta investigaci´on sobre poligonizaci´on de superficies impl´ıcitas eran:

Investigaci´on, estudio y an´alisis sobre superficies impl´ıcitas y algoritmos de poligonizaci´on de las mismas. Esta tarea inicial permitir´ıa conocer como se encuentra el estado del arte en esta ´area de conocimiento y, mediante un an´alisis, poder recopilar la informaci´on necesaria que permita el dise˜no del poligonizador que mejor se adapte al sistema donde se desea implementar. Porque las mallas de quads son muy utilizadas en animaciones de modelos con esqueletos, se hace necesaria que la malla resultante estuviera compuesta por este tipo de pol´ıgonos.

(18)

Bas´andose en que los personajes suelen tener una cierta simetr´ıa, se deseaba investigar alternativas del poligonizador que obtenga mallas adaptadas a la simetr´ıa del modelo.

Ser´ıa ´util un equilibrado de los par´ametros del programa que permita obtener, en tiempo razonable, mallas con un n´umero de pol´ıgonos adecuado. Cualquier par´ametro que influya en la calidad final de la malla tambi´en deber´ıa de ser analizado.

Al igual que en los modelos generados mediante herramientas CAD, el tama˜no de los pol´ıgonos deber´ıa ser variable en funci´on de la curvatura del modelo.

1.3.

Desarrollo del proyecto

1.3.1.

Etapas de desarrollo

La investigaci´on desarrollada, la cual se presenta en este documento, ha consis-tido de varias etapas:

1. En primer lugar se ha realizado una recopilaci´on de informaci´on en el campo de los modelos impl´ıcitos, y de poligonizaciones de ´estos. El estudio y an´alisis de esta informaci´on, permiti´o escoger el algoritmo de poligonizaci´on m´as con-veniente para el sistema general de creaci´on autom´atica de personajes 3D. En concreto, el algoritmo escogido como punto de partida de este trabajo, ha sido el de Marching Triangles.

2. A continuaci´on se pas´o a una fase en la que se implement´o Marching Trian-gles para poder analizar su funcionamiento, e investigar c´omo adaptarlo para alcanzar los objetivos marcados.

3. El siguiente paso fue el de dise˜nar las estructuras de datos del programa. Para poder comunicar la fase de detecci´on de im´agenes 2D con el poligonizador, se dise˜n´o un formato de fichero para definir las superficies impl´ıcitas que son entrada de datos del poligonizador. Luego, se dise˜n´o una estructura de datos para las superficies impl´ıcitas y otra para mallas de Quads, estructuras que

(19)

1.3. DESARROLLO DEL PROYECTO 7 durante el desarrollo del proyecto han ido evolucionando para adaptarse a nuevos requerimientos y modificaciones.

4. La siguiente etapa, el grueso de este proyecto de investigaci´on, ha consistido en la implementaci´on del poligonizador Marching Quads. Primero se ha dise˜nado un algoritmo b´asico, y a continuaci´on se le han a˜nadido varias mejoras que se presentar´an en este documento.

5. Una bater´ıa de pruebas finales ha permitido validar el algoritmo y obtener unas conclusiones de la investigaci´on. Tambi´en ha posibilitado la detecci´on de problemas y excepciones que abren una v´ıa de posibles mejoras futuras, documentadas en el cap´ıtulo 6.

La metodolog´ıa que se ha seguido, en concreto para los pasos 3 y 4 de las fases anteriores, ha sido evolutiva e incremental. Se parti´o de un dise˜no del algoritmo b´asico y, en base al an´alisis de resultados y a los nuevos requerimientos a a˜nadir, el algoritmo ha evolucionado hasta alcanzar la versi´on final que se presenta en este documento.

Debido al car´acter investigativo del proyecto, se ha utilizado un m´etodo de prueba y error. ´Este m´etodo consiste en formular hip´otesis para resolver una tarea, probar la idea y, en funci´on del an´alisis de los resultados, validar la hip´otesis. Como resultado del an´alisis, nuevas ideas pueden surgir que permiten evolucionar el sistema.

1.3.2.

Herramientas utilizadas

Los algoritmos propuestos en este proyecto han sido implementados en lengua-je C++, utilizando el compilador gcc bajo el sistema operativo Ubuntu Linux en su versi´on 9.10 Karmic Koala [Ubu10]. El c´odigo hace uso de la librer´ıa QGLVie-wer versi´on 2.3.5 [QGL10] para el manejo de puntos, vectores y cuaterniones, ´estos ´

ultimos usados para rotaciones de vectores.

Con la finalidad de visualizar los modelos impl´ıcitos iniciales y las mallas poligo-nales resultantes, se ha desarrollado un visor basado en las librer´ıas gr´aficas OpenGL versi´on 4 [Ope10]. Este visor ofrece adem´as un entorno de pruebas y desarrollo del algoritmo. Tambi´en se ha manejado el visor interactivo de escenarios 3D GeomView

(20)

en su versi´on 1.9.4 [Geo10].

Esta documentaci´on del proyecto ha sido redactada y compilada con la herra-mienta para procesado de textos LA

TEX, utilizando el conjunto de herramientas Mik-Tex versi´on 2.8 [Mik10] para el sistema operativo Windows XP SP 3. Se ha utilizado el entorno de desarrollo eclipse versi´on Galileo [ecl10] utilizando el plugin Texlipse versi´on 1.4 [tex10].

1.4.

Estructura del documento

En el siguiente cap´ıtulo, se abordar´a el estado del arte relacionado a este trabajo de investigaci´on. Dicho cap´ıtulo se encuentra dividido en tres partes: superficies impl´ıcitas, algoritmos de poligonizaci´on de superficies impl´ıcitas, y una ´ultima parte donde se detallar´an los trabajos enfocados al algoritmo de poligonizaci´on Marching Triangles, el cual ha sido elegido como base para el algoritmo que se presenta en este documento.

El cap´ıtulo 3 detalla el algoritmo de Marching Quads que se ha desarrollado en este proyecto de investigaci´on. Este algoritmo est´a seccionado en cuatro partes que ser´an analizadas por separado.

A continuaci´on, el cap´ıtulo 4 muestra tres mejoras que se han dise˜nado e imple-mentado para el algoritmo b´asico. Primero se comentar´a una mejora de aceleraci´on computacional del algoritmo, a continuaci´on se hablar´a sobre una t´ecnica que per-mite obtener una malla basada en la simetr´ıa del modelo impl´ıcito, y finalmente se detallar´a una mejora para adaptar el tama˜no de los pol´ıgonos a la curvatura del modelo.

El cap´ıtulo 5, exhibe los resultados obtenidos por esta nueva t´ecnica que se presenta. Y un ´ultimo cap´ıtulo 6 expone las conclusiones que se han analizado de los resultados generados. Adem´as, este ´ultimo cap´ıtulo ofrecer´a una serie de lineas de investigaci´on futuras para mejorar el algoritmo, basadas en las carencias observadas durante la interpretaci´on de los resultados.

(21)

Cap´ıtulo 2

Estado del arte

El trabajo que se propone en este documento se trata de un algoritmo de poligo-nizaci´on de superficies impl´ıcitas. Por ello, en este cap´ıtulo se har´a un recorrido por varios trabajos enfocados en este campo. En primer lugar se ver´a una introducci´on a las superficies impl´ıcitas. En una segunda secci´on, se abordar´an varias t´ecnicas exis-tentes para convertir superficies impl´ıcitas en mallas poligonales, y se terminar´a el cap´ıtulo detallando el algoritmo de poligonizaci´on de superficies impl´ıcitas Marching Triangles, en el cual est´a basada la t´ecnica que proponemos.

2.1.

Superficies impl´ıcitas

Bloomenthal et al. realizaron un estudio bastante detallado y amplio sobre su-perficies impl´ıcitas [BcBB+

97]. Para ellos, una superficie impl´ıcita es una superficie definida en el espacio 3D de forma matem´atica, mediante una funci´on denominada funci´on impl´ıcita o potencial.

El volumen del modelo impl´ıcito se da para puntos cutos valores de funci´on potencial son inferiores a un valor umbral d. Valores de funci´on que igualan al valor umbral se corresponden con puntos de la superficie del modelo, y valores superiores se corresponden con puntos externos al modelo. Generalmente se suele utilizar d = 0 como valor umbral.

(22)

2.1.1.

Definici´

on matem´

atica

El punto P (x, y, z) pertenece a la superficie impl´ıcita si f (x, y, z) = 0, siendo f la funci´on impl´ıcita.

La forma m´as simple de superficie impl´ıcita en 3D es la esfera, cuya funci´on matem´atica es f (x, y, z) = (x − a)2

+ (y − b)2

+ (z − c)2

− r2

, donde C(a, b, c) es el punto espacial del centro de la esfera, y r es el radio de la misma. Los puntos P(x, y, z) que generan valores 0 en la ecuaci´on anterior, pertenecen a puntos de la superficie de la esfera. Si el valor de la funci´on fuera positivo, entonces el punto se localizar´ıa fuera de la esfera, y en el caso contrario, que resulte un valor negativo, el punto pertenecer´ıa al espacio interior de la misma. Normalmente, como es en el caso anterior, el valor de la funci´on impl´ıcita se corresponde con una medida de distancia entre el punto y la superficie impl´ıcita.

2.1.2.

Vectores Normales

Condici´on necesaria para poder definir vectores normales a la superficie, la fun-ci´on impl´ıcita ha de ser continua y derivable. La forma de calcular este vector nor-mal, para un punto cualquiera del espacio,es mediante el vector gradiente ∇f = (∂f∂x,∂f∂y,∂f∂z) sobre las coordenadas del punto.

Por ejemplo, supongamos el caso de una esfera de radio unidad y centrada en el origen, cuya funci´on es f (x, y, z) = x2 + y2+ z2− 1. El vector normal de la esfera,

se corresponde con ∇f = (∂f∂x,∂f∂y,∂f∂z) = (2x, 2y, 2z). La figura 2.1 muestra puntos localizados en el plano XY (z = 0), y sobre la superficie impl´ıcita de esta esfera de ejemplo, y los vectores normales asociados a cada punto.

Para funciones no derivables, una aproximaci´on puede ser calculada utilizando m´etodos de c´alculo num´erico. Sin embargo, para un punto cuyo vector normal no puede ser calculado, su gradiente puede ser calculado ponderando el de los puntos vecinos. Estos puntos, como por ejemplo el de la c´uspide e un cono, se denominan puntos singulares.

(23)

2.1. SUPERFICIES IMPL´ICITAS 11 X Y P (-1, 0, 0) P (0, 1, 0) N (0, 2, 0) n (0, 1, 0) N (- 2 , 2 , 0) n (- 2 /2, 2 /2, 0) N (-2, 0, 0) n (-1, 0, 0) P (- 2 /2, 2 /2, 0)

Figura 2.1: (P) Puntos sobre la superficie impl´ıcita x2+ y2+ z2 = 1, (N) normal y

(n) vector normal unitario.

Figura 2.2: (a) Esqueleto impl´ıcito. (b) Su-perficie impl´ıcita que genera el esqueleto. (c) Prototipo para obtener una r´apida vi-sualizaci´on (imagen obtenida de [BW90]).

2.1.3.

Animaci´

on de superficies impl´ıcitas

Una superficie impl´ıcita puede definirse mediante esqueletos. Los esqueletos pue-den estar formados por puntos, segmentos, o incluso poliedros. Una distancia defini-da para cadefini-da elemento del esqueleto, permite obtener los puntos pertenecientes a la superficie impl´ıcita. El ejemplo (a) de la figura 2.2 muestra un esqueleto formado por segmentos, y el caso (b) muestra la superficie impl´ıcita que genera dicho esqueleto. El esqueleto m´as b´asico es el punto, el cual define una esfera centrada en dicho punto, y con un radio igual a la distancia definida. Una colecci´on de puntos, con una distancia asociada a cada uno, genera una superficie impl´ıcita como uni´on de todas estas esferas. Este trabajo utiliza este tipo de definici´on de superficies impl´ıcitas basado en un conjunto de primitivas esf´ericas.

El movimiento de los esqueletos impl´ıcitos implica cambios en la superficie impl´ıci-ta. De esta manera, se pueden f´acilmente animar modelos impl´ıcitos al deformarse la superficie por medio de elementos estructurales. [Par02] contiene un apartado donde se habla sobre la animaci´on de superficies impl´ıcitas, m´etodos de detecci´on de colisiones mediante aproximaciones a mallas poligonales, e incluso de un m´etodo para deformar la superficie como respuesta a colisiones.

(24)

Aun as´ı, las mallas poligonales siguen siendo el tipo de modelos m´as extendido en animaciones. Es por ello que se necesitan algoritmos, como el que se presenta en este trabajo, que permitan convertir una superficie impl´ıcita en un modelo poligonal que aproxime al modelo.

2.1.4.

Visualizaci´

on de superficies impl´ıcitas

La visualizaci´on de superficies impl´ıcitas puede realizarse f´acilmente utilizando traza de rayos, mediante la b´usqueda de puntos del espacio donde los rayos co-lisionan con la superficie impl´ıcita del modelo, resolviendo de forma matem´atica. Sin embargo, este m´etodo es lento, dificultando tareas que necesitan un tiempo de visualizado interactivo como el modelado de superficies impl´ıcitas.

Existen otros m´etodos enfocados a obtener prototipos de la superficie impl´ıcita r´apidamente, tales como la rasterizaci´on, detecci´on de contornos o muestreos [BW90, DTG96, WH94]. Sin embargo, estos m´etodos no obtienen buenas visualizaciones ya que est´an enfocados a obtener una visualizaci´on muy r´apida. El ejemplo (c) de la figura 2.2 muestra una visualizaci´on por prototipo mediante muestras discretas sobre la superficie impl´ıcita.

Una alternativa m´as r´apida que la traza de rayos para el visualizado es la de obtener una aproximaci´on del modelo mediante una malla poligonal. En la siguiente secci´on se mostraran varias t´ecnicas enfocadas a obtener mallas de pol´ıgonos que aproximen una superficie de un modelo definido impl´ıcitamente.

2.2.

Poligonizaci´

on de superficies impl´ıcitas

Tal y como se ha visto en la secci´on anterior, los modelos definidos impl´ıcitamente tienen muchas ventajas pero, en algunas ocasiones, es necesaria una versi´on del mo-delo definida mediante una malla poligonal. Algunos motivos de porqu´e poligonizar una superficie impl´ıcita son:

Para generar una buena visualizaci´on del modelo impl´ıcito, suele utilizarse un trazador de rayos, el cual obtiene buenos resultados a costa de un gasto computacional muy pesado. Por otra parte, existen herramientas de modelado

(25)

2.2. POLIGONIZACI ´ON DE SUPERFICIES IMPL´ICITAS 13 impl´ıcito basados en t´ecnicas de escultura [DC04, FCG01], las cuales necesitan obtener buenas visualizaciones en tiempos interactivos. Para estos casos, es posible visualizar el modelo mediante una aproximaci´on de malla poligonal. En ocasiones, es necesario trabajar con m´etodos que necesiten discretizar una superficie impl´ıcita (m´etodos finitos, detecci´on de colisiones, . . . ). En estos ca-sos, la poligonizaci´on del modelo permite obtener un conjunto finito de puntos sobre la superficie correspondi´endose a los v´ertices de la malla.

Es muy com´un el uso de modelos poligonales en el mundo de la computaci´on gr´afica, incluso algunos autores lo consideran como el est´andar para repre-sentar superficies geom´etricas, y la mayor´ıa de sistemas gr´aficos (videojuegos, aplicaciones m´edicas, sistemas de simulaci´on, . . . ) tratan con este tipo de mo-delos. Sin embargo, existen ocasiones en los que los modelos adquiridos de de forma impl´ıcita, bien directamente por un modelador o bien por un sistema autom´atico que genera este tipo de superficies. En estos casos, se requiere una poligonizaci´on del modelo.

En nuestro sistema de creaci´on autom´atica de personajes 3D, la t´ecnica que permite obtener un modelo tridimensional a partir de la definici´on bidimensional obtiene una definici´on del mismo de forma impl´ıcita, mediante una colecci´on de primitivas esf´ericas. Por ello, se hace necesaria una fase que permita poligonizar la superficie para su uso en sistemas de animaci´on.

En general, las t´ecnicas de poligonizaci´on de superficies impl´ıcitas se pueden dividir en tres grupos distintos.

Muestreo espacial: Son t´ecnicas que dividen el espacio para localizar puntos sobre la superficie impl´ıcita en cada muestra, y a la vez unir dichos puntos de cada muestra para generar los pol´ıgonos de la malla.

Ajustes a la superficie: Estas t´ecnicas parten de una malla poligonal inicial o muestras iniciales, y tratan posteriormente de ajustar los v´ertices o muestras a la superficie. Este ajuste suele realizarse mediante una simulaci´on de part´ıculas que permite a las muestras converger hacia la superficie hasta llegar a un

(26)

equilibrio entre part´ıculas. En el caso de partir de un set de muestras inicial, se requiere un paso posterior que permita poligonizar las mismas.

Recorrido de la superficie: Estas t´ecnicas comienzan a partir de pol´ıgonos semilla que forman una malla inicial y, a partir de ellos, se van generando nue-vos pol´ıgonos que se anexan a las aristas que bordean la malla. Iterativamente el modelo poligonal va a˜nadiendo pol´ıgonos mientras se recorre la superficie impl´ıcita, hasta que se consigue cerrar la malla.

2.2.1.

Marching Cubes

Una de las t´ecnicas de poligonizaci´on de superficies impl´ıcitas m´as influyentes ha sido la de Marching Cubes [LC87]. La t´ecnica surgi´o por la necesidad de visualizar modelos 3D definidos mediante una colecci´on de im´agenes m´edicas obtenidas por esc´aneres (resonancias magn´eticas, tomograf´ıas, . . . ). Esta visualizaci´on permitir´ıa analizar m´as f´acilmente a un especialista m´edico las im´agenes que se obtienen de los esc´aneres.

El sistema se compone de dos fases: una primera t´ecnica permite la fusi´on de im´agenes en un modelo definido impl´ıcitamente, y una segunda donde se utiliza el algoritmo de Marching Cubes para generar la malla de tri´angulos que un sistema de visualizaci´on puede manejar para permitir al m´edico interactuar con el modelo. Este sistema, en esencia es similar al de creaci´on de personajes 3D, pues consta de una fase que permite fusionar im´agenes 2D y de otra que permite obtener la malla de pol´ıgonos.

El algoritmo de poligonizaci´on Marching Cubes descompone el espacio en cubos de igual tama˜no, evalu´andose en los v´ertices de los mismos la funci´on impl´ıcita. A continuaci´on se detectan aquellos cubos que han evaluado con signo contrario alguno de los v´ertices. C´omo los puntos que eval´uan a cero pertenecen a la superficie impl´ıcita, estos cubos son los que cortan a la superficie impl´ıcita.

Un cubo tiene 8 v´ertices que pueden tener dos estados diferentes, dentro o fuera de la superficie, por lo que existen 28 = 256 maneras distintas en las que la superficie

impl´ıcita puede cortar un cubo. Por simetr´ıa, este conjunto de patrones puede ser reducido a 14 (ver figura 2.3). Utilizando estos patrones, la superficie poligonal se

(27)

2.2. POLIGONIZACI ´ON DE SUPERFICIES IMPL´ICITAS 15 obtiene interpolando en las aristas de todos los cubos del espacio.

Para finalizar el modelo se generan las normales mediante interpolaci´on de las normales de los v´ertices de los cubos, y se realiza un mapeo de texturas a partir de las im´agenes m´edicas.

Esta t´ecnica sufre de varios inconvenientes. Uno de ellos es la ambig¨uedad que surge en algunos casos, debido a que un cubo puede corresponderse con varios pa-trones. Enfocados a este problema existen diversas t´ecnicas que lo resuelven, y una de ellas utiliza como poliedro de divisi´on espacial el tetraedro [MW97], el cual no provoca ambig¨uedades.

Otro inconveniente de Marching Cubes es la generaci´on de multitud de tri´angulos deformados (tri´angulos de forma alargada) debido al tama˜no constante de la par-tici´on espacial, y los cuales deben de ser evitados. Para resolver este problema, en [Blo88] Bloomenthal presenta una mejora adaptativa a la partici´on espacial utilizan-do Octrees (ver ejemplo (a) de la figura 2.4). Esta t´ecnica descompone el espacio en 8 cubos, y gradualmente va descomponiendo aquellos cubos que cortan la superficie impl´ıcita hasta alcanzar un cierto tama˜no m´ınimo para los cubos.

Aunque todas estas t´ecnicas reproducen una buena aproximaci´on del modelo, son computacionalmente costosas. Adem´as, porque estas t´ecnicas no se centran en mantener buena topolog´ıa de la malla resultante, se obtienen multitud de tri´angulos algo deformados.

2.2.2.

ecnicas de simulaci´

on de part´ıculas

Ya se vio en la secci´on 2.1.4 c´omo una superficie impl´ıcita puede ser muestreada usando m´etodos basados en f´ısicas para su visualizaci´on. La misma idea se puede utilizar para obtener una malla poligonal, tal y como se presenta en [dFdMGTV92]. Este trabajo muestra dos formas de realizar la simulaci´on f´ısica. La primera es utilizar un sistema de part´ıculas din´amico, simulado mediante el campo de fuerza que genera el gradiente del modelo. Cuando la simulaci´on llega a un equilibrio, debido a que las part´ıculas buscan minimizar la energ´ıa potencial, ´estas se localizan sobre la superficie impl´ıcita. Adem´as, las part´ıculas se encuentran distanciadas de forma uniforme y adaptadas a la curvatura de la superficie. Para obtener la malla

(28)

Figura 2.3: Diferentes patrones en los que un cubo puede cortar a la superficie impl´ıcita (imagen extra´ıda de [LC87]).

Figura 2.4: (a) Mejora adaptativa a Mar-ching Cubes utilizando un Octree. (b) T´ecnica de rastreo de superficie median-te cubos (im´agenes extra´ıdas de [Blo88]).

poligonal, la nube de part´ıculas resultantes se triangula mediante el algoritmo de Delaunay [Del34].

La otra simulaci´on f´ısica que presentan, se realiza mediante un sistema de masa-muelle. Este sistema comienza con una triangulaci´on espacial, cuyos pol´ıgonos se encuentran conectados por muelles. Utilizando el gradiente como fuerza de defor-maci´on, la malla inicial tiende hacia la superficie, a la vez que los muelles permiten distanciar a los v´ertices de forma uniforme.

Aunque estas t´ecnicas obtienen buenos resultados, es necesario que la superficie impl´ıcita requiera de un campo de fuerzas para poder realizar la simulaci´on. Debido a que el c´alculo del gradiente es una tarea compleja en los modelos impl´ıcitos que se utilizan en este trabajo, ya que es complicado calcular el campo de fuerza en un punto interno a varias primitivas impl´ıcitas, estos sistemas de simulaci´on fueron descartados en esta investigaci´on.

(29)

2.2. POLIGONIZACI ´ON DE SUPERFICIES IMPL´ICITAS 17

2.2.3.

ecnicas de rastreo de superficie

Estas t´ecnicas comienzan desde un pol´ıgono inicial, localizado sobre la superficie impl´ıcita, e iterativamente van a˜nadiendo pol´ıgonos a la frontera de la malla hasta lograr cerrarla. La construcci´on de los nuevos pol´ıgonos son obligados a ajustarse a la superficie impl´ıcita para ir recorriendo la superficie del modelo.

Bloomenthal present´o una t´ecnica de poligonizaci´on basado en rastreo de super-ficie [Blo88] (ver ejemplo (b) de la figura 2.4). Su propuesta parte de un cubo semilla sobre la superficie impl´ıcita, e iterativamente va recorriendo la superficie mediante la construcci´on de m´as cubos. Utilizando los patrones de Marching Cubes en cada cubo, se va generando la malla poligonal. Sin embargo, esta t´ecnica genera tri´angulos algo deformados al igual que Marching Cubes.

Otra t´ecnica de rastreo de superficies es la propuesta por Hartmann [Har98], la cual se descompone de varios pasos. En el primero de ellos, se localiza un punto sobre la superficie y se crea un hex´agono centrado en dicho punto, y se localizan los puntos m´as cercanos sobre la superficie para cada uno de los v´ertices del hex´agono. De este modo se obtienen los seis primeros tri´angulos de la malla.

De forma iterativa, el algoritmo intenta crear nuevos hex´agonos desde los v´ertices que bordean de la malla, priorizando el orden de procesamiento en base al ´angulo de los v´ertices en la zona exterior de la malla. A partir del v´ertice escogido se genera un nuevo hex´agono detectando aquellos v´ertices cercanos (ver figura 2.5).

Otra t´ecnica de recorrido de superficie es Edge Spinning [CS04]. Al igual que las anteriores, se parte de un tri´angulo inicial localizado sobre la superficie impl´ıcita, y de forma iterativa se anexan nuevos tri´angulos para completar la malla. Para ello, se buscan nuevos v´ertices sobre la superficie impl´ıcita que permitan formar un nuevo pol´ıgono desde una arista del borde de la malla.

La b´usqueda del nuevo v´ertice se realiza proyectando un punto a una cierta distancia desde la arista frontera en el plano de su tri´angulo, y sobre un c´ırculo centrado en la arista que permita garantizar que el nuevo pol´ıgono no es deformado. Computando la funci´on impl´ıcita y el gradiente, se rota el punto proyectado de manera iterativa hasta encontrar un punto que descanse sobre la superficie impl´ıcita (ver figura 2.6).

(30)

Este algoritmo permite validar los tri´angulos que se crean computando el ´angulo que forman con las aristas vecinas. Los tres casos posibles de construcci´on del nuevo tri´angulo son: construcci´on directa, construcci´on utilizando alguna de las aristas vecinas o, en caso de arista vecina corta, proceder a una reparaci´on de la malla.

La t´ecnica, controla que los nuevos v´ertices que se crean no se encuentren cerca de la frontera de la malla. En estos casos se fusionan ambas fronteras, o bien fusionando el nuevo v´ertice con el cercano encontrado, o bien fusionando el v´ertice cercano al nuevo.

Figura 2.5: Hex´agono que permite poligo-nizar parte de la superficie impl´ıcita en el algoritmo de Hartmann (imagen extra´ıda de [Har98]).

Figura 2.6: Principio de construcci´on de un nuevo tri´angulo por el algorit-mo de edge-spinning (imagen extra´ıda de [CS04]).

Otra t´ecnica de poligonizaci´on de superficies por rastreo de superficie es la de-nominada Marching Triangles [HSIW96a, HSIW96b], muy similar a al algoritmo anterior aunque restringiendo la creaci´on de los nuevos tri´angulos a un test de to-polog´ıa basado en la triangulaci´on de Delaunay [Del34].

En nuestro sistema de creaci´on autom´atica de personajes 3D, la calidad de la malla poligonal es m´as prioritaria que la rapidez de computaci´on de la misma. El motivo es la finalidad del modelo para su uso en animaciones que requieren una buena estructura topol´ogica de la malla, sin necesidad de obtenci´on de la ella en tiempos interactivos.

De los algoritmos anteriores, el algoritmo de Marching Triangles es quiz´as el que mejor calidad de malla obtiene, ya que basa la construcci´on de los pol´ıgonos en una restricci´on topol´ogica. Adem´as, este algoritmo es uno de los m´as aceptados actualmente para poligonizar superficies impl´ıcitas, existiendo una amplia variedad

(31)

2.3. MARCHING TRIANGLES 19 de trabajos encaminados a mejorarlo [HIIT97, AG01, MF02, Fou09].

Por los motivos anteriores, Marching Triangles ha sido el algoritmo escogido como base para el trabajo que aqu´ı se presenta. Por ello, en la siguiente secci´on se detallar´a este algoritmo junto a los trabajos relacionados.

2.3.

Marching Triangles

El algoritmo de Marching Triangles, presentado por Hilton et ´al. [HSIW96a], es una t´ecnica de poligonizaci´on de superficies impl´ıcitas basado en el rastreo de superficie, la cual fue dise˜nada para poligonizar superficies extra´ıdas como fusi´on de un rango de im´agenes [HSIW96b].

Es algoritmo parte de un tri´angulo semilla localizado sobre la superficie impl´ıcita, e iterativamente a˜nade nuevos tri´angulos desde las aristas que bordean la malla hasta que se completa la malla. Para preservar una correcta topolog´ıa de la malla, un nuevo tri´angulo solamente puede ser anexado a la malla si pasa la restricci´on de superficie 3D de Delaunay, la cual permite validar que el pol´ıgono mantiene una buena estructura de malla.

La restricci´on de Delaunay para superficies 3D aprueba la anexi´on de un nue-vo tri´angulo Tnew a la frontera de la malla, si alguna parte de ´esta con la misma

orientaci´on que Tnew, no se encuentra dentro de la circumesfera del tri´angulo Tnew,

siendo ´esta la esfera que pasa por los tres v´ertices de dicho tri´angulo. Esta restricci´on est´a basada en el algoritmo de Delaunay para triangular una nube de puntos, pero extendida para superficies triangulares en el espacio 3D.

En la figura 2.7 se muestra un ejemplo de tri´angulo, y su esfera circunscrita que hace de restricci´on. Esta esfera est´a situada en el circumcentro Ctdel tri´angulo y pasa

por los tres v´ertices del mismo. En caso de que alguna parte de la malla estuviese dentro de la esfera, entonces el algoritmo descarta la construcci´on del tri´angulo.

Marching Triangles es un proceso iterativo que escoge una arista frontera de una lista de aristas que quedan por computar, e intenta crear un nuevo tri´angulo a partir de ella. Por cada iteraci´on del algoritmo, donde se computa una de las aristas frontera de la lista ebound = e(xi, xj), los pasos que realiza el algoritmo son:

(32)

Figura 2.7: Restricci´on de superficie 3D de Delaunay (imagen extra´ıda de [HSIW96a]).

Figura 2.8: Ejemplos 2D de los pasos (a)-1; (b)-4; (c)-6 del algoritmo de Marching Triangles. El caso (d) se corresponde con el paso a˜nadido en el reporte t´ecnico pos-terior (Imagen extra´ıda de [HIIT97]). 1. Estimaci´on del nuevo v´ertice del tri´angulo localizando un punto aproximado

xproj al proyectar una distancia constante lproj desde el punto medio de la

arista, y en el plano del tri´angulo frontera Tbound(xj, xi, xk).

2. Se busca el punto xnew sobre la superficie impl´ıcita m´as cercano a xproj.

3. Se descarta esta arista (termina este paso de iteraci´on) si la orientaci´on de la superficie impl´ıcita en xnew, dada por su normal nnew, es opuesta a la del

modelo nT (normal del nuevo tri´angulo Tnew(xi, xj, xnew)): nT · nnew <0. Este

paso asegura que el nuevo v´ertice no se corresponde con una zona err´onea del modelo, sino a la geometr´ıa local del objeto.

4. Se aplica la restricci´on de Delaunay en 3D al nuevo tri´angulo Tnew = T (xi, xj, xnew).

5. Si Tnewpasa la restricci´on, entonces se a˜nade Tnew, xnew y las aristas e(xj, xnew)

y e(xnew, xi) a la malla actual. Estas aristas nuevas adem´as son a˜nadidas a la

lista de aristas frontera para ser computadas en una iteraci´on del algoritmo posterior, y as´ı permitir a la malla crecer.

6. En el caso de que la restricci´on falle, se repiten los dos pasos anteriores 4 y 5 uti-lizando los v´ertices frontera adyacentes: el v´ertice vecino previo Tprev(xi, xj, xprev)

(33)

2.3. MARCHING TRIANGLES 21 y el v´ertice vecino siguiente Tnext(xi, xj, xnext). Este paso intenta crear

tri´angu-los que conecten v´ertices de la malla que permitan cerrar zonas de la malla. 7. Si en los tres intentos de creaci´on de un tri´angulo falla la restricci´on (de forma

directa, usando arista anterior y usando arista posterior), entonces la arista ebound es descartada sin producir un nuevo tri´angulo para la malla.

El algoritmo de Marching Triangles, por estar basado en triangulaciones de De-launay, genera mallas topol´ogicamente correctas (tri´angulos que tienden a la equi-lateralidad), y es computacionalmente m´as r´apido que el anterior algoritmo de refe-rencia m´as extendido, el de Marching Cubes.

Sin embargo, este nuevo algoritmo genera cracks en zonas de la malla donde las fronteras se encuentran enfrentadas, ya que la restricci´on impide cerrar la zona. Por este motivo, los mismos autores proponen una soluci´on a este problema en un reporte t´ecnico posterior [HIIT97].

La soluci´on que aportan es la de a˜nadir un paso m´as al algoritmo de intento de construcci´on del nuevo tri´angulo. Este paso trata de crear el nuevo tri´angulo utilizan-do un v´ertice solapautilizan-do. Para ello, se busca si hay alg´un tri´angulo Toverlap de la malla

que se encuentre dentro de la esfera de Delaunay del tri´angulo Tnew(xi, xj, xnew),

ambos con misma orientaci´on. En este caso, se aplican los pasos 4 y 5 del algoritmo para testear la restricci´on de Delaunay al tri´angulo T (xi, xj, xoverlap) donde xoverlap

es el v´ertice m´as cercano del tri´angulo solapado Toverlap.

En la figura 2.8 se muestran ejemplos de cuatro de los pasos m´as importantes del algoritmo de Marching Triangles, donde la arista que se est´a computando se corres-ponde con ebound = e(xi, xj), que pertenece al tri´angulo frontera Tbound(xj, xi, xk).

El ejemplo (a) est´a asociado al paso 1 del algoritmo, el cual estima el nuevo v´ertice del tri´angulo a trav´es de una distancia constante de proyecci´on. El ejemplo (b) se corresponde con el paso 4 del algoritmo donde se testea la restricci´on de Delaunay para el tri´angulo que usa el nuevo v´ertice proyectado. En (c), correspondiente al paso 6, se muestra un tri´angulo creado usando la arista vecina siguiente, y la esfera para chequear la restricci´on. En el ejemplo (d) se muestra el paso a˜nadido en el reporte t´ecnico para cerrar la malla. N´otese como el v´ertice solapado es utilizado para crear un tri´angulo que permite unir la parte superior e inferior de la malla, evitando una

(34)

brecha en la zona.

2.3.1.

Marching Triangles

adaptativo

En un trabajo posterior de Akkouche y Galin [AG01], se analizan varios pro-blemas que sufre el algoritmo de Marching Triangles original, y se proponen varias alternativas de mejoras.

Uno de los inconvenientes que sufre el algoritmo es la aparici´on de cracks en la malla, incluso utilizando la alternativa de solapamiento del reporte t´ecnico. Esto es debido a que la restricci´on de Delaunay solamente tiene en cuenta la topolog´ıa del nuevo tri´angulo con respecto a la malla actual, sin tener en cuenta futuros tri´angulos que podr´ıan haber tenido una mejor esfera de restricci´on.

En la figura 2.9 se est´a computando la arista e probando la restricci´on de Delau-nay para el tri´angulo T usando la esfera S. Esta restricci´on valida la construcci´on del nuevo tri´angulo, ya que no hay parte de la malla dentro de la esfera. Sin embargo, el nuevo punto xp no satisface la restricci´on para una existente arista frontera en el

tri´angulo T’, ya que se encuentra dentro de su esfera de restricci´on S’. Por contra, n´otese que si se hubiese procesado antes la arista de T’ en vez de la de T, el punto xp podr´ıa haber quedado m´as intermedio a ambas aristas evitando el crack.

Conscientes de que cracks se producen en la malla, y de que ´estos son dif´ıcilmente evitables, Akkouche y Galin proponen un algoritmo para cerrar los resultantes cracks en una segunda pasada del algoritmo. Este procedimiento para rellenar los agujeros simplemente conecta los v´ertices del crack sin crear nuevos, en base a que el tama˜no del crack no excede el tama˜no de un tri´angulo porque en caso contrario la restricci´on de Delaunay habr´ıa permitido la construcci´on de alguno. Este algoritmo tiene dos fases:

Partici´on del contorno: de forma iterativa se busca una arista del crack que pueda ser unida a un v´ertice del mismo, de forma que el tri´angulo resultante divida al crack en dos m´as peque˜nos. Esta divisi´on se realiza iterativamente en cada uno de los cracks resultantes hasta que un m´ınimo de tama˜no de crack es alcanzado, o el crack no puede ser partido en m´as mitades.

(35)

2.3. MARCHING TRIANGLES 23

Figura 2.9: Ejemplo de tri´angulo T que pasa la restricci´on de Delaunay, pero que posiblemente generar´a un crack por no te-nerse en cuenta un tri´angulo T’ de la malla existente (imagen extra´ıda de [AG01]).

Figura 2.10: Tres problemas que presen-ta el algoritmo de Marching Triangles. (a) Tri´angulo que cruza otro existente debi-do a una arista corta. (b) Tri´angulo que no localiza la existencia de un v´ertice cer-cano. (c) Tri´angulo que solapa otro exis-tente (imagen extra´ıda de [MF02]). Mallado del contorno: se finaliza rellenando los huecos existentes mediante tri´angulos. En este paso hay que diferenciar entre dos casos distintos: el de huecos simples y el de emparejamiento de contornos enfrentados, el cual es m´as complejo. La dificultad de este ´ultimo caso reside en distinguir las situaciones en las que hay que unir contornos, o cuando no es necesario ya que pertenecen a distintas partes de la malla.

Otra importante mejora que a˜naden al algoritmo original es la de construir los tri´angulos de forma que su tama˜no se adapte la curvatura del modelo. Para ello se var´ıa la distancia de proyecci´on en funci´on a la curvatura de la superficie impl´ıcita donde el nuevo tri´angulo va a ser creado. Aunque se puede evaluar las hessianas de la funci´on campo para anticipar la curvatura de la arista a computar, ellos proponen una alternativa m´as r´apida en tres pasos:

Correcci´on geom´etrica: se proyecta el punto medio xmde la arista a

compu-tar e sobre la superficie impl´ıcita para obtener el punto xs.

Computaci´on del punto de partida: siguiendo la direcci´on tangencial a la superficie ~t, se proyecta xs una distancia d =

√ 3

(36)

tri´angulo equil´atero. La distancia e es la media entre las longitudes de la arista a computar y sus vecinas para mantener un tama˜no medio de tri´angulo. Adem´as se utiliza un l´ımite m´ınimo de distancia para que, en regiones planas, no se creen tri´angulos demasiado peque˜nos despu´es de haber atravesado una regi´on de alta curvatura.

Computaci´on del v´ertice sobre la superficie: mediante bisecci´on entre un punto fuera de la superficie impl´ıcita y otro interior, y utilizando el gradiente de la funci´on impl´ıcita, se aproxima el punto obtenido en el paso anterior a la superficie impl´ıcita.

En este mismo trabajo, ambos autores tambi´en proponen el uso de su algoritmo como parte de una herramienta de modelado impl´ıcito interactiva basado en esque-letos. Para ello, utilizan una t´ecnica incremental que permite eliminar tri´angulos de una zona de la malla donde la superficie impl´ıcita ha sido modificada, generando un conjunto de aristas fronteras debido al agujero que se forma. Invocando el algoritmo de Marching Triangles posteriormente sobre esta lista de aristas, la malla se vuelve a cerrar, ajust´andose los nuevos tri´angulos a la nueva superficie modelada.

2.3.2.

Marching Triangles

con restricci´

on para aristas

McCormick y Fisher desarrollaron una t´ecnica [MF02] orientada a mejorar las mallas que se obtienen en Marching Triangles para modelos con aristas que unen pol´ıgonos en un ´angulo bastante abrupto (por ejemplo aristas que unen el techo con la pared de un edificio), ya que estas aristas suelen ser recortadas por el algoritmo de Marching Triangles (ver ejemplo (a) de la figura 2.11).

La t´ecnica que proponen los autores permite preservar las aristas que se encuen-tran en zonas angulosas. Primeramente se localizan dobleces mediante un chequeo de discontinuidades en el modelo, generando aristas en las lineas que forman la discon-tinuidad. A continuaci´on, utilizan el algoritmo de Marching Triangles para generar los pol´ıgonos del modelo, restringiendo estos a las aristas de discontinuidades antes creadas (ver ejemplo (b) de la figura 2.11).

(37)

2.3. MARCHING TRIANGLES 25

Figura 2.11: (a) Detalle de esquina en un modelo recortada por Marching Trian-gles. (b) Detecci´on de l´ıneas de dobleces por algoritmo Edge-Constrained Marching Triangles y aristas de pol´ıgonos restrin-gidas a la l´ınea de doblez (im´agenes ex-tra´ıdas de [MF02]).

Figura 2.12: (a) Modificaci´on de la esfera de restricci´on en el algoritmo de Fournier. (b1) Malla resultante de computar la

aris-ta A antes que B y (b2) comparaci´on de

la malla al computar primero la arista B (im´agenes extra´ıdas de [Fou09]).

2.3.3.

Marching Triangles

evitando generaci´

on de cracks

Existe un proyecto m´as reciente de mejora del algoritmo Marching Triangles desarrollado por Fournier [Fou09]. Este trabajo se enfoca en realizar la poligoniza-ci´on en una ´unica pasada, sin la necesidad de un proceso para cerrar cracks. Adem´as, introducen una adaptaci´on del algoritmo a un reciente modelo de definici´on de su-perficies impl´ıcitas basado en vectores (Vector Field Distance Transform) [FDB07]. En este trabajo, Fournier detecta varios problemas en el algoritmo original de Marching Triangles. El caso (a) de la figura 2.10 muestra uno de estos problemas, donde un tri´angulo muy estrecho es creado desde una arista muy corta. Adem´as, aunque este nuevo tri´angulo solapa otro ya existente en el modelo, el pol´ıgono no es descartado debido a que su esfera de restricci´on de Delaunay no contiene alg´un v´ertice de la malla.

El caso (b) destapa otra deficiencia del algoritmo original. En el ejemplo se crea un nuevo tri´angulo que aparentemente es bueno, pero que no tiene en cuenta que tiene un v´ertice cercano dejando un espacio libre muy estrecho. Esto provocar´a que en iteraciones m´as avanzadas, o bien se cree un tri´angulo muy estrecho (deformado),

(38)

o bien se genere un crack en la zona.

El ´ultimo caso de la figura 2.10 presenta otro problema en la construcci´on de tri´angulos. En esta ocasi´on, el v´ertice proyectado intersecta un tri´angulo existente,y sin embargo la esfera de restricci´on permite su construcci´on. Este caso es muy similar al visto en la figura 2.9, ya que se tiene solo en cuenta que el nuevo tri´angulo sea topol´ogicamente bueno con respecto al resto de la malla, pero no tiene en cuenta que el resto de la malla lo sea con el nuevo v´ertice.

Las diferentes mejoras que plantean para el algoritmo, en su versi´on para campos escalares, se resumen en:

Mejora para la estimaci´on del nuevo v´ertice: para adaptar el tri´angulo a la curvatura, se proyecta un punto cierta distancia dependiente de la arista frontera, al igual que se propuso en [AG01]. A continuaci´on, localizando el v´oxel m´as cercano sobre la superficie impl´ıcita, e interpolando a entre ´este y su v´oxel de signo opuesto (al otro lado de la superficie impl´ıcita), se obtiene el punto m´as cercano sobre la superficie.

Mejora al test de Delaunay: debido a que la esfera de Delaunay es propensa a producir cracks en la malla, una nueva esfera es propuesta en este trabajo que relaja la restricci´on, y que permite que m´as tri´angulos sean aceptados. Se utiliza una esfera m´as peque˜na que pasa por el nuevo v´ertice y el punto medio de la arista a procesar, y por tanto centrada en el punto medio de ambos (ver ejemplo (a) de la figura 2.12). Porque esta nueva esfera no engloba todo el tri´angulo, es necesario un test adicional para comprobar que no hay intersecci´on entre el nuevo tri´angulo y los existentes en la malla.

Mejora a la construcci´on de tri´angulos por alternativas: como adici´on a las alternativas que el algoritmo original realiza en caso de fallo (usando la arista vecina previa, usando la arista vecina siguiente y usando un v´ertice solapado), se propone cambio en el caso de encontrarse v´ertices solapados. Si el v´ertice solapado produce un fallo en la restricci´on de Delaunay, es posible que alg´un otro v´ertice solapado en la esfera pueda ser construido satisfacto-riamente. Por ello se hace necesaria la comprobaci´on no solamente del v´ertice solapado m´as cercano, sino de todos los v´ertices solapados que se localicen.

(39)

2.4. CONCLUSIONES 27 Mejora al orden de procesamiento de aristas: seg´un el orden de proce-sado de las aristas frontera en el proceso iterativo del algoritmo de Marching Triangles, se obtienen diferentes triangulaciones en la malla resultante (ver ejemplo (b) de la figura 2.12). El algoritmo original no contempla un orden especifico, sino que utiliza una cola. Fournier prob´o diferentes alternativas y lleg´o a la conclusi´on de que se obtiene mejores resultados, en cuanto a mi-nimizar el n´umero de cracks en la malla se refiere, utilizando un orden de procesado siguiendo el contorno de la malla. Para ello se escogen las aristas siguiendo una direcci´on, por ejemplo hacia la arista vecina siguiente desde la arista procesada.

2.4.

Conclusiones

La primera fase del sistema de creaci´on autom´atica de personajes 3D a partir de im´agenes 2D es la encargada de traducir el modelo definido por las im´agenes en un modelo volum´etrico definido impl´ıcitamente mediante un conjunto de esferas. Por este motivo, el poligonizador que se presenta en este trabajo ha tenido que ser adaptado a esta representaci´on del modelo impl´ıcito inicial.

Aunque es sencillo detectar si un punto se encuentra interior, exterior o sobre la superficie impl´ıcita definida por un conjunto de esferas, es m´as complejo obtener el campo de fuerzas interno al modelo mediante el c´alculo del gradiente. Es por este motivo que algoritmos de poligonizaci´on basados en simulaci´on fueron descartados para este trabajo.

El algoritmo de Marching Triangles, en base a la informaci´on recopilada, parece ser el algoritmo de poligonizaci´on m´as aceptado en la actualidad. El motivo de esta aceptaci´on es porque la t´ecnica, por estar basada en la restricci´on de Delaunay, est´a orientada a la obtenci´on de mallas topol´ogicamente buenas. Los casos (a) y (b) de la figura 2.13 demuestran que la malla obtenida con Marching Triangles tiene una estructura de pol´ıgonos bastante homog´enea con respecto a la malla que se obtiene con el anterior algoritmo de poligonizaci´on de referencia de Marching Cubes, el cual no atiende a la forma de los pol´ıgonos que genera.

(40)

Figura 2.13: Malla obtenida con diferentes algoritmos de poligonizaci´on para una superficie impl´ıcita de esfera: (a) Marching Cubes; (b) Marching Triangles; (c) Mar-ching Quads (im´agenes (a) y (b) obtenidas de [HIIT97]).

multitud de trabajos que permiten mejorar este algoritmo (secci´on 2.3), en esta investigaci´on se decidi´o utilizar una t´ecnica similar para ser usada como segunda fase del sistema de generaci´on autom´atica de personajes 3D.

Sin embargo, el algoritmo de Marching Triangles, ´este no est´a enfocado a obtener mallas para su uso en sistemas de animaci´on. Las mallas deformables de persona-jes suelen estar construidas con pol´ıgonos cuadrangulares, situados y orientados en base a la simetr´ıa del modelo, ya que estas caracter´ısticas facilitan la animaci´on de personaje.

En un principio, para obtener mallas de quads, se podr´ıa haber realizado una poligonizaci´on mediante Marching Triangles y un paso posterior de conversi´on a malla de quads. Sin embargo, se ha optado por una adaptaci´on de Marching Trian-gles para generar directamente una malla de quads. Esta adaptaci´on es el algoritmo deMarching Quads que se presenta en este documento, y el cual permite adem´as adaptar los quads a la simetr´ıa y a la curvatura del modelo.

El ejemplo (c) de la figura 2.13 permite comparar la malla poligonal de un modelo esf´erico con respecto a la malla que se obtiene con los algoritmos de referencia ante-riores. Se puede observar que Marching Quads genera una malla mayoritariamente compuesta por pol´ıgonos cuadrangulares.

(41)

Cap´ıtulo 3

Algoritmo de Marching Quads

3.1.

Introducci´

on

3.1.1.

Estructura del algoritmo

El algoritmo de Marching Quads que se presenta a continuaci´on es una adap-taci´on de los pasos del algoritmo de Marching Triangles (secci´on 2.3) para generar pol´ıgonos cuadrangulares. Al igual que en Marching Triangles se parte de un pol´ıgono inicial, que en este caso es un quad, e iterativamente se a˜naden nuevos a la frontera de la malla hasta completar la superficie del modelo.

El algoritmo de Marching Quads consta de los siguientes pasos:

1. Se localiza un quad sobre la superficie impl´ıcita, se a˜naden todos los elementos del quad semilla al modelo poligonal M y se introducen las cuatro aristas en la cola de aristas a computar Ce, ya que son frontera de la malla.

2. Algoritmo deMarching Quads.

a) Se obtiene una arista eb del frente de la cola Ce. Si la cola se encuentra

vac´ıa, se finaliza el algoritmo de poligonizaci´on accediendo al paso 3. b) Dos puntos P1 y P2 son proyectados desde cada uno de los v´ertices V1

y V2 de la arista eb una distancia constante lproj en el plano del quad

frontera Qb(V1, V2, V3, V4), y perpendiculares a la arista eb.

c) Para cada uno de los dos puntos proyectados P1 y P2, se localizan los

puntos m´as cercanos a la superficie impl´ıcita Vnew1 y Vnew2.

(42)

d ) Si la malla M contiene un v´ertice Vnear1cercano a Vnew1, entonces Vnew1=

Vnear1. An´alogamente, se localiza el v´ertice m´as cercano a Vnew2 si

exis-tiese.

e) Utilizando la arista eb, y los dos nuevos v´ertices Vnew1 y Vnew2, se crea

un nuevo quad Qnew(V1, Vnew1, Vnew2, V2). Si el modelo tiene orientaci´on

opuesta a Qnew en alguno de los dos nuevos v´ertices (normales de la

su-perficie impl´ıcita en Vnew1y Vnew2opuestas a la normal de Qnew), entonces

se descarta la creaci´on de un quad desde la arista eb a˜nadiendo ´esta arista

a la lista de aristas candidatas a producir cracks Cc, y se vuelve al paso

2a.

f ) Si se detectaron v´ertices cercanos para los nuevos v´ertices Vnew1y Vnew2en

el paso 2d, y estos se encuentran unidos por una arista, se crea un nuevo quad Qop = (V1, Vnew1, Vnew2, V2) y se prueba la restricci´on de Delaunay

en ´el.

Si pasa la restricci´on Qop, entonces se a˜nade a M junto a las dos

nuevas aristas que se crean, las cuales tambi´en son a˜nadidas a Ce. Si

la arista eop(Vnew1, Vnew2) se encuentra en la lista de aristas de crack

Cc, entonces se elimina de la lista ya que no producir´a crack por dejar

de ser frontera de malla. Finalmente se contin´ua procesando aristas volviendo al paso 2a.

Si no pasa la restricci´on, o no se detect´o una arista opuesta, se con-tin´uan probando otras alternativas.

g) Se comprueba que Qnew pasa la restricci´on de Delaunay.

Si pasa la restricci´on se a˜nade Qnew a M, as´ı como Vnew1, Vnew2y las

tres nuevas aristas que se forman en el quad. Adem´as, por ser estas nuevas aristas frontera de malla, se a˜naden a Ce. Adem´as, por haber

producido un quad eb, se vuelve al paso 2a.

Si no pasa la restricci´on se contin´ua probando otras alternativas. h) Se prueban tres alternativas de construcci´on de un nuevo quad utilizando

la arista previa ep(V1, Vp), la arista frontera siguiente es(V2, Vs) o ambas

(43)

3.1. INTRODUCCI ´ON 31 quads Qps(V1, Vp, Vs, V2), Qp(V1, Vp, Vnew2, V2) y Qs(V1, Vnew1, V s, V2) de

estas alternativas.

Si alguno de los quads Qps, Qp o Qs pasa la restricci´on, entonces se

a˜nade el pol´ıgono a M junto a los nuevos v´ertices y aristas que se creen, y ´estas se a˜naden tambi´en a la cola Ce. Adem´as, por haberse

utilizado aristas existentes ep y es, se eliminan de la lista de aristas

de crack Cc si estuviesen contenidas en ella. Por ´ultimo, por haberse

producido un quad, se vuelve al paso 2a.

Si no pasa la restricci´on se contin´ua el algoritmo.

i ) Si todas las alternativas anteriores han fallado, entonces la arista eb es

descartada sin producir un nuevo quad para la malla M. Es por ello que la arista eb se introduce en la lista de aristas candidatas a producir cracks

Cc. Se vuelve al paso 2a para continuar procesando otras aristas.

3. Cuando no hay m´as aristas que procesar, el algoritmo de Marching Quads acaba. Si la malla resultante M contiene cracks, se procede a su cierre mediante el algoritmo detallado en la secci´on 3.5.

3.1.2.

Problemas a resolver

Este algoritmo que se propone se compone de cuatro problemas complejos bien diferenciados que han tenido que ser resueltos de forma aislada:

Marching Quads: Este problema se corresponde con el paso 2 del algoritmo descrito anteriormente. Este problema es un proceso iterativo que pretende anexar un nuevo quad a una arista del borde la malla mediante diversas alter-nativas de construcci´on. Este problema engloba todo lo referente a los cambios en el algoritmo de Marching Triangles para que pueda generar pol´ıgonos cua-drangulares.

B´usqueda del punto m´as cercano sobre la superficie impl´ıcita: En el paso 2c es necesario que los puntos proyectados, para que puedan ejercer como v´ertices del nuevo quad, se encuentren sobre la superficie impl´ıcita. Es por ello

(44)

que se necesita una t´ecnica que permita localizar el punto m´as cercano sobre la superficie definida por el conjunto de esferas del modelo impl´ıcito.

B´usqueda del quad inicial: El algoritmo de Marching Quads, al igual que los algoritmos de poligonizaci´on basados en rastreo de superficie, necesitan de una malla inicial desde donde iniciar el proceso iterativo de anexi´on de quads (correspondiente al paso 1 del algoritmo descrito). Es por ello que se necesita una t´ecnica que permita localizar un quad semilla que se sit´ue sobre la superficie impl´ıcita y adem´as, para versiones basadas en la simetr´ıa del modelo, que este quad inicial se sit´ue sobre el plano de simetr´ıa.

Cierre de cracks: Porque este algoritmo que se propone, al igual que Mar-ching Triangles, obtiene mallas con cracks (paso 3 del algoritmo), es necesario un procedimiento final que permita cerrar los agujeros.

En la secci´on 3.2 se detallar´a el algoritmo de poligonizaci´on Marching Quads. La secci´on 3.3 mostrar´a la soluci´on desarrollada en este trabajo para abordar el proble-ma de b´usqueda del punto m´as cercano sobre la superficie impl´ıcita. La secci´on 3.4 explicar´a la t´ecnica que se propone para localizar un quad inicial sobre la superficie impl´ıcita, y el plano de simetr´ıa. Finalmente, la secci´on 3.5 tratar´a sobre el algoritmo que se ha desarrollado para cerrar los cracks que se obtienen al finalizar el algoritmo de poligonizaci´on.

3.2.

Poligonizaci´

on de la superficie impl´ıcita:

Mar-ching Quads

3.2.1.

3D Delaunay Surface Constraint

aplicado a quads

El algoritmo de Marching Quads, al igual que Marching Triangles, est´a basado en la creaci´on de nuevos pol´ıgonos que se anexan a la frontera de la malla si logran pasar una restricci´on que permite mantener una correcta estructura de malla. Esta restricci´on es una extensi´on del algoritmo de Delaunay para triangular nubes de puntos, aunque orientado a superficies en el espacio 3D.

Referencias

Documento similar