Dans mon projet, je crée un système pour déformer un maillage très détaillé (vêtements) afin qu'il «s'adapte» à un maillage convexe. Pour ce faire, j'utilise des cartes de profondeur de l'élément et de la «coque» pour déterminer à quel point dans l'espace mondial la déviation se produit et l'étendue.
La simple transformation de tous les sommets occlus aux profondeurs définies par la `` coque '' est assez efficace et a de bonnes performances, mais elle souffre du problème de ne pas conserver les caractéristiques du maillage et nécessite une élimination approfondie pour éviter les faux positifs.
Je voudrais plutôt générer à partir de la carte des écarts de profondeur un ensemble de «déformateurs» simples qui «pousseront» * tous les sommets du maillage déformé vers l'extérieur (dans l'espace mondial). De cette façon, toutes les fonctionnalités du maillage sont préservées et il n'est pas nécessaire d'avoir une heuristique complexe pour éliminer les sommets inappropriés.
Cependant, je ne sais pas comment procéder pour générer cet ensemble de déformateurs. J'imagine quelque chose comme un algorithme qui tente de faire correspondre une surface sphérique à chaque patch de déviations contiguës dans une certaine plage, mais je ne sais pas par où commencer.
Quelqu'un peut-il suggérer un filtre ou un algorithme approprié pour générer des déformateurs? Ou pour le dire autrement en compressant une carte de profondeur?
(* Poussez parce que son ajustement à un humanoïde convexe «volumineux», de sorte que les transformations sont susceptibles d'être «sphériques» par rapport au POV de la surface.)
Edit: Voici une image / diagramme suggéré à juste titre qui illustre ce que j'essaie de réaliser.
De plus, je dois dire que depuis que cette question a été publiée, j'ai beaucoup travaillé sur ce problème, et même si je n'ai jamais résolu comment obtenir les déformateurs, j'ai finalement décidé que les cartes de profondeur pour cela n'étaient pas appropriées car:
- Si le maillage déformé n'est pas complet, il est possible d'obtenir dans la carte des texels qui sont censés être de l'autre côté du maillage convexe (car ils ne sont pas masqués par ceux plus proches de la caméra du bon côté).
- L'efficacité n'était pas aussi élevée que je l'espérais car 6 cartes étaient nécessaires par déformation.
Non pas que ceux-ci soient insolubles, mais l'autre solution, qui impliquait des tests de collision dans les noyaux fonctionnant sur le GPU, a abouti à des résultats de meilleure qualité et était beaucoup plus simple, même si elle n'est peut-être pas aussi rapide.
Je pense toujours que ce problème de questions est intéressant et je serais intéressé par toutes les réponses car je suis sûr qu'il y a des situations où il serait préférable.