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:
- 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).
- 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.