Was wäre ein guter Filter, um aus einer Tiefenkarte "magnetische Verformer" zu erzeugen?


10

In meinem Projekt erstelle ich ein System zum Verformen eines sehr detaillierten Netzes (Kleidung), so dass es zu einem konvexen Netz passt. Dazu benutze ich Tiefenkarten des Gegenstands und des Rumpfes, um zu bestimmen, an welchem ​​Punkt im Weltraum die Abweichung auftritt und in welchem ​​Ausmaß.

Das einfache Transformieren aller verdeckten Scheitelpunkte in die durch den "Rumpf" definierten Tiefen ist ziemlich effektiv und hat eine gute Leistung, leidet jedoch unter dem Problem, dass die Merkmale des Netzes nicht erhalten bleiben, und erfordert ein umfangreiches Keulen, um Fehlalarme zu vermeiden.

Ich möchte stattdessen aus der Tiefenabweichungskarte eine Reihe einfacher 'Deformierer' generieren, die * alle Eckpunkte des deformierten Netzes nach außen (im Weltraum) "drücken". Auf diese Weise bleiben alle Merkmale des Netzes erhalten, und es sind keine komplexen Heuristiken erforderlich, um unangemessene Scheitelpunkte auszusortieren.

Ich bin mir jedoch nicht sicher, wie ich dieses Deformer-Set erzeugen soll. Ich stelle mir so etwas wie einen Algorithmus vor, der versucht, eine sphärische Oberfläche an jeden Fleck zusammenhängender Abweichungen innerhalb eines bestimmten Bereichs anzupassen, weiß aber nicht, wo ich damit anfangen soll.

Kann jemand einen geeigneten Filter oder Algorithmus zur Erzeugung von Deformern vorschlagen? Oder anders ausgedrückt: Komprimieren einer Tiefenkarte?

)

Bearbeiten: Hier ist ein Bild / Diagramm zu Recht vorgeschlagen, das zeigt, was ich erreichen möchte.

Außerdem sollte ich sagen, dass ich, seit diese Frage gestellt wurde, viel mehr an diesem Problem gearbeitet habe, und obwohl ich nie gelöst habe, wie ich an die Deformierer komme, habe ich schließlich entschieden, dass Tiefenkarten dafür ungeeignet sind als:

  1. Wenn das deformierte Netz nicht vollständig ist, können Texel in der Karte angezeigt werden , die sich auf der anderen Seite des konvexen Netzes befinden sollen (da sie nicht durch diejenigen verdeckt werden, die sich auf der richtigen Seite näher an der Kamera befinden).
  2. Der Wirkungsgrad war nicht so hoch wie ich gehofft hatte, da pro Verformung 6 Karten benötigt wurden.

Nicht dass diese unlösbar wären, aber die andere Lösung, die Kollisionstests in Kerneln beinhaltete, die auf der GPU ausgeführt wurden, führte zu qualitativ besseren Ergebnissen und war viel einfacher, auch wenn sie möglicherweise nicht so schnell ist.

Ich denke immer noch, dass dieses Problem interessant ist und an Antworten interessiert wäre, da ich sicher bin, dass es Situationen gibt, in denen es bevorzugt wäre.

Geben Sie hier die Bildbeschreibung ein


Könnten Sie bitte ein Bild oder eine Zeichnung des gewünschten Effekts einfügen? Es wäre einfacher, Ihr Problem zu verstehen.
Wischen Sie

Wenn Sie einen Kommentar unten abgeben, kann ein Bild oder eine Zeichnung sehr hilfreich sein. Es gibt viele Möglichkeiten zu simulieren, wie Kleidung Körperteile umhüllt, und vielleicht ist Ihre „Deformierer“ -Idee nur eine von mehreren, die zutreffen könnten.
Sam Hocevar

Was ist falsch daran, die ganze Form zu bewegen?
Ali1S232

Gajoo, stellen Sie sich vor, die Form, die um das Netz gewickelt ist und in eine Richtung bewegt wird, würde dazu führen, dass es die Form auf der anderen Seite nur noch weiter schneidet - obwohl dies tatsächlich die Deformierer tun, nur kleine Teile der Form gleichzeitig.
2.

SamHocevar, bei dieser Frage ging es nur um das Anpassen - Sie haben ein Netz, das etwas kleiner ist als das Zeichen, für das es passen soll, daher wird das Netz entsprechend angepasst. Die Tiefenfeldimplementierung wurde aus Leistungsgründen ausgewählt, die Verformer wurden aufgrund dieser Annäherungsfähigkeit zur Merkmalserhaltung ausgewählt.
2.

Antworten:


2

Sie haben eine Tiefenkarte, von der ich annehme, dass sie einfach der Abstand zwischen dem konvexen Netz A und dem neutral deformierten Netz B ist, und Sie haben Oberflächennormalen von Netz A.

Was Sie vermissen, sind Gewichte (oder Gruppierungen), wie sich jeder Vert auf Netz B auf seine Nachbarn auswirkt. Wenn der zentrale Vert beispielsweise verschoben wird, sollte er auch seine Nachbar-Verts um einen bestimmten Betrag (Prozentsatz) entlangziehen, wenn sie sich in derselben Gruppe befinden.

Wenn sich eine Gruppe von Verts zu 100% gegenseitig beeinflusst, werden sie alle um den weitesten Betrag aus Ihrer Tiefenkarte herausgedrückt, als wären sie alle Teil einer nicht biegbaren Stahlstruktur, die sich als Einheit bewegt. Stellen Sie diese Struktur auf 50% ein kann eher wie dicke Gummiplatten und 10% wie formschlüssige Plastikfolie wirken, da jeder Vert seinen Nachbarn kaum beeinflusst (was Sie jetzt haben.

Offensichtlich gibt es eine Mischung und Verschmelzung von Werten. Wie @Gajoo sagte: "Was ist falsch daran, die ganze Form zu bewegen?"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.