Mesh Simplification (o mesh coarsening): DESCRIZIONE
- case study: conversione da mesh hi-res a mesh low-res (detta anche low-poly mesh)
- PRO: minore è la risoluzione maggiore è la velocità di geometry processing
- CONTRO: la modifica introduce un errore geometrico rispetto alla mash originale (ma nn sempre, se la superficie ha una geometria piana nn cambia nulla)
- alcuni vertici sono fondamentali per preservare la forma geometrica-visuale rispetto ad altri
- Osservazione:
- in una nuvola di punti, bastava scegliere un sottoinsieme
- Per mesh, è più complicato: non semplificare senza danneggiare le proprietà della mesh (es. chiusura)
ALGORITMO DI MESH COARSENING TOTALE: VERTEX CLUSTERING
(approccio volumetrico a reticolo per la mesh simplification)
Spiegazione algoritmo passo-passo
- immagino di avere la mia mesh immersa in un reticolo 3d con i punti disposti a cubetti tutti uguali che mi permette di suddividere la mesh
- per ogni cubetto ho in input i vertici che esso contiene
- se in input ho più di un vertice in un singolo cubetto
- li sostituisco con un vertice (output) che rappresenta la posizione media di tutti i vertici di partenza
- lavorando in questo modo i vertici devo mantenere la coerenza delle mesh triangolari
- se nel processo, una mesh ha visto tutti i suoi vertici essere sostituiti: implicitamente ho creato un nuovo triangolo (metti caso che in un cubetto ho 2 vertici, uno dei quali è parte di un triangolo con i vertici tutti in posizioni distinte, in tal caso, ottengo un nuovo triangolo)
- se il triangolo aveva 2 o 3 vertici in un solo cubetto, quel triangolo lo elimino completamente, pk il punto 3 dell’algoritmo (sostituzione) non mi permette di “aggiornare” il triangolo
OSSERVAZIONE
- Il parametro k (dimensione dei cubetti) controlla quanto la mesh viene semplificata → più è grande piè devo ridurre la risoluzione pk il singolo cubetto aumenta volume
SEMPLIFICAZIONE LOCALE
Edge collapse: rimuovi un edge e fondo i due vertici estremi ad esso (elimina l’edge)
- Se la mesh è 2 manifold ho eliminato
- 2 facce
- un vertice
- 3 edge
Vertex removal, face merge (eliminano rispettivamente il vertice e la faccia)
- Elimino
- il vertice: e quindi tutti gli edge ad esso collegato)
- oppure la faccia: e quindi tutti gli edge e vertici che lo compongono e tutti gli edge collegati ai vertici eliminati
- ne ottengo una mesh di numero edge pari alla valenza del vertice eliminato
- valenza = numero di edge collegati ad un vertice
- quindi applico il diagonal split pk voglio i triangoli
- un poligono con n lati (valenza del vertice eliminato) lo ritassello con n-2 triangoli (ripasso)
OSSERVAZIONI p1
- le operazioni locali sono adattive pk scelgo io cosa eliminare (ovvero le zone che mi creano il minor errore geometrico), il vertex clustering non è adattivo ma toale
- singola operazione locale: può cambiare sia la geometria (lista vertici) sia la connettività (lista facce), ma solo in un intorno ristretto.
- Iterazione di operazioni locali: ripetere queste piccole operazioni, una alla volta, finché non raggiungi l’ obiettivo prefissato, che può essere:
- ridurre il numero totale di vertici/poligoni
- mantenere un errore geometrico sotto una certa soglia
OSSERVAZIONI p2
Quella non adattiva può rovinare il modello, vedi l’occhio
case study: meshing (diversi algoritmi in base alla struttura dati di partenza)
- dato una modello 3D, inizialmente non rappresentato come una mesh poligonale, produrre una sua rappresentazione di tipo mesh poligonale
- es: meshing di una nuvola di punti
case study: re-meshing / retopology (cambio tipo di mesh) → algoritmi o manualmente
- data una superficie già rappresentata come una mesh, costruire una rappresentazione mesh…diversa