simplificación de mallas de - web.cimne.upc.edu · pdf fileíndice •...

43
Simplificación de mallas de Simplificación de mallas de triángulos Autor: Miguel Pasenau Autor: Miguel Pasenau Director: Carlos Andújar Departament de Llenguatges i Sistemes Informàtics Facultat d’Informàtica de Barcelona

Upload: nguyennguyet

Post on 07-Feb-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

Simplificación de mallas deSimplificación de mallas de triángulosg

Autor: Miguel PasenauAutor: Miguel PasenauDirector: Carlos Andújar

Departament de Llenguatges i Sistemes InformàticsFacultat d’Informàtica de Barcelona

ÍndiceÍndice• Introducciónt oducc ó• Aplicación

– Plataforma– Algoritmos

• ResultadosModelos– Modelos

– Tiempos, escalabilidad

• Conclusiones

22 Junio 2011 / 2

ÍndiceÍndice• Introducciónt oducc ó• Aplicación

– Plataforma– Algoritmos

• ResultadosModelos– Modelos

– Tiempos, escalabilidad

• Conclusiones

22 Junio 2011 / 3

MotivaciónMotivación• Modelos escaneados de alta resoluciónode os esca eados de a ta eso uc ó• Simulaciones con 10^9 elementos• Interacción en tiempo real• Plataformas comunesPlataformas comunes

22 Junio 2011 / 4

ObjetivosObjetivos• Desarrollar algoritmo de simplificaciónesa o a a go t o de s p cac ó• Nivel de detalle seleccionable• Rápido• Eficiente en memoriaEficiente en memoria• Multiplataforma• Robusto

22 Junio 2011 / 5

EtapasEtapas• Estudio del artestud o de a te• Desarrollo aplicación de ensayo• Implementación primera versión• Ampliación y mejorasAmpliación y mejoras• Análisis de resultados

22 Junio 2011 / 6

ÍndiceÍndice• Introducciónt oducc ó• Aplicación

– Plataforma– Algoritmos

• ResultadosModelos– Modelos

– Tiempos, escalabilidad

• Conclusiones

22 Junio 2011 / 7

PlataformaPlataforma• Desarrollado en C ++, OpenMP y OpenGLesa o ado e C , Ope y Ope G• Usando FLTK 1.3.x ( incluye GLUT)

22 Junio 2011 / 8

Algoritmo de DeCoro y Tatarchuk 2007g y

• Full grid, simplificación uniforme de grupos g , p g pvértices

• Algoritmo de tres pasos:Algoritmo de tres pasos:– Paso 1: crear mapa de QEF a partir de la mallaPaso 2 encontrar el representante óptimo para– Paso 2: encontrar el representante óptimo para cada celdaPaso 3: simplificación de malla colapsando– Paso 3: simplificación de malla, colapsando vértices de cada celda en su representante

Utili l d áti d G l d• Utiliza el error cuadrático de Garland y Heckbert 1997

22 Junio 2011 / 9

Algoritmo de DeCoro 2007Algoritmo de DeCoro 2007• Paso 1: para cada nodo de cada triángulo, acumular aso pa a cada odo de cada t á gu o, acu u asus coordenadas y la QEF del triángulo en su celda

QEF QEF QEF QEF QEF QEF QEF QEF

QEF QEF QEF QEF QEF QEF QEF QEFQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEFQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEFacc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEF

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc acc

22 Junio 2011 / 10

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

acc acc acc acc acc acc acc acc

Grid de 8 x 8 x 8 para acumular: QEF y vértices de la celda

Algoritmo de DeCoro 2007Algoritmo de DeCoro 2007• Paso 2: representante óptimo de la celda:aso ep ese ta te ópt o de a ce da

– Invertir QEFV ifi i tá l ld– Verificar si está en la celda

– Si no, usar el centroide de los vértices QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEFQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEF QEF QEF QEF QEF QEF QEF QEFacc acc acc acc acc acc acc accQEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

Representante óptimo

22 Junio 2011 / 11

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

QEFacc

Algoritmo de DeCoro 2007Algoritmo de DeCoro 2007• Paso 3: para cada triángulop g

– Obtener las celdas ( cluster_id) de sus vértices– Si no colapsa: p

• Sustituir vértices por representante óptimo• Guardar triángulo Mapa Qef + Acc

G id d 9 9 9Grid de 9 x 9 x 9

22 Junio 2011 / 12

Algoritmo de DeCoro 2007Algoritmo de DeCoro 2007• Paso 3: para cada triángulop g

– Obtener las celdas de sus vértices– Si colapsa en línea: p

• Sustituir vértices por representante óptimo• Guardar línea Mapa Qef + Acc

G id d 9 9 9Grid de 9 x 9 x 9

22 Junio 2011 / 13

Mejoras introducidasMejoras introducidas• Recuperación de líneasecupe ac ó de eas

22 Junio 2011 / 14

Grid de 19 x 19 x 19

Mejoras introducidasMejoras introducidas• Restricción del representante a la celdaest cc ó de ep ese ta te a a ce da• Recuperación de líneas• Triángulos y líneas únicas• Corrección de normalesCorrección de normales

22 Junio 2011 / 15

Calidad y resoluciónCalidad y resolución• Full grid hasta 2563 = 1,1 GBu g d asta 56 , G

22 Junio 2011 / 16

Calidad y resoluciónCalidad y resolución• Ocupación según resolución de la malla Ocupac ó segú eso uc ó de a a apoligonal del modelo Lucy

Celdas ocupadas y memoria ( 72 bytes = qef + acc + opt)( y q p )

grid # celdas % / total MBytes1283 23 k 1 % 1,5,2563 91 k 0,5 % 65123 351 k 0,3 % 24,

1.0243 1,3 M 0,1 % 902.0483 4,6 M 0,05 % 313

22 Junio 2011 / 17

, ,4.0963 10 M 0,02 % 706

Hash espacial Alcántara et al. 2009Hash espacial Alcántara et al. 2009• Primer nivel: repartir en buckets de <= 512 items

Buckets = # celdas / 409

p

Max 512 items

h( k) = k mod #_buckets

22 Junio 2011 / 18

Media de 409 items

Espacio extra

Hash de cuco Pagh y Rodler 2001Hash de cuco Pagh y Rodler 2001• Hash de cuco: guardar todos los elementos usando g1

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 19

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Hash de cuco: guardar resto de elementos usando g2

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 20

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Hash de cuco: guardar resto de elementos usando g3

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 21

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Guardar elementos usando g1 sacando los ya guardados

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 22

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Guardar elementos usando g2 sacando los ya guardados

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 23

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Guardar elementos usando g3 sacando los ya guardados

Max 512 items

Media de 409 items Espacio extra

g1( k) g2( k) g3( k)

22 Junio 2011 / 24

Tabla T1 Tabla T2 Tabla T3

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Copiar las tablas y seed de vuelta al bucketp y

g1( k) g2( k) g3( k)

Tabla T1 Tabla T2 Tabla T3

Max 512 items

Tabla T1 – g1( k) Tabla T2 – g2( k) Tabla T3 – g3( k)

seed

22 Junio 2011 / 25

Tabla T1  g1( k)  Tabla T2  g2( k)  Tabla T3  g3( k) Media de 409 items Espacio 

extra

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Lista de claves = celdas ocupadassta de c a es ce das ocupadas• Hash híbrido de dos niveles:

– Primer nivel: hash tradicional y global• Buckets de <= 512 elementos• Media de ocupación de 409 elementos:

– #_buckets = ( #_celdas + 408) / 409

• Función hash:– h( k) = k mod #_bucketsAlt ti– Alternativa: 

» h( k) = ( ( c0 + c1 ∙ k ) mod 1900813) mod #_buckets» c0, c1 = primos

22 Junio 2011 / 26

0, 1  p

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Segundo nivel: hash de cuco en cada bucketg

– Max 512 items + Espacio extra = 573 itemsMax 512 items

– Dividido en tres sub‐tablas de 191 items

Media de 409 items Espacio extra

Dividido en tres sub tablas de 191 items

Tabla T1 – g1( k) Tabla T2 – g2( k) Tabla T3 – g3( k)

– Buscar _seed para construir• gi( k) = ( ci0 + ci1 ∙ k ) mod 191

Tabla T1  g1( k)  Tabla T2  g2( k)  Tabla T3  g3( k) 

22 Junio 2011 / 27

gi( k)   ( ci0  ci1  k ) mod 191• cij = _seed ^ cteij // cteij constantes predefinidas

Hash espacial Alcántara 2009Hash espacial Alcántara 2009• Acceso constante:cceso co sta te

– 1r nivel: h( k) = k mod #_buckets ‐ 1 acceso2o i l ( k) i ( k) i ( k) 2 4– 2o nivel: g1( k) sino g2( k) sino g3( k) ‐ 2..4 accesos

• Nivel ocupación: 409 / 573 = 71,38 %

N it l l li t d ld d• Necesita calcular lista de celdas ocupadas• Elemento:

– Clave = cluster_idValor = función error cuádrica + acumulación coords

22 Junio 2011 / 28

– Valor = función error cuádrica + acumulación coords

Aplicación: DeCoro 2007 + Alcántara 2009p

• Algoritmo de cuatro pasos:go t o de cuat o pasos– Paso 1: 

• crear lista celdas ocupadas• crear lista celdas ocupadas• crear hash híbrido, elemento = ( cluster_id, qef( 0))

P 2 d QEF ti d l ll– Paso 2: crear mapa de QEF a partir de la malla– Paso 3: encontrar el representante óptimo para cada celda

– Paso 4: simplificación de malla, colapsando vértices de cada celda en su representante

22 Junio 2011 / 29

ÍndiceÍndice• Introducciónt oducc ó• Aplicación

– Plataforma– Algoritmos

• ResultadosModelos– Modelos

– Tiempos, escalabilidad

• Conclusiones

22 Junio 2011 / 30

Modelo LucyModelo LucyOriginalGrid 4096310 3 M puntosGrid 204834 6 M puntosGrid 102431 3 M puntosGrid 5123351 K puntosGrid 256391 K puntosGrid 128323 K puntosGrid 6435 K puntosGrid 3231 212 puntosGrid 163284 puntosGrid 8368 puntosGrid 4318 puntosGrid 238 puntos14 M puntos28 M triángulos0 líneas

10,3 M puntos20,6 M triángulos7 líneas73,3 %

4,6 M puntos9,1 M triángulos6 líneas32,5 %

1,3 M puntos2,6 M triángulos23 líneas9,4 %

351 K puntos705 K triángulos17 líneas2,5 %

91 K puntos183 K triángulos11 líneas0,65 %

23 K puntos47 K triángulos12 líneas0,16 %

5 K puntos12 K triángulos8 líneas0,04 %

1.212 puntos2.800 triángulos4 líneas0,01 %

284 puntos660 triángulos6 líneas0,002 %

68 puntos138 triángulos6 líneas0,0005 %

18 puntos32 triángulos2 líneas~ 0,0001 %

8 puntos14 triángulos0 líneas< 0,0001 %72 s. con HashUC31 s. con HashUC11 s. con HashUC5 s. con HashUC4 s. con HashUC6 s. con FullUC4 s. con HashUC5 s. con FullUC8 s. con HashUC4 s. con FullUC23 s. con HashUC4 s. con FullUC60 s. con HashUC5 s. con FullUC59 s. con HashUC7 s. con FullUC61 s. con HashUC13 s. con FullUC62 s. con HashUC62 s. con FullUC

22 Junio 2011 / 31

Modelo ciudadModelo ciudadOriginal: 6,1 M puntos y 15,6 M triángulosGrid 1283 : 0,21 % del original, 13 K puntos, 34 K triángulos, 380 líneasGrid 2563 : 0,73 % del original, 44 K puntos, 113 K triángulos, 548 líneasGrid 5123 : 2,2 % del original, 138 K puntos, 332 K triángulos, 1 K líneasGrid 1.0243 : 6 % del original, 386 K puntos, 881 K triángulos, 1,5 K líneasGrid 2.0483 : 12 % del original, 780 K puntos, 1,7 M triángulos, 1,8 K líneasGrid 4.0963 : 19 % del original, 1,3 M puntos, 2,7 M triángulos, 2 K líneasGrid 8.1923 : 28 % del original, 1,9 M puntos, 3,8 M triángulos, 1,5 K líneasGrid 16.3843 : 37 % del original, 2,6 M puntos, 5,2 M triángulos, 739 líneasOriginal: 6,1 M puntos y 15,6 M triángulos

22 Junio 2011 / 32

ResultadosResultados• Error:o

Grid 12830,16 % del originalGrid 25630,65 % del originalGrid 51232,5 % del original

22 Junio 2011 / 33

23 K puntos47 K triángulos12 líneas

91 K puntos183 K triángulos11 líneas

351 K puntos705 K triángulos17 líneas

Resultados: escalabilidadResultados: escalabilidad• Algoritmo de DeCoro con full gridgo t o de eCo o co u g d

Distribución tiempoprocesos 1 core 2 cores 4 cores 6 cores

Cronometrado en nodo 2 cpu Intel procesos 1 core 2 cores 4 cores

Inicialización 5 % 7 % 10 %Crear mapa QEF 62 % 58 % 51 %Buscar óptimo 1 % 1 % 2 %

6 cores10 %47 %2 %

pXeon E5410Simplificando el modelo lucy con 

id d 2563

22 Junio 2011 / 34

Buscar óptimo 1 % 1 % 2 %Simplificar malla 32 % 34 % 37 %

2 %41 %

Total 13 s. 7 s. 4 s. 3 s.

un grid de 2563

Resultados: escalabilidadResultados: escalabilidad• Algoritmo DeCoro + Alcántara: hash espacialgo t o eCo o cá ta a as espac a

Cronometrado en pc i7‐920

Distribución tiempoprocesos 1 core 2 cores 4 cores 4 c + HT

Cronometrado en pc i7‐920

Distribución tiempoprocesos 1 core 2 cores 4 cores 4 c + HT p

Simplificando el modelo lucy con un grid de 2563

procesos 1 core 2 cores 4 coresCrear hashes 7 % 7 % 7 %

Crear mapa QEF 60 % 58 % 59 %Buscar óptimo 1 % 2 % 3 %

4 c. + HT5 %59 %3 %

pSimplificando el modelo lucy con un grid de 2.0483

procesos 1 core 2 cores 4 coresCrear hashes 23 % 27 % 32 %

Crear mapa QEF 22 % 20 % 17 %Buscar óptimo 3 % 3 % 3 %

4 c. + HT36 %15 %3 %

22 Junio 2011 / 35

Buscar óptimo 1 % 2 % 3 %Simplificar malla 30 % 32 % 28 %

3 %29 %

Total 9 s. 5 s. 3 s. 2,5 s.

Buscar óptimo 3 % 3 % 3 %Simplificar malla 51 % 49 % 46 %

3 %44 %

Total 34 s. 20 s. 13 s. 10 s.

ÍndiceÍndice• Introducciónt oducc ó• Aplicación

– Plataforma– Algoritmos

• ResultadosModelos– Modelos

– Tiempos, escalabilidad

• Conclusiones

22 Junio 2011 / 36

ConclusionesConclusiones• Aplicación gMeshSimp g

– Algoritmo de simplificación DeCoro 2007 + Alcántara 2009

– 270 bytes / nodo malla original– Coste temporal lineal:Coste temporal lineal:

• Recorrido por los nodos de la malla: crear hash• Recorrido por los elementos: acumular qef y coordsRecorrido por los elementos: acumular qef y coords• Recorrido por los elementos: simplificación de malla• Recorrido por la lista de celdas ocupadasp p

– Simplifica una malla de 28.000.000 triángulos en 4 segundos ( Intel QuadCore Q9550)

22 Junio 2011 / 37

ConclusionesConclusiones• Mejoras DeCoro 2007:

– Recuperación de líneas únicas– Recuperación de triángulos únicosp g– Representante óptimo restringido a la celda– Corrección de normales

• Hash espacial híbrido de Alcántara 2009:– Se ha usado para simplificar mallasSe ha usado para simplificar mallas– Se ha aumentado el tamaño de la clave a 64 bits– Se ha experimentado con la ocupación media deSe ha experimentado con la ocupación media de buckets

– Se pueden simplificar mallas con un error < 1e‐5

22 Junio 2011 / 38

Se pueden simplificar mallas con un error   1e 5

Líneas futurasLíneas futuras• Usar un Octree:Usa u Oct ee

– Niveles 2..6: completos, full grid DeCoroimplementadoimplementado

– Niveles 7..N: usando el hash híbrido implementado– Profundidad según:

• Tamaño de celda mínimo• Cantidad de puntos en celda mínimo• Memoria disponible• Error definido

22 Junio 2011 / 39

Líneas futurasLíneas futuras• Criterio de simplificación:C te o de s p cac ó

– Mejor búsqueda del representante óptimo de la celdacelda

– Incorporación de atributos: resultados, colores, etc.– Mantener las aristas únicas o vivas del modelo

• Simplificación de mallas out of corep• Simplificación de mallas volumétricas• Portar el algoritmo a OpenCL o CUDA

22 Junio 2011 / 40

BibliografíaBibliografía• "Adaptive Vertex Clustering Using Octrees" by Scott Schaefer and Joe 

Warren proceedings of SIAM Geometric Design and Computation 2003Warren, proceedings of SIAM Geometric Design and Computation 2003, SIAM, New York, NY, USA, vol. 2, p. 491‐500, 2003.

• "Real‐time Mesh Simplification Using the GPU" by Christopher DeCoro andReal time Mesh Simplification Using the GPU  by Christopher DeCoro and Natalya Tatarchuk, Proceedings of the 2007 symposium on Interactive 3D graphics and games, ACM New York, NY, USA, 2007.

• "Perfect Spatial Hashing" by Sylvain Lefebvre and Hugues Hoppe, ACM Transactions on Graphics 25, 3 (July), 579–588, 2006.

• "Real‐Time Parallel Hashing on the GPU" by Dan A. Alcantara, Andrei Sharf, Fatemeh Abbasinejad, Shubhabrata Sengupta, Michael Mitzenmacher, John D. Owens and Nina Amenta, ACM Transactions on G hi P di f ACM SIGGRAPH A i 2009Graphics ‐ Proceedings of ACM SIGGRAPH Asia 2009

• "Surface simplification using quadric error metrics" by Michael Garland d P l S H kb t ACM Si h C f 209 216 1997

22 Junio 2011 / 41

and Paul S. Heckbert, ACM Siggraph Conference, 209‐216, 1997.

AgradecimientosAgradecimientos• Profesor Cárlos Andújaro eso Cá os dúja• CIMNE• Amigos y familia

22 Junio 2011 / 42

Simplificación de mallas de triángulos