IIC3912 - Tópicos Avanzados de Gráfica Computacional
Francisca T. Gil-Ureta ⋅ 2026

Clase 3 | Offline Mesh Processing

Mallas Poligonales cómo datos

Clase 02 - Después de esta clase l@s alumn@s pueden construir una mesh a mano para las geometrías básicas (cubo, cilindro, esfera) y pueden explicar cuales son los componentes de un mesh.

Clase 03 - Después de esta clasel@s alumn@s pueden leer una mesh desde un archivo, calcular estadísticas geométricas básicas (conteos, bounding box, duplicación de vértices) y visualizar los resultados en python.

Triangle Mesh

La clase pasada vimos que los triangle mesh están compuestos de triángulos que comparten vertices.

Vimos también que cada triangulo tienen una normal (triangle normal) perpendicular al plano del triangulo. Y que podemos además definir normales para cada vértice (vertex normals).

También vimos que podíamos representar esta información en el computador como:

  • vertices: lista de puntos 3D
  • faces (triangulos): lista de indices
  • normals: lista de vectores 3D


Offline Mesh Processing

Operaciones que realizamos para preparar los datos, antes de su aplicación final.

El objetivo es preparar, analizar y adaptar los assets para que puedan ser utilizados correctamente por aplicaciones downstream

Input Data

Estos datos pueden provenir de distintas fuentes:

  • Escaneo 3D (fotogrametría, LiDAR, escáneres)
  • Datasets o modelos comprados online
  • Modelado manual en software 3D
  • Modelos generativos de ML (por ejemplo, generación de geometría)

En esta etapa simplemente cargamos y representamos los datos.

Modular Dungeon Kit · Kenney
Modular Dungeon Kit · Kenney
Download this package (40 assets) for free, CC0 licensed!
https://kenney.nl/assets/modular-dungeon-kit
Qué tipo de datos les gustaría usar en su proyecto de Grafica 3D?

Modelado manual/modelos online Me interesa optimizacion de modelos procedural (LODs "semiautomaticos" quiza

Vicente

Interiores de casas y lugares en los que nunca he estado :)

Gonzalo :)

Escaneos 3D

Seba

No lo sé, no lo había considerado hasta ahora

Criss

Generados a partir de eq físicas

franco

texto plano

fish ><>

 

Análisis

El objetivo del análisis es entender las propiedades del asset.

¿La malla es manifold? ¿Tiene agujeros o ruido? ¿La resolución es adecuada? ¿Tiene normales correctas?

Este análisis nos permite decidir si el asset puede usarse directamente o si necesita ser procesado o corregido

Editing

En la etapa de editing transformamos el asset en algo que sea más útil, más limpio o más informativo para las aplicaciones posteriores.

Editar la geometría: Cambiamos directamente la forma o la estructura de la malla. El objetivo suele ser mejorar la calidad del modelo o adaptarlo a una necesidad específica.

Por ejemplo, podemos:

  • eliminar ruido o irregularidades (smoothing)
  • reducir el número de polígonos (simplification)
  • mejorar la calidad de los triángulos
  • reparar agujeros o problemas topológicos

En general, estas operaciones alteran la geometría del modelo para que sea más adecuada para rendering, simulación o almacenamiento.

Generar información adicional: En muchos casos el asset geométrico por sí solo no es suficiente. Podemos entonces calcular o añadir información adicional derivada de la geometría, o conectando con otras fuentes de información.

Esta información puede incluir normales, coordenadas UV, curvatura, segmentaciones o etiquetas.

Esta metadata no cambia la geometría, pero añade información que facilita el uso del modelo en otras aplicaciones.

Qué tipo de algoritmos les gustaría implementar en su proyecto de Grafica 3D?

Que se pueda integrar con simuladores 3D utilizados en robótica (gazebo y rviz por ejemplo)

T.L

Generar modelos a partir de fotos :)

Gonzalo :)

simulación de luz o fluidos, que no sean lentos (bien optimizados)

-_-

aplicaciones de métodos de ML/DL a imágenes 3D

fernando

remeshing para modelos de muchos poligonos, muy pesados

Gisueppe

2d gaussian splatting y algoritmos para crear modelos simples (mesas, sillas, etc) de manera eficiente en cuanto a espacio y tiempo

fish ><>

simplificacion/generacion automatica de LODs para uso en juegos/apps real time rendering

Vicente

Algoritmos de reconstrucción 3D o algoritmos que ayuden a optimizar modelos 3D escaneados

Seba

Algoritmos de reconstrucción 3D

T.L

 
Qué metricas o evaluación necesita su algoritmo?

Tamaño del archivo y fidelidad al modelo original

Gisueppe

Cantidad de polígonos inicial y final, framerate, uso de memoria, etc

Seba

efectividad/usabilidad + ahorro de memoria

Vicente

 

Export

Finalmente adaptamos los datos a lo que necesitan las aplicaciones downstream.

Ejemplos: motores de render, motores de videojuegos, simulación, pipelines de ML

Esto puede implicar:

  • convertir formatos de archivo
  • ajustar resolución o nivel de detalle
  • reorganizar datos para eficiencia o compatibilidad


Qué tipo de output les gustaría generar en su proyecto de Grafica 3D?

Un archivo .obj o similar

Gisueppe

Un algortimo y ejemplos de uso :)

Gonzalo :)

variantes mas livianas de un modelo original (geometria)

Vicente

una webapp

Miguel

una escena interactiva

-_-

Modelo 3d interactivo web

franco

una bdd de modelos

fish ><>

 

Practical

Hoy vamos a construir una pequeña herramienta para inspeccionar mallas.

Pasos a seguir

🧐Cargar y visualizar el mesh utilizando la librearía trimesh

🧐Imprimir el número de vertices y faces.

  • Revisar el tipo de datos que trimesh usa para guardar esta información.

🧐Detección de problemas:

  1. Revisar si hay 'dangling' vertices
  2. Revisar si el mesh es watertight: para esto vamos a hacer un review de Mesh Topology

🧐Información Espacial

  • Bounding Boxes

🧐Visualizar los elementos problemáticos y el bounding box

Google Colab
Google Colab
https://colab.research.google.com/drive/1XpvHKPEmh3jvdUAaLEVIw_QAWriKB915?authuser=1

Topología de la malla

Aristas (Edges)

En una malla triangular, las caras están formadas por vértices conectados por aristas.

Cada triángulo tiene 3 aristas. Por ejemplo si una cara eso

f 0 1 2

las aristas son

(0,1), (1,2), y (1,3)

Problema: aristas duplicadas: Cuando recorremos todas las caras de la malla, muchas aristas aparecen más de una vez, porque son compartidas por dos triángulos.

Aristas únicas (Unique Edges): Para muchas operaciones necesitamos el conjunto de aristas sin duplicados.

Esto nos permite:

  • construir estructura de conectividad
  • encontrar vecinos
  • detectar bordes de la malla
  • realizar operaciones como edge collapse



Bounding Volumes

Bounding Box

Una bounding box es un volumen simple que encierra completamente un objeto 3D.

Se utiliza como una aproximación geométrica rápida para describir el tamaño y la posición de un modelo.

Axis-Aligned Bounding Box (AABB): La caja está alineada con los ejes X, Y, Z

Oriented Bounding Box (OBB): La caja puede rotar para ajustarse mejor al objeto.


Las bounding boxes se usan frecuentemente para:

  • detectar colisiones
  • acelerar rendering
  • indexar objetos en escenas
  • normalizar el tamaño de modelos
  • análisis rápido de datasets 3D