La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Simplificación de mallas de triángulos Autor: Miguel Pasenau Director: Carlos Andújar Departament de Llenguatges i Sistemes Informàtics Facultat d’Informàtica."— Transcripción de la presentación:

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

2 22 Junio 2011 / 2 Índice Introducción Aplicación – Plataforma – Algoritmos Resultados – Modelos – Tiempos, escalabilidad Conclusiones

3 22 Junio 2011 / 3 Índice Introducción Aplicación – Plataforma – Algoritmos Resultados – Modelos – Tiempos, escalabilidad Conclusiones

4 22 Junio 2011 / 4 Motivación Modelos escaneados de alta resolución Simulaciones con 10^9 elementos Interacción en tiempo real Plataformas comunes

5 22 Junio 2011 / 5 Objetivos Desarrollar algoritmo de simplificación Nivel de detalle seleccionable Rápido Eficiente en memoria Multiplataforma Robusto

6 22 Junio 2011 / 6 Etapas Estudio del arte Desarrollo aplicación de ensayo Implementación primera versión Ampliación y mejoras Análisis de resultados

7 22 Junio 2011 / 7 Índice Introducción Aplicación – Plataforma – Algoritmos Resultados – Modelos – Tiempos, escalabilidad Conclusiones

8 22 Junio 2011 / 8 Plataforma Desarrollado en C ++, OpenMP y OpenGL Usando FLTK 1.3.x ( incluye GLUT)

9 22 Junio 2011 / 9 Algoritmo de DeCoro y Tatarchuk 2007 Full grid, simplificación uniforme de grupos vértices Algoritmo de tres pasos: – Paso 1: crear mapa de QEF a partir de la malla – Paso 2: encontrar el representante óptimo para cada celda – Paso 3: simplificación de malla, colapsando vértices de cada celda en su representante Utiliza el error cuadrático de Garland y Heckbert 1997

10 22 Junio 2011 / 10 Algoritmo de DeCoro 2007 Paso 1: para cada nodo de cada triángulo, acumular sus coordenadas y la QEF del triángulo en su celda QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc Grid de 8 x 8 x 8 para acumular: QEF y vértices de la celda

11 22 Junio 2011 / 11 Algoritmo de DeCoro 2007 Paso 2: representante óptimo de la celda: – Invertir QEF – Verificar si está en la celda – Si no, usar el centroide de los vértices QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc QEF acc Representante óptimo

12 22 Junio 2011 / 12 Algoritmo de DeCoro 2007 Paso 3: para cada triángulo – Obtener las celdas ( cluster_id) de sus vértices – Si no colapsa: Sustituir vértices por representante óptimo Guardar triángulo Mapa Qef + Acc Grid de 9 x 9 x 9

13 22 Junio 2011 / 13 Algoritmo de DeCoro 2007 Paso 3: para cada triángulo – Obtener las celdas de sus vértices – Si colapsa en línea: Sustituir vértices por representante óptimo Guardar línea Mapa Qef + Acc Grid de 9 x 9 x 9

14 22 Junio 2011 / 14 Mejoras introducidas Recuperación de líneas Grid de 19 x 19 x 19

15 22 Junio 2011 / 15 Mejoras introducidas Restricción del representante a la celda Recuperación de líneas Triángulos y líneas únicas Corrección de normales

16 22 Junio 2011 / 16 Calidad y resolución Full grid hasta 256 3 = 1,1 GB

17 22 Junio 2011 / 17 Calidad y resolución Ocupación según resolución de la malla poligonal del modelo Lucy Celdas ocupadas y memoria ( 72 bytes = qef + acc + opt) grid# celdas% / totalMBytes 128 3 23 k1 %1,5 256 3 91 k0,5 %6 512 3 351 k0,3 %24 1.024 3 1,3 M0,1 %90 2.048 3 4,6 M0,05 %313 4.096 3 10 M0,02 %706

18 22 Junio 2011 / 18 Hash espacial Alcántara et al. 2009 Buckets = # celdas / 409 Max 512 items Media de 409 items Espacio extra h( k) = k mod #_buckets Primer nivel: repartir en buckets de <= 512 items

19 22 Junio 2011 / 19 Hash de cuco Pagh y Rodler 2001 Hash de cuco: guardar todos los elementos usando g 1 Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

20 22 Junio 2011 / 20 Hash espacial Alcántara 2009 Hash de cuco: guardar resto de elementos usando g 2 Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

21 22 Junio 2011 / 21 Hash espacial Alcántara 2009 Hash de cuco: guardar resto de elementos usando g 3 Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

22 22 Junio 2011 / 22 Hash espacial Alcántara 2009 Guardar elementos usando g 1 sacando los ya guardados Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

23 22 Junio 2011 / 23 Hash espacial Alcántara 2009 Guardar elementos usando g 2 sacando los ya guardados Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

24 22 Junio 2011 / 24 Hash espacial Alcántara 2009 Guardar elementos usando g 3 sacando los ya guardados Max 512 items Media de 409 itemsEspacio extra g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3

25 22 Junio 2011 / 25 Hash espacial Alcántara 2009 Copiar las tablas y seed de vuelta al bucket g 1 ( k) Tabla T1 g 2 ( k) Tabla T2 g 3 ( k) Tabla T3 Tabla T1 – g 1 ( k)Tabla T2 – g 2 ( k)Tabla T3 – g 3 ( k) Max 512 items Media de 409 itemsEspacio extra seed

26 22 Junio 2011 / 26 Hash espacial Alcántara 2009 Lista de claves = celdas 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 #_buckets – Alternativa: » h( k) = ( ( c 0 + c 1 · k ) mod 1900813) mod #_buckets » c 0, c 1 = primos

27 22 Junio 2011 / 27 Hash espacial Alcántara 2009 Segundo nivel: hash de cuco en cada bucket – Max 512 items + Espacio extra = 573 items – Dividido en tres sub-tablas de 191 items – Buscar _seed para construir g i ( k) = ( c i0 + c i1 · k ) mod 191 c ij = _seed ^ cte ij // cte ij constantes predefinidas Max 512 items Media de 409 items Espacio extra Tabla T1 – g 1 ( k)Tabla T2 – g 2 ( k)Tabla T3 – g 3 ( k)

28 22 Junio 2011 / 28 Hash espacial Alcántara 2009 Acceso constante: – 1 r nivel: h( k) = k mod #_buckets- 1 acceso – 2 o nivel: g 1 ( k) sino g 2 ( k) sino g 3 ( k)- 2..4 accesos Nivel ocupación: 409 / 573 = 71,38 % Necesita calcular lista de celdas ocupadas Elemento: – Clave = cluster_id – Valor = función error cuádrica + acumulación coords

29 22 Junio 2011 / 29 Aplicación: DeCoro 2007 + Alcántara 2009 Algoritmo de cuatro pasos: – Paso 1: crear lista celdas ocupadas crear hash híbrido, elemento = ( cluster_id, qef( 0)) – 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

30 22 Junio 2011 / 30 Índice Introducción Aplicación – Plataforma – Algoritmos Resultados – Modelos – Tiempos, escalabilidad Conclusiones

31 22 Junio 2011 / 31 Modelo Lucy Original 14 M puntos 28 M triángulos 0 líneas Grid 4096 3 10,3 M puntos 20,6 M triángulos 7 líneas 73,3 % 72 s. con HashUC Grid 2048 3 4,6 M puntos 9,1 M triángulos 6 líneas 32,5 % 31 s. con HashUC Grid 1024 3 1,3 M puntos 2,6 M triángulos 23 líneas 9,4 % 11 s. con HashUC Grid 512 3 351 K puntos 705 K triángulos 17 líneas 2,5 % 5 s. con HashUC Grid 256 3 91 K puntos 183 K triángulos 11 líneas 0,65 % 4 s. con HashUC 6 s. con FullUC Grid 128 3 23 K puntos 47 K triángulos 12 líneas 0,16 % 4 s. con HashUC 5 s. con FullUC Grid 64 3 5 K puntos 12 K triángulos 8 líneas 0,04 % 8 s. con HashUC 4 s. con FullUC Grid 32 3 1.212 puntos 2.800 triángulos 4 líneas 0,01 % 23 s. con HashUC 4 s. con FullUC Grid 16 3 284 puntos 660 triángulos 6 líneas 0,002 % 60 s. con HashUC 5 s. con FullUC Grid 8 3 68 puntos 138 triángulos 6 líneas 0,0005 % 59 s. con HashUC 7 s. con FullUC Grid 4 3 18 puntos 32 triángulos 2 líneas ~ 0,0001 % 61 s. con HashUC 13 s. con FullUC Grid 2 3 8 puntos 14 triángulos 0 líneas < 0,0001 % 62 s. con HashUC 62 s. con FullUC

32 22 Junio 2011 / 32 Modelo ciudad Original: 6,1 M puntos y 15,6 M triángulos Grid 128 3 : 0,21 % del original, 13 K puntos, 34 K triángulos, 380 líneasGrid 256 3 : 0,73 % del original, 44 K puntos, 113 K triángulos, 548 líneasGrid 512 3 : 2,2 % del original, 138 K puntos, 332 K triángulos, 1 K líneasGrid 1.024 3 : 6 % del original, 386 K puntos, 881 K triángulos, 1,5 K líneasGrid 2.048 3 : 12 % del original, 780 K puntos, 1,7 M triángulos, 1,8 K líneasGrid 4.096 3 : 19 % del original, 1,3 M puntos, 2,7 M triángulos, 2 K líneasGrid 8.192 3 : 28 % del original, 1,9 M puntos, 3,8 M triángulos, 1,5 K líneasGrid 16.384 3 : 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

33 22 Junio 2011 / 33 Resultados Grid 128 3 0,16 % del original 23 K puntos 47 K triángulos 12 líneas Error: Grid 256 3 0,65 % del original 91 K puntos 183 K triángulos 11 líneas Grid 512 3 2,5 % del original 351 K puntos 705 K triángulos 17 líneas

34 22 Junio 2011 / 34 Resultados: escalabilidad Algoritmo de DeCoro con full grid Distribución tiempo procesos1 core2 cores4 cores Inicialización5 %7 %10 % Crear mapa QEF62 %58 %51 % Buscar óptimo1 % 2 % Simplificar malla32 %34 %37 % 6 cores 10 % 47 % 2 % 41 % Total13 s.7 s.4 s.3 s. Cronometrado en nodo 2 cpu Intel Xeon E5410 Simplificando el modelo lucy con un grid de 256 3

35 22 Junio 2011 / 35 Resultados: escalabilidad Algoritmo DeCoro + Alcántara: hash espacial Cronometrado en pc i7-920 Simplificando el modelo lucy con un grid de 256 3 Distribución tiempo procesos1 core2 cores4 cores Crear hashes7 % Crear mapa QEF60 %58 %59 % Buscar óptimo1 %2 %3 % Simplificar malla30 %32 %28 % 4 c. + HT 5 % 59 % 3 % 29 % Total9 s.5 s.3 s.2,5 s. Cronometrado en pc i7-920 Simplificando el modelo lucy con un grid de 2.048 3 Distribución tiempo procesos1 core2 cores4 cores Crear hashes23 %27 %32 % Crear mapa QEF22 %20 %17 % Buscar óptimo3 % Simplificar malla51 %49 %46 % 4 c. + HT 36 % 15 % 3 % 44 % Total34 s.20 s.13 s.10 s.

36 22 Junio 2011 / 36 Índice Introducción Aplicación – Plataforma – Algoritmos Resultados – Modelos – Tiempos, escalabilidad Conclusiones

37 22 Junio 2011 / 37 Conclusiones Aplicación gMeshSim – Algoritmo de simplificación DeCoro 2007 + Alcántara 2009 – 270 bytes / nodo malla original – Coste temporal lineal: Recorrido por los nodos de la malla: crear hash Recorrido por los elementos: acumular qef y coords Recorrido por los elementos: simplificación de malla Recorrido por la lista de celdas ocupadas – Simplifica una malla de 28.000.000 triángulos en 4 segundos ( Intel QuadCore Q9550)

38 22 Junio 2011 / 38 Conclusiones Mejoras DeCoro 2007: – Recuperación de líneas únicas – Recuperación de triángulos únicos – Representante óptimo restringido a la celda – Corrección de normales Hash espacial híbrido de Alcántara 2009: – Se 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 de buckets – Se pueden simplificar mallas con un error < 1e-5

39 22 Junio 2011 / 39 Líneas futuras Usar un Octree: – Niveles 2..6: completos, full grid DeCoro implementado – 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

40 22 Junio 2011 / 40 Líneas futuras Criterio de simplificación: – Mejor búsqueda del representante óptimo de la celda – Incorporación de atributos: resultados, colores, etc. – Mantener las aristas únicas o vivas del modelo Simplificación de mallas out of core Simplificación de mallas volumétricas Portar el algoritmo a OpenCL o CUDA

41 22 Junio 2011 / 41 Bibliografía "Adaptive Vertex Clustering Using Octrees" by Scott Schaefer and Joe Warren, 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 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 Graphics - Proceedings of ACM SIGGRAPH Asia 2009 "Surface simplification using quadric error metrics" by Michael Garland and Paul S. Heckbert, ACM Siggraph Conference, 209-216, 1997.

42 22 Junio 2011 / 42 Agradecimientos Profesor Cárlos Andújar CIMNE Amigos y familia

43 Simplificación de mallas de triángulos


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

Presentaciones similares


Anuncios Google