Polygonal Representations (focus sulle normali) + DOMANDA

Polygonal Representations (focus sulle normali) + DOMANDA

  • Disuguaglianza triangolare: La somma delle lunghezze di due lati è strettamente maggiore della lunghezza del terzo
flat shading e smooth shading
  • se le normali sono definite per faccia → c’è discontinuità di normale tra le facce, come uno spigolo, questo crea discontinuità di illuminazione e altre implicazioni
    • il flat shading è utile per vedere ogni singola mesh, così com’è nella sua forma geometrica
      • notion image
  • se le normali sono definite per vertice → ho smussato tutto pk assegno in corrispondenza dei edge una normale intermedia tra quello espresso nei vertici. L’interpolazione smussa le normali
    • notion image

case study 1: voglio creare discontinuità tra le facce nonostante gli attributi siano memorizzati ai vertici
adotto la configurazione SEAM (cucitura) = duplico i vertici e li sovrappongo, in questo modo l’edge che collega i 2 vertici di una faccia è totalmente diversa dall’altra.
notion image
case study 2: definire la normale per vertice
  1. devo calcolare la normale per faccia anche se non mi serve direttamente, ed è eseguito tramite prodotto vettoriale tra 2 vertici
    1. RISOLUZIONE IN 3 STEP
      1. direzione → prodotto vettoriale (spiego come funziona)
        1. normale tra 2 vettori è un vettore ottenuto col prodotto vettoriale tra 2 vettori iniziali che definiscono il piano in oggetto
          notion image
          notion image
          • la formula è una forma più estesa, pk la differenza tra 2 punti (vertici) è un vettore
          • formula più breve
            • notion image
          prodotto vettoriale in forma cartesiana (basata sulle coordinate espresse in vettori)
          Formula con le coordinate (componente per componente)
          notion image
          trucco per ricordare la formula
          1. disponi i vettori A e B di partenza in verticale
            1. notion image
          1. ora devi capire come strutturare la differenza per definire il valore (ad esmepio) della coordinata x:
            1. elimina dalla testa la riga della coordinata x (ad esempio), quindi rimangono le coordinate y e z
            2. MINUENDO: traccia una x, le prima riga parte in alto a sinistra e intuitivamente rocca A_y e B_z
            3. SOTTRAENDO: la seconda riga parte in basso a sinistra e intuitivamente tocca A_z e By
            4. stessa cosa vale per definire R_y ed R_z
           
          prodotto vettoriale in forma trigonometrica (basata sulle lunghezze dei vettori espresse in modulo)
          notion image
           
          osservazioni prodotto vettoriale in forma trigonometrica
          COMMUTATIVITA’: devi scambiare le posizioni e aggiungere il meno
          notion image
          notion image
          LINEARITA’
          notion image
          NON E’ ASSOCIATIVO
          notion image
          ALTRO
          • il prodotto cross tra 2 vettori ha lunghezza pari al prodotto delle lunghezze dei fattori di partenza per il seno dell’angolo tra essi compreso, quindi lunghezza del prodotto cross tra 2 vettori unitari non è unitario (pk moltiplico per un sen_theta)
          • la normale vale 0 se l’angolo tra i 2 vettori è k*π
      1. elimino lunghezza → normalizzazione
        1. normalizzazione
          • la normale mi dice solo l’orientamento, quindi dopo aver calcolato il prodotto vettoriale devo ridurre ad 1 la lunghezza
          • FORMULA
            • notion image
      1. orientamento → regola della mano destra
  1. l’orientamento della normale al vertice in questo caso vale come la “media normalizzata di tutte le normali delle facce che collega e si definisce calcolando la normale unitaria
    1. FORMULA
      notion image
      sotto problema
      Dato un vertice, come trovo tutte le facce adiacenti?
      L’ALGORITMO CORRETTO DIPENDE DALLA STRUTTURA DATI
      La classica struttura dati da solo una carrellata dei vertici per ogni faccia, non delle facce adiacenti per ogni vertice
      ALGORITMO GATHER (raccogliere)
      • quadratico
      • raccolgo (gather) per ogni vertice le normali delle facce adiacenti
        • è una ricerca controintuitiva e inefficiente
      ALGORITMO SCATTER (disperdere)
      • Lineare
      • distribuisco (scatter) da ogni faccia la normale sui vertici adiacenti
        • funziona pk le facce sanno da subito quali sono i loro vertici

rappresentare una superfice curva, 2 alternative
  1. flat shading ad alta risoluzione
  1. bassa risoluzione e normali interpolate
RIPASSO E CONFRONTO: calcolare la normale di un campione
PUNTO DELLA NUVOLA
  • il vicinato di un punto è chiamato k-nn (k-esimo nearest neighbor) per la nuvola di punti e mi aiuta a definire la normale di un campione sulla base delle normali dei punti circostanti (metti caso che voglio incrementare la risoluzione) → già detto
MESH
  • per le mesh poligonali si usa il prodotto vettoriale
    • se memorizzo per faccia sono aposto
    • se memorizzo per vertice devo in seguito fare la media delle normali delle facce adiacenti al singolo vertice
NOTE
  • le normali risultano visibili all’osservatore attraverso l’illuminazione del modello digitale
  • Se una faccia ha più di 3 vertici, quei vertici devono tutti giacere sullo stesso piano per poter definire una singola normale: deve essere planare
  • EVITO FRAINTENDIMENTI: Le normali e tutto il resto sono calcolate per vertice pk dandomi la massima flessibilità, nel flusso di elaborazione del modello posso assicurare che la figura in questione è proprio quello che voglio mostrare all'utente, senza creare fraintendimenti
  • Se ho una point Cloud voglio sia la posizione sia lo normale dei punti nn devo calcolarli io.
 
 
DOMANDA
notion image