Geometric Mesh Processing: Mesh cignoni/GMP2006/GMP_05_ Mesh Generation Triangolazione

  • View
    8

  • Download
    0

Embed Size (px)

Text of Geometric Mesh Processing: Mesh cignoni/GMP2006/GMP_05_ Mesh Generation Triangolazione

  • Geometric Mesh Processing: Mesh Generation

    Fabio Ganovelli

    fabio.ganovelli@isti.cnr.it ISTI- CNR

  • Tipi di mesh: mesh strutturate

    Una mesh regolare è una decomposizione in elementi i cui vertici sono espressi come mapping di un dominio più semplice

    • Richiedono poca memoria

    • Facilità di applicazione del metodo alle differenze finite

    • difficile determinare mapping che approssimino “bene” domini complessi • non sempre possibile

    Introduzione

    ),(f 00

    ),(f 10

    ),(f 11

    ),(f 01

    )(f' Γ=Γ

    ],[],[ 1010 ×=Γ 'Γf

  • Tipi di mesh: mesh non strutturate Decomposizione in elementi finiti

    • possibilità di approssimare domini arbitrariamente complessi

    • Maggiore richiesta di memoria per la memorizzazione

    Introduzione

  • Da dove vengono le mesh?

  • Mesh Generation Triangolazione di punti in 2D • Definizione del problema • Qualche algoritmo

    Superfici 2D embedded in 3D • Ricostruzione da sezioni planari (tiling) • Marching Cubes • Ball Pivoting

    Mesh di volume • Misure di Qualità

    – Poliedri non triangolabili – Punti di Steiner

    • Triangolazione di poliedri – Advancing front approach – Medial axis transform – Bubble Meshing (ricostruzione di domini non manifold)

    • Triangolazione di Point set – Alpha shapes

  • Definizioni

    • Una mesh è una decomposizione di un sottoinsieme compatto di in celle.

    • Un simplesso in n dimensioni è il luogo dei punti ottenuti come combinazione convessa di n+1 punti

    • Un complesso simpliciale ΣΣΣΣ in n dimensioni è un insieme di simplessi tale che:

    – 1. tutte le facce di ogni n-simplesso appartengono a ΣΣΣΣ – 2. per ogni coppia di simplessiσ e τ vale:

    – 3. n è il massimo ordine dei simplessi di ΣΣΣΣ

    nR

      ∅=

    entrambidifacciauna τσ I

    Introduzione

  • Mesh simpliciali in

    Input Poligono Semplice

    Poligono con buchi

    PSLG (Planar Straight Line

    Graph)

    Point Set

    Compl. in tempo O(n) O(n log h) O( n log n) O(n log n)

    Problemi NP-completi:

    – dire se un PSLG (con intersezioni) contiene una triangolazione [Lloyd77]

    – dire se una collezione di triangoli contiene una triangolazione

    2R Mesh Generation in due dimensioni

  • Criteri di ottimalità

    Un criterio di ottimalità si definisce con funzioni f: T → R, di tipo:

    o

    dove f (t) misura la bontà di un triangolo

    perché f sia ben definita deve avere un solo minimo in corrispondenza del triangolo ideale (es: equilatero) e massimo non limitato

    f (τ ) può basarsi sull’angolo minimo o massimo, sulla lunghezza del lato più lungo/corto, sull’area del più piccolo/grande cerchio inscritto/circoscritto, sull’aspect ratio tra tutti i triangoli della mesh

    { }Γ∈= ττ :)(fmax[min]f ∑ Γ∈

    = τ

    τ )(ff

    Mesh Generation in due dimensioni

  • Es: Aspect Ratio

    a

    c b

    h

    Def: L’aspect ratio è data dal rapporto tra il lato più lungo e l’altezza relativa a tale lato

    h

    a )t(f =

    +∞≤≤ )t(f 3

    2 a

    h 3

    2=)t(f

    a

    h

    +∞→)t(f

    L’aspect ratio è legata all’angolo minimo θ :

    θθ sin )t(f

    sin

    21 ≤≤

    Mesh Generation in due dimensioni

    min

    max

  • Triangolazione di Delaunay

    • Def: Cella di Voronoi di un punto p∈ S:

    • Def: Diagramma di Voronoi di un point set S:

    • Def: Triangolazione di Delaunay di un point set S: triangolazione contenente tutti e soli i lati che connettono due punti che condividono un lato della cella di Voronoi (duale del diagramma di Voronoi)

    }Sp|xp||xp|:x{cV jji h

    i ∈∀≤ℜ∈=

    Mesh Generation in due dimensioni

    icVV U=

  • Qualche proprieta’ …. Dato un insieme di vertici, un edge {a,b} appartiene a DT sse esiste un cerchio passante per a e b non contenente nessun altro vertice

    Dato un insieme di vertici, un triangolo {a,b,c} appartiene a DT sse il cerchio passante per a,b e c non contiene nessun altro vertice

    a

    b

    a

    b

    a

    b c

    a

    b c

    Mesh Generation in due dimensioni

  • Preview di domani

    • Lift-transformation

    • Proprieta’ incredibile: – La proiezione sul piano dell’intersezione dei piani tangenti ai punti

    “lifted” produce in diagramma di Voronoi dei punti sul piano

    ),,(),(

    ,,,),,(

    :

    22

    0

    2 11

    1

    yxyxyx

    xxxxx n

    i inn

    nn

    +=

    =

    ℜ→ℜ

    ∑ =

    +

    ψ

    ψ

    ψ

    KK

  • Ottimizzazioni di DT

    • Ottimizza : – massimizza il minimo angolo

    – minimizza il massimo circumcircle

    – minimizza il massimo min-containment circle

    Mesh Generation in due dimensioni

  • Ottimizzazione: algoritmo di flipping [Lawson77]

    Procedura di ricerca locale

    b

    a

    d c

    )()()(

    )()()'(

    Tfacdfabcf

    bcdfabdfTf

    =+

  • Ottimi globali

    Variando il criterio per decidere quando due triangoli adiacenti devono essere “flippati” si possono ottimizzare diverse misure, es.:

    – max-min angle (Delaunay)

    – min-max circumcircle (Delaunay) ….

    – Min-max min containment circle (Delaunay)

    Ci sono criteri per i quali l’algoritmo di flipping termina in un ottimo locale , es.:

    – min-max angle

    – minimum total edge length (MWT)

    Mesh Generation in due dimensioni

  • Edge insertion [Edelsbrunner92] Generalizzazione dell’algoritmo di flipping

    Aggiunta di un lato candidato

    Retriangolazione

    migliore

    Ripristina precedente

    s

    n

    a b 1T

    2T

    a b 1T

    2T

    Mesh Generation in due dimensioni

  • Anchor property Def: data T , un vertice a di un triangolo abc è un anchor vertex se ∀ T’ : f(T’) < f(T), T’ contiene un lato ad che interseca il triangolo in bc

    Def: vale la weak anchor property per f sse : ∀ T, ∀ abc ∈ T : f(abc) = f(T), uno dei vertici è un anchor vertex. Se ∀ abc ∈ T , uno dei vertici è un anchor vertex vale la strong anchor property

    Mesh Generation in due dimensioni

    Es: f(T) = max-angle gode della Weak Anchor Property

    Teorema : se f soddisfa la WAP ⇒ l’algoritmo Edge Insertion determina l’ottimo globale in O(n3) Se vale SAP la complessità scende a O(n2log n)

  • Poligoni Semplici:Programmazione dinamica

    Sia un poligono P, una sua diagonale ab e siano T e T’ due triangolazioni delle due parti del poligono diviso da ab

    Def: f(T) è decomponibile se: • monotona • g è calcolabile in O(1) • se T è un triangolo, f(T) è calcolabile in O(1)

    )b,a),T(f),T(f(g)T(f:g 21=∃

    Mesh Generation in due dimensioni

    a b 1T

    2T

    Areamin)T(f = )f,fmax()b,a,f,f(g 2121 =

    Una triangolazione di un poligono semplice che ottimizzi una funzione decomponibile può essere calcolata in O(n3) [Klincsek80]

    MWT)T(f = abff)b,a,f,f(g −+= 2121

  • Mesh Generation in due dimensioni

      

    ∞+ =

    = +

    altrimenti

    diagonaleunaèsudiottimo

    verticidaiformatopoligonodati 1

    )v,v(se)j,i(Pf )j,i(F

    v,,v,v)j,i(P,v,v

    ji

    jiiji K

    )v,v),j,k(F),v,v),k,i(F,)vvv(f(g(gmin)j,i(F

    globaleottimo)k,(F

    jkkikji jki 43421≤≤

    = =1

    iv

    jv kv

    Nell’implementazione F(1,k) è calcolato iterativamente

    fdiottimo)n,(F =1

    nv

  • Un Problema aperto: Minimum Weight Triangulation

    Esiste un algoritmo polinomiale per determinare la triangolazione di un point set che minimizzi la lunghezza totale dei lati (o che la approssimi per O(1))? O il problema è NP-completo ? [Garey & Johnson79]

    Se la funzione sui lati è generale, non correlata alla lunghezza, MWT è NP-completo [Lloyd77]

    Qualunque triangolazione ha lunghezza totale O(n) volte l’ottimo [Kirkpatrik80]

    La triangolazione di Delaunay può essere fino a Ω(n) volte l’ottimo [Manacher79]

    Per poligoni convessi, la strategia greedy fornisce una approssimazione O(1) [Levcopoulus77]

    Mesh Generation in due dimensioni

  • Minimum Weight Triangulation: migliore approssimazione

    1. Partizione del convex hull in poligoni convessi 2. Triangolazione greedy dei poligoni

    L’algoritmo fornisce una approssimazione O(log n) [Plaisted & Hong 87]

    Mesh Generation in due dimensioni

  • Mesh Generation in 3 dimensioni

    Superfici 2D embedded in 3D • Ricostruzione da sezioni planari (tiling) • Marching Cubes • Ball Pivoting 3D Mesh Generation • Misure di Qualità

    – Poliedri non triangolabili

    – Punti di Steiner

    • Triangolazione di poliedri – Advancing front approach

    – Medial axis transform

    – Bubble Meshing (ricostruzione di domini non manifold)

    • Triang