Quale sarebbe un buon filtro per creare "deformatori magnetici" da una mappa di profondità?


10

Nel mio progetto, sto creando un sistema per deformare una rete altamente dettagliata (abbigliamento) in modo che si "adatti" a una rete convessa. Per fare ciò uso le mappe di profondità dell'oggetto e lo "scafo" per determinare in quale punto dello spazio mondiale si verifica la deviazione e l'estensione.

La semplice trasformazione di tutti i vertici occlusi in profondità, come definito dallo "scafo", è abbastanza efficace e ha buone prestazioni, ma soffre il problema di non preservare le caratteristiche della mesh e richiede una vasta abbattimento per evitare falsi positivi.

Vorrei invece generare dalla mappa della deviazione della profondità un insieme di semplici "deformatori" che "spingono" * verso l'esterno (nello spazio mondiale) tutti i vertici della mesh deformata. In questo modo, tutte le caratteristiche della mesh vengono preservate e non è necessario disporre di euristiche complesse per abbattere vertici inappropriati.

Tuttavia, non sono sicuro di come generare questo set di deformatori. Sto immaginando qualcosa come un algoritmo che tenta di abbinare una superficie sferica a ciascuna patch di deviazioni contigue all'interno di un certo intervallo, ma non so da dove iniziare a farlo.

Qualcuno può suggerire un filtro o un algoritmo adatto per generare deformatori? O per dirla in altro modo "comprimendo" una mappa di profondità?

(* Push perché il suo adattamento a un umanoide convesso 'voluminoso' quindi le trasformazioni sono probabilmente 'sferiche' dal POV della superficie.)

Modifica: ecco un'immagine / diagramma giustamente suggerito che illustra ciò che sto cercando di ottenere.

Inoltre, dovrei dire che, dal momento che questa domanda è stata pubblicata, ho lavorato molto di più su questo problema, e anche se non ho mai risolto come ottenere i deformatori, alla fine ho deciso che le mappe di profondità per questo non erano adatte come:

  1. Se la mesh deformata non è completa, è possibile ottenere texel nella mappa che si intende siano sull'altro lato della mesh convessa (perché non sono oscurati da quelli più vicini alla telecamera sul lato corretto).
  2. L'efficienza non era così elevata come avevo sperato a causa del fatto che erano necessarie 6 mappe per deformazione.

Non che fossero irrisolvibili, ma l'altra soluzione, che prevedeva test di collisione nei kernel in esecuzione sulla GPU, ha prodotto risultati di qualità più elevata ed è stata molto più semplice, anche se potrebbe non essere così veloce.

Penso ancora che questo problema di domande sia interessante e che sarebbe interessato a qualsiasi risposta in quanto sono sicuro che ci sono situazioni in cui sarebbe preferito.

inserisci qui la descrizione dell'immagine


Potresti inserire un'immagine o un disegno dell'effetto che desideri ottenere? Sarebbe più facile capire il tuo problema.
cancella il

Secondo un commento fatto di seguito, un'immagine o un disegno possono essere di grande aiuto. Esistono molti modi per simulare il modo in cui l'abbigliamento avvolge le parti del corpo e forse la tua idea di "deformatori" è solo una delle tante che potrebbero essere applicate.
Sam Hocevar,

cosa c'è di sbagliato nel spostare l'intera forma?
Ali1S232

Gajoo, Immagina se la forma avvolta attorno alla mesh, spostandola in una direzione provocherebbe l'intersezione della forma dall'altra parte, anche se in effetti è quello che fanno i deformatori, solo piccoli frammenti della forma alla volta.
sebf

SamHocevar, questa domanda riguardava solo l'adattamento: hai una mesh leggermente più piccola del carattere che dovrebbe adattarsi, quindi la mesh viene regolata di conseguenza. L'implementazione del campo di profondità è stata scelta per motivi di prestazioni, i deformatori sono stati scelti a causa della capacità di approccio alla conservazione delle caratteristiche.
sebf

Risposte:


2

Hai una mappa di profondità, che presumo sia semplicemente la distanza tra la maglia convessa A e la maglia deformata neutra B, e hai normali alla superficie della maglia A.

Quello che ti manca sono i pesi (o raggruppamenti) di come ogni vert sulla mesh B influenza i suoi vicini. Ad esempio, quando il vert centrale viene spostato, dovrebbe anche trascinare i verbi vicini di una certa quantità (percentuale) se si trovano nello stesso gruppo.

Se hai un gruppo di verbi che si influenzano a vicenda al 100%, tutti finiranno per essere spinti dalla quantità più lontana dalla tua mappa di profondità come se fossero tutti parte di una struttura in acciaio incendiabile che si muove come un'unità, imposta al 50% questa struttura può agire più come fogli di gomma spessa e il 10% come un involucro di plastica aderente alla forma perché ogni vert influenza a malapena il suo vicino (che è quello che hai ora.

Ovviamente c'è qualche fusione e fusione di valori in corso. Come ha detto @Gajoo, "cosa c'è di sbagliato nello spostare l'intera forma?"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.