Per rispondere alla domanda "Perché i tetraedri di Marching lasciano le ambiguità?" è necessario capire perché le ambiguità sorgono in primo luogo nei Cubi Marching.
ambiguità può verificarsi quando vi sono due diagonalmente opposti vertici "positivi" e due vertici diagonalmente opposti "negativi" in un cubo. Mi ci è voluto del tempo per avvolgere la mia mente intorno ad esso, ma il problema con le ambiguità è che teoricamente permettono di creare patch isosuperficiali per cubi adiacenti che sono incompatibili tra loro. Questa è la parte ovvia. La parte interessante è che due patch isosurface adiacenti da due configurazioni ambigue sono incompatibili se (e solo se) uno di questi separa i vertici "negativi" e l'altro separa i vertici "positivi".
Ecco una citazione rilevante dal grande libro di Refael Wenger "isosuperfici Geometria, Topologia & algoritmi" (non può inviare più di 2 collegamenti, così mi sono stati presi tutti le immagini rilevanti dal libro in una single one):
il bordo del cerotto isosurface tridimensionale di un cubo definisce una isocontour su ciascuna delle faccette quadrati del cubo. Se la patch isosuperficie di qualche con gurazione separa i vertici negativi sulla faccetta mentre una patch isosuperficie della confinazione separa quelli positivi, allora i bordi di isosurface sulla facc comune non si allineano. Le patch di isosuperficie nella Figura 2.16 non separano i vertici positivi su qualsiasi faccetta. Inoltre, le superfici di superficie isosuperficiale derivate in qualsiasi rotazione o ri fl essione delle con fi gurazioni, inoltre, non rappresentano vertici positivi separati su qualsiasi faccetta. Pertanto i patch di isosuperficie in qualsiasi due cubi adiacenti sono allineati correttamente sui loro confini. Un ugualmente valido, ma la tabella isosuperficiale distinta combinatoria potrebbe essere generata utilizzando le patch isosuperficie che non separano i vertici negativi su qualsiasi faccetta quadrata.
Ciò significa che se tutti configurazioni ambigue utilizzati seguono lo stesso modello (cioè sempre separati vertici "negativi"), allora è impossibile produrre una superficie topologicamente corretto. E i problemi sorgono se si utilizzano le configurazioni "di entrambi i mondi" per una singola isosuperficie.
La superficie che è stato costruito secondo la stessa sequenza risoluzione dell'ambiguità ancora possono contenere errori indesiderati come this (tratto da "Efficient attuazione dei casi da Marcia cubi garanzie topologici" articolo di Thomas Lewiner Helio Lopes, Antonio Wilson Vieira e Geovan Tavares), ma sarà, come hai detto, stagna.
Per ottenere ciò, è necessario utilizzare la tabella di look-up basato su 22 configurazioni uniche (non lo standard 14 o 15) mostrato in Figura 2.16.
Ora, tornando alla domanda iniziale, finalmente - Perché Marching tetraedri non soffre di ambiguità? Per lo stesso motivo non ci saranno ambiguità nei Cubi in marcia, se fatto come descritto sopra - perché hai arbitrariamente scelto di usare una delle due varianti disponibili di ambigua risoluzione di configurazione. In Marching Cubes non è evidente a tutti (almeno per me, ha dovuto fare un sacco di scavare) che questo è nemmeno un'opzione, ma in Marcia tetraedri è fatto per voi dallo stesso algoritmo. Ecco un'altra citazione dal libro di Refael Wenger:
I cubi griglia regolare hanno ambigui configurazioni fi mentre il decomposizione tetraedrica non lo fa. Cosa è successo alle ambigue configurazioni ? Queste con fi gurazioni vengono risolte dalla scelta della triangolazione . Ad esempio, nella Figura 2.31, la prima triangolazione fornisce una patch isosurface con due componenti corrispondenti a 2B-II nella Figura 2.22 mentre la seconda dà una patch isosurface con un componente corrispondente a 2B-I.
Nota come i cubi sono suddivisi in tetraedri in due modi diversi nella Figura 2.31. La scelta di questo affettare o l'altro è la salsa segreta che risolve le ambiguità.
Ci si potrebbe chiedere: se il problema dell'ambiguità può essere risolto utilizzando lo stesso modello per tutti i cubi, perché ci sono così tanti libri e documenti su soluzioni più complicate? Perché ho bisogno di Asymptotic Decider e tutta quella roba? Per quanto posso dire, tutto si riduce a ciò che è necessario raggiungere. Se la correttezza topologica (come in, nessun buco) è sufficiente per te, allora non hai bisogno di tutte le cose avanzate. Se si vuole risolvere i problemi come quelli mostrati in "efficace attuazione del Marching Cubes" articolo mostrato sopra, allora avete bisogno di immergersi a profondità.
mi raccomando di leggere i capitoli del libro di Refael Wenger "isosuperfici Geometria, Topologia & Algoritmi" per capire meglio la natura di questi algoritmi, quali sono i problemi, da dove i problemi provengono e come possono essere risolto.
Come ricordato da Li Xiaosheng, le basi possono essere meglio compresi dalla esaminando attentamente le Piazze Marching algo prima. In realtà, l'intera risposta è stata dettata da Li Xiaosheng, ho appena espanso un po 'le spiegazioni.
Cool. È bello sapere che hai implementato le cose. Ci sono alcune varianti di cubi in marcia che dovrebbero generare modelli topologicamente corretti. Uno di questi articoli sull'argomento è "L'implementazione e ffi ciente dei casi di Marching Cubes con garanzie topologiche". Un altro è "Una tabella di ricerca modificata per la disambiguazione implicita dei cubi in marcia".In ogni caso, hai ragione - in casi potenzialmente ambigui, esaminano ulteriormente le cose per produrre un modello topologicamente corretto. –