Quel serait un bon filtre pour créer des «déformateurs magnétiques» à partir d'une carte de profondeur?


10

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:

  1. 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é).
  2. 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.

entrez la description de l'image ici


Pourriez-vous s'il vous plaît insérer une image ou un dessin de l'effet que vous souhaitez obtenir? Il serait plus facile de comprendre votre problème.
essuyez le

Appuyant sur un commentaire ci-dessous, une image ou un dessin peut être très utile. Il existe de nombreuses façons de simuler la façon dont les vêtements enveloppent les parties du corps et peut-être que votre idée de «déformateurs» n'est que l'une des nombreuses qui pourraient s'appliquer.
sam hocevar

qu'est-ce qui ne va pas avec le déplacement de la forme entière?
Ali1S232

Gajoo, imaginez si la forme enroulée autour du maillage, le déplacer dans une direction ne ferait que recouper davantage la forme de l'autre côté - bien que ce soit effectivement ce que font les déformateurs, juste de petits morceaux de la forme à la fois.
sebf

SamHocevar, cette question portait uniquement sur l'ajustement - vous avez un maillage légèrement plus petit que le caractère auquel il est destiné, donc le maillage est ajusté en conséquence. L'implémentation du champ de profondeur a été choisie pour des raisons de performances, les déformateurs ont été choisis en raison de cette capacité d'approche pour la préservation des caractéristiques.
sebf

Réponses:


2

Vous avez une carte de profondeur, qui je suppose est simplement la distance entre le maillage convexe A et le maillage déformé neutre B, et vous avez des normales de surface du maillage A.

Ce qui vous manque, c'est le poids (ou les regroupements) de la façon dont chaque vert du maillage B affecte ses voisins. Par exemple, lorsque le vert central est déplacé, il doit également glisser le long de ses voisins verts d'un certain montant (pourcentage) s'ils sont dans le même groupe.

Si vous avez un groupe de verts qui s'affectent mutuellement à 100%, ils finiront tous par être poussés le plus loin de votre carte de profondeur comme s'ils faisaient tous partie d'une structure en acier inflexible qui se déplace comme une unité, fixée à 50% cette structure peut agir plus comme des feuilles de caoutchouc épaisses et 10% comme une pellicule plastique ajustée car chaque vert affecte à peine son voisin (c'est ce que vous avez maintenant.

De toute évidence, il y a un mélange et une fusion de valeurs. Comme @Gajoo l'a dit, "qu'est-ce qui ne va pas avec le déplacement de la forme entière?"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.