[PAPER] Direct manipulation of subdivision surfaces on gpu

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2139
Registriert: 25.03.2009, 08:20
Kontaktdaten:

[PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Zudomon »

Hallo,

ich bin auf dieses Paper gestoßen, vielleicht kennt es der ein oder andere schon:
http://www.kunzhou.net/publications/subd-gpu.pdf

Hier ist auch ein Video zu besagtem Thema:
http://www.kunzhou.net/publications/subd-gpu.wmv

Im groben geht es darum, dass man auf einer subdivide Oberfläche Punkte fixieren und verschieben kann und das Objekt versucht dann die auftretenden Kräfte der Deformation zu kompensieren. Dadurch macht es komplexe Skelettsysteme überflüssig. Was ja wiederrum heißt, dass man sich riggen und skinnen von Charakteren schenken könnte. Ich würde dieses Verfahren gerne implementieren, aber dafür muss man da erstmal durchblicken. Ob man in diesem Paper auch alle nötigen Informationen bekommt, um das letztendlich implementieren zu können, ist mir unklar, aber ein Versuch wäre es Wert.

Natürlich wird mir nun niemand eine Implementierung dafür programmieren, darauf zielt dieser Post auch nicht ab. Vielmehr erhoffe ich mir, das man vielleicht gemeinsam die Theorie, die in diesem Paper steckt, herausarbeiten kann. :)

MfG
Zudomon
Benutzeravatar
Schrompf
Moderator
Beiträge: 4098
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Schrompf »

Wow, schöner Fund! Das Video dazu ist sehr amüsant, vor allem der tanzende Frosch.

Ich hatte anfangs Zweifel, ob man damit wirklich Bones ersetzen kann, aber die Anwendung von MoCap-Daten am Ende war doch ziemlich überzeugend. Sehr beeindruckend. Ich habe mir allerdings das Paper noch nicht durchgelesen... sind diese Unmassen an Polys wirklich nötig oder kann man den Stunt auch mit einem Standard-5k-Charakter abziehen? Wenn ja, seh ich da wirklich gerade einen neuen Stern am Charakteranimationshimmel aufsteigen...
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 22:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von CodingCat »

Beeindruckend. Definitiv eine praktische Alternative zu zeitaufwändigen Vertex-Weight-Verteilungen. Wären meine Mathekenntnisse etwas umfassender wäre das sicher eine nette Beschäftigung für die nächsten Wochen. ;-)

Allerdings ersetzt die Technik, wenn ich das richtig sehe, nicht jegliche Skelette, die Geometrie-Fixpunkte sind ja im Grunde nichts anderes als Joints, die ohne feste Vertex-Einfluss-Zuteilung auskommen. Natürlich würde das Riggen sehr viel einfacher, Skeletthierarchien blieben für physikalische Anpassung (z.B. durch inverse Kinematik) jedoch erforderlich.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Zudomon
Establishment
Beiträge: 2139
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Zudomon »

Dahinter steckt ja eine Art FFD... bei normalen Objekten treten wohl nur lineare Kräfte und nur geringfügig nichtlineare Kräfte auf. Durch Displacementmapping und Geometrieschen Texturen ändert sich das ganze allerdings und es treten hochgradig nichtlineare Kräfte auf, die sich nicht lösen lassen (soweit ich das verstanden habe).
Diese neue Technik soll allerdings dennoch relativ schnell zu einem Ergebnis konvergieren. Wobei ich vermute, dass der Trick dahinter da drin besteht, die Deformation auf das Kontrol Objekt, welches nur aus ein paar tausend Dreiecken besteht, runterzurechnen, dort die Verformung zu lösen, es anschließend wieder tesseliert wird und Displacementmap + Geometrische Texturen wieder drauf rechnet... wobei das ganze auf der GPU geschieht.
Wenn das stimmt, dann sollte die Methode auf jeden Fall auch direkt auf Low-Poly Objekte anwendbar sein.
CodingCat hat geschrieben:Skeletthierarchien blieben für physikalische Anpassung (z.B. durch inverse Kinematik) jedoch erforderlich.
Diese würde sich aber auf eine grobe Struktur beschränken und könnte notfalls auch onthefly erstellt werden, wenn dies irgendwo benötigt wird. Die IK hat man durch dieses System ja praktisch die ganze Zeit. Schwieriger wäre da eher, normale FK zu realisieren.

Was mich auch sehr an dieser Technik reizen würde, wäre die möglichkeit, auch Gesichtsanimationen schnell und geschickt lösen zu können... einfach ein paar Punkte am Mund fixieren, diese an bestimmte Kriterien in Soundfiles binden und schon sollte man ein anständiges Lipsink haben. :D
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 22:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von CodingCat »

Zudomon hat geschrieben:Diese würde sich aber auf eine grobe Struktur beschränken und könnte notfalls auch onthefly erstellt werden, wenn dies irgendwo benötigt wird. Die IK hat man durch dieses System ja praktisch die ganze Zeit. Schwieriger wäre da eher, normale FK zu realisieren.
Hm, das habe ich mich während des Videos die ganze Zeit gefragt. Die Modelle weisen ja durchaus eine bestimmte Grundstellung auf, Arme und Beine jeweils leicht angewinkelt. Packt man dieses Krötenpanzerdings nun am Fuß, bewegt sich das Modell ziemlich gut, allerdings bleibt das Bein immer leicht angewinkelt, eben in der deformierten Grundstellung, selbes gilt für den Arm. Die Frage, deren Antwort sich aus dem Video für mich nicht ganz ergibt, ist nun, ob der Solver die Gelenkstelle erkennt (nur wie?) oder ob die Grundstellung und die Bewegungen einfach nur geschickt gewählt sind. Im ersten Fall könnte man sich IK schenken, im zweiten Fall wird man es für ein größeres Bewegungspensum wohl durchaus brauchen.
Und: FK wäre doch einfach implementiert, einfach den Joints entsprechende Fixpunkte zuweisen?
Zudomon hat geschrieben:Was mich auch sehr an dieser Technik reizen würde, wäre die möglichkeit, auch Gesichtsanimationen schnell und geschickt lösen zu können... einfach ein paar Punkte am Mund fixieren, diese an bestimmte Kriterien in Soundfiles binden und schon sollte man ein anständiges Lipsink haben. :D
Ja, dafür sollte sich die Technik auf jeden Fall eignen, wenn Motion Capturing oder Lip Sync Daten vorgegeben sind, geht es wohl kaum komfortabler als über diese netten Einzel-Fixpunkte.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Zudomon
Establishment
Beiträge: 2139
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Zudomon »

CodingCat hat geschrieben:
Zudomon hat geschrieben:Diese würde sich aber auf eine grobe Struktur beschränken und könnte notfalls auch onthefly erstellt werden, wenn dies irgendwo benötigt wird. Die IK hat man durch dieses System ja praktisch die ganze Zeit. Schwieriger wäre da eher, normale FK zu realisieren.
Hm, das habe ich mich während des Videos die ganze Zeit gefragt. Die Modelle weisen ja durchaus eine bestimmte Grundstellung auf, Arme und Beine jeweils leicht angewinkelt. Packt man dieses Krötenpanzerdings nun am Fuß, bewegt sich das Modell ziemlich gut, allerdings bleibt das Bein immer leicht angewinkelt, eben in der deformierten Grundstellung, selbes gilt für den Arm. Die Frage, deren Antwort sich aus dem Video für mich nicht ganz ergibt, ist nun, ob der Solver die Gelenkstelle erkennt (nur wie?) oder ob die Grundstellung und die Bewegungen einfach nur geschickt gewählt sind. Im ersten Fall könnte man sich IK schenken, im zweiten Fall wird man es für ein größeres Bewegungspensum wohl durchaus brauchen.
Und: FK wäre doch einfach implementiert, einfach den Joints entsprechende Fixpunkte zuweisen?
Ob die Grundstellung wichtig ist, weiß ich nicht, aber ich glaube nicht. Die Fixpunkte müssten sich natürlich untereinander Invers Kinematisch verhalten, also wäre es im Grunde eine Skelettstruktur, die man bräuchte... davon war ich jetzt schon ausgegangen. Mit onthefly erstellen meinte ich, wenn man z.B. einen Arm nicht bewegen muss, kann man dessen Fixpunkte auch erstmal weg lassen. Aber das sind nur Vermutungen.

Ein ähnliches Verfahren kann man übrigens auch für Punktwolken nutzen. Das wird aus den anderen Paper/Videos auf der Seite
http://www.kunzhou.net/
ersichtlich. Das ganze hat wohl auch etwas damit zu tun, das man die Punktkoordinaten relativ aus den Nachbarn ermittelt... aber viel mehr kann ich noch nicht dazu sagen.

In einem älteren Video auf dieser Seite (weiß jetzt aber nicht mehr welches) wird auch das Stanford Bunny ähnlich animiert. Dazu wird einfach Ring an Kanten um den Hals ausgewählt und gedreht, wodurch sich der Kopf dreht... alles sehr beeindruckend... wenn man das alles mal mathematisch nachvollziehen könnte...
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 14:27

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von eXile »

CodingCat hat geschrieben:Die Frage, deren Antwort sich aus dem Video für mich nicht ganz ergibt, ist nun, ob der Solver die Gelenkstelle erkennt (nur wie?)
Ganz sicherlich nicht.

Der Haken am Algorithmus (wenn mich nicht alles täuscht) ist wohl der Speicherverbrauch. Pro Meshtyp einmal (A^T A)-1 und A^T. Leider ist das Paper in der Beziehung ziemlich still ...
Benutzeravatar
Zudomon
Establishment
Beiträge: 2139
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Zudomon »

Das erste Problem, was man diesbezüglich lösen müsste, dass man Vertexe relativ zu ihren Nachbarn speichert.
Also normalerweise speichert man ja die Raumkoordinate... bei dem Verfahren wird aus den Nachbarpunkten der Mittelwert gebildet und dann die Differenz zwischen echter Raumkoordinate und dem Mittelwert durch eine Matrix ausgedrückt. Aber ich kann mir nicht vorstellen, wie man das anstellt.
Benutzeravatar
Richard Schubert
Moderator
Beiträge: 106
Registriert: 27.02.2009, 09:44
Wohnort: Hohen Neuendorf (b. Berlin)
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Richard Schubert »

Ich hatte genau das gleiche Problem während der Diplomarbeitszeit. Man hat ein fantastisches Paper gefunden, welches die Technologie in nur acht Seiten erklären musste, um auf der Siggraph akzeptiert werden zu können. Diese Technologie nachzubauen war aber praktisch unmöglich. Habe zwei Monate damit verschwendet all die kleinen Dinge selbst herauszufinden, die nicht in dem Paper erwähnt waren, aber dennoch notwendig waren zur letztendlichen Funktionsfähigkeit. Durch Zufall habe ich bemerkt, dass Microsoft all seine Microsoft Research Ergebnisse Patentieren lässt. Von daher hast du Glück bzw Pech, wenn du das in einem kommerziellen Produkt in den USA verkaufen willst.

Habe das Patent hier mal temprär hochgeladen, weil man an die PDF Version (vollständig und mit Bildern) nicht ohne weiteres rankommt. Dort sind alle Fragen beantwortet, selbst einige die man nicht mal fragen würde.
Produktivität über Performance - XNA Creators Club
Benutzeravatar
Zudomon
Establishment
Beiträge: 2139
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: [PAPER] Direct manipulation of subdivision surfaces on gpu

Beitrag von Zudomon »

Vielen dank fürs hochladen! Das sieht doch recht brauchbar aus. Zum Glück gelten ja derlei Patente nicht in Deutschland/Europa :D

Ich sitze derzeit an meiner Diplomarbeit. Bastel nen kleinen Editor und würde da gerne auch ne Möglichkeit bieten, dort gebaute Charaktere zu animieren. Da käme mir die Technik sehr gelegen... mal schauen, ob man das in den nächsten Tagen mal hinbekommt. :)
Antworten