- Ripasso concetto di processing nel ciclo produttivo: link
DEFINIZIONI
- MESH → una faccia geometrica composta da un insieme di vertici (punti), edge (spigoli) e facce che definiscono la forma di un oggetto.
TIPOLOGIE
- Triangle mesh: la struttura dati per il processing del modello 3D più utilizzato
- detto anche simpliciale pk per 3 punti ci passa solo un triangolo, può di 4 può addirittura essere non complanare
- quad-mesh: solo quadrilateri
- quad dominant mesh: molti quadrilateri ma anche altro
- polygonal mesh: numero generale di lati
diagonal split
criteri mesh regolari
regolare ≠ 2 manifold
- regolare = Ogni vertice ha la stessa valenza (es: 6 per tri-mesh, 4 per quad-mesh)
- Two-manifold = fa0n connesso di facce per ogni vertice, massimo 2 facce adiacenti per ogni edge, ogni faccia segue lo stesso orientamento
- Inoltre, in media, per una mesh triangolare chiusa, il numero di facce è circa il doppio del numero di vertici
CARATTERISTICHE
WIREFRAME: modello 3d meshato (non necessariamente del tutto)
- anche per le nuvole di punti abbiamo visto una definizione di wireframe
conversione a triangle mesh: DIAGONAL SPLIT
- oppure triangolarizzazione = trasformare un poligono in triangoli
- le GPU sono progettate per lavorare con triangle mesh però si usano i quadrilateri solo pk i tech artist riescono con più semplicità a lavorare con questa forma, quindi dopo la fase di modellazione dell’artista, quando tocca al processing, i programmi fanno il completo diagonal split dei modelli 3d
- Regola generale
COMPONENTI DI UNA MESH
- campionare = registrare le caratteristiche di un modello 3d in un determinato punto. Queste caratteristiche sono organizzate in 3 COMPONENTI:
- geometria
- connettività e attributo
- CONNETTIVITA’ → definiscei vertici che compongono la mesh
- Ipergrafi : e non grafi, pk connettono più di 2 nodi???
- GEOMETRIA: posizioni dei vertici (nuvola di punti)
- ATTRIBUTI: rappresentano valori costanti su ogni faccia
RISOLUZIONE
- aumentare poligoni lungo una superficie piatta nn aumenta la risoluzione pk nn apporta nuove informazioni più dettagliate
- La risoluzione di una mesh può essere adattiva in base alla regione di superficie da campionare
- questa risoluzione è adattiva: in alcune aree ho meno triangoli rispetto che in altri
COME RAPPRESENTARE UNA MESH
- geometria = lista numerata di vertici espresse per coordinate
- i vertici sono delle coordinate cartesiane
- connettività = lista numerata di facce espresse per vertici]
- le facce sono sequenze di indici che rappresentano i vertici
- l’ordine delle cifre deve essere tutto in senso orario o antiorario per uno stesso modello 3d, mai a caso es. [1,5,2,3] non esiste (probabilmente serve per definire il senso delle normali)
- faccia pentagonale
- variante struttura file
esempio file (chiamato Index Mesh) contenente geometria (sx) e connettività (dx)
- attributi
- posso memorizzarli per ogni faccio oppure per ogni vertice (nell’immagine evidentemente è per vertice)
- per faccia: gli attributi sono costanti a tratti, ovvero sono discontinui passando da una faccia all’altra
- per vertice: ho totale continuità
IN CHE MODO LA MEMORIZZAZIONE DEGLI ATTRIBUTI PER VERTICE CREA CONTINUITA?
- la GPU converte la mesh in triangle mesh (in generale è progettata per lavorare su questa struttura dati)
- ALGORITMO DI INTERPOLAZIONE PER EDGE E PER FACCIA
- interpolazione lineare = combinazione lineare delle posizioni dei suoi vertici adiacenti (collegati da un edge)
- FORMULA ( 1-t ) * p + t * q = mix( p, q, t )
- per definire gli attributi che garantiscono continuità, in un punto R dell’edge, devo definire le distanze (coordinate baricentriche) che separano R dai 2 vertici
- Notare che 1-t + t = 1
- sono coordinate pk a loro modo, identificano un punto
- per semplicità li chiamo s=1-t e t rimane così
- p e q sono i 2 vertici i cui attributi agiscono sul generico punto R che giace sul segmento
- se prima avevo: ( 1-t ) * p + t * q
- semplificato nei coefficienti: s * p + t * q
- la dicitura 1-t e t, deriva appunto da d0 e d1
- d0 = distanza da R dalla partenza (nota la formula → nel cap precedente abbiamo detto che il modulo esprime la lunghezza di un segmento)
- d1 = distanza da R all’arrivo
- R(s, t) → l’ordine conta, s è riferito a d0, t si riferisce a d1
- ESEMPIO: considera il punto p, più R si avvicina ad q, minore è la distanza che separa R da q, questa distanza mi serve per ridurre il peso esercitato dal vertice p, “dall’altra”
- se il punto sta in q allora p a peso 0
- se prima usavo s * p + t * q = mix( p, q, t) ora aggiungo il terzo vertice e ridefinisco il significato dei coefficienti
- BLEND PER FACCIA: a0*v0 + a1*v1 + a2*v2
- a0 + a1 + a2 = 1
- N.B.: i 3 triangoli minori A0, A1, A2 non sono le CB, devo prima dividerle ciascuno per A_tot
- non è richiesto sapere come calcolare i 3 triangolini
- Il peso di ogni punto, nella formula, dipende dall’area dalla parte opposta: più si avvicina R ad un vertice v, maggiore è l’estensione dell’area che giace nel lato opposto
- ricordo che le CB rappresentano l’area
- ogni punto nella faccia ha le sue CB
- le più
- il punto v0 = (1,0,0)
- il punto v1 = (0,1,0)
- il punto v2 = (0,0,1)
- il punto tra v1 e v0 = (0.5, 0.5, 0)
- notare che nuerare i vertici è fondamentale per poi appore la sequenza ordinata delle voordinate: v(a0, a1, a2)
- ogni CB dipende dall’area dall’”altra parte”
- Una volta compreso come si definiscono le CB, ci sono casi intuitivi
SPIEGAZIONE ALGORITMO PER EDGE
case study: devo conoscere il peso che 2 vertici adiacenti esercitano SU UN PUNTO r dell’edge che anno in comune
definisco l’interpolazione lineare (o blend) per ogni triangle mesh del modello 3d (FORMULA)
Spiegazione
come calcolo le CB dell’interpolazione lineare (FORMULA ESTESA)
questi coefficienti si ottengono col rapporto tra distanze
Cosa sono d0 e d1? Distanza calcolate in modulo
logica incrociata interpolazione lineare
devo incrociare la CB con il vertice pk la distanza del segmento “dall’altra” parte determina il peso del punto
SPIEGAZIONE ALGORITMO PER FACCIA
case study: devo conoscere il peso che 3 vertici della mesh esercitano su un punto R sulla faccia
devo adattare la formula di combinazione lineare ad un contesto con 3 vertici, per agire della faccia
le CB a_k si definiscono in questo modo
Formula per determinare il peso dei 3 vertici sul punto P nella faccia
COORDINATE BARICENTRICHE
ORA HO 3 COORDINATE BARICENTRICHE INTUITIVE
OSSERVAZIONI
osservazione breve
MESH SU UN PROGRAMMA (inutile)
- abbastanza intuitivo, ma nn importante
ESERCIZI
ESS DI DETERMINAZIONE COORDINATE BARICENTRICHE
- ultima domanda: (1/4, 3/3, 0)
- attenzione le coordinate di P(s, t) sono P(4/6; 2/6): ricordo che si incrocia (non solo nella formula)
- pitagora
- TIP: per calcolare n coordinate baricentriche di un punto, se ne ho calcolate n-1 con la formula, l’ultima la calcolo con una differenza: 1 - (le altre coordinate)
SINTESI
- Wireframe → mesh → vertici, spigoli, facce
come rappresentare i dati della mesh
- geometria = lista numerata di vertici espresse per coordinate
- i vertici sono delle coordinate cartesiane
- connettività = lista numerata di facce espresse per vertici]
- le facce sono sequenze di indici che rappresentano i vertici
- attributi e metodi di memorizzazione
- Tipologie di mesh
- tipologie di mesh e diagonal split
- poche terminologie sulla risoluzione
- memorizzazione attributi per vertice