Assimp: Fragen zum MD5 Loader

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
CarstenF
Beiträge: 14
Registriert: 24.11.2010, 20:56
Kontaktdaten:

Assimp: Fragen zum MD5 Loader

Beitrag von CarstenF »

Hi!

Wie im anderen Thread schon erwähnt, lese ich gerade im MD5 Loader Code.

Meine Haupt-Frage ist:

:arrow: Ist ein in Assimp importiertes MD5 Mesh äquivalent zum "Original" MD5 Mesh, insbesondere wenn beide animiert werden??


Etwas präziser formuliert:
  • Ich vermute bzw. gehe davon aus, dass die Darstellung der "Bind-Posen" eines MD5 Model sowohl nach dem Import in Assimp, als auch im "Original" MD5 Format, Vertex-für-Vertex exakt identisch sind (von Rundungsfehlern abgesehen).
  • Nehmen wir nun an, wir haben für eine Animations-Sequenz einen Zeitpunkt t, der in Assimp als auch im Original MD5 Format exakt dieselbe Pose des Modells beschreibt (dieselben Matrizen in der (ggf. passend angeglichenen) Node-Hierarchie).
  • Erhalten wir dann Vertex-für-Vertex dieselben Meshes (wieder unter Absehung von Rundungsfehlern)? (Dies ist oben mit "äquivalent" gemeint.)
(Diese Frage stellt sich deshalb, weil ich derzeit daran arbeite, quasi den Assimp Import "rückgängig" zu machen, d.h. aus einem in Assimp importierten MD5 File wieder ein ("äquivalentes") MD5 zurück zu gewinnen.)


Dazu betrachte ich also den MD5 Loader Code:
Dort wird im wesentlichen für einen MD5-Vertex die Summe seiner MD5-Weights ermittelt (das gewichtete Mittel aus einer Liste von Vertex-Positionen).
Das Ergebnis (ein einziger Punkt!) liegt danach im Worldspace vor.
Dieser Punkt wird wiederum den Bones zurück-zugeordnet, mit den Gewichten aus den MD5-Weights.

D.h. später wird dieser Punkt (wie auf http://sourceforge.net/projects/assimp/ ... ic/3880745 beschrieben) von der Bone-Offset-Matrix in die Bone-Spaces der beitragenden Bones transformiert, dann wieder gemäß der Orientierung dieser Bones (zum Zeitpunkt t, siehe oben) zurück in den Worldspace, und das Endergebnis für die Grafikausgabe ist erneut das gewichtete Mittel.

ABER: Hat dieses neue gewichtete Mittel noch irgendeinen zusammenhang mit dem "Original"???
(außer zufällig ungefähr da zu sein, wo das Original gewesen wäre?)

Ich habe heute Mittag versucht, nachzurechnen, ob bzw. dass es einen Zusammenhang gibt - hätte ja sein können, dass eine ganze Kette von Matrizen und Linearkombinationen dazu führen, dass gezeigt bzw. nachgerechnet werden kann, dass beides äquivalent ist bzw. einen Zusammenhang hat.

Das ist mir aber nicht gelungen, was an meinem mangelnden Verständnis des Assimp-Codes und/oder Mathe-Grundlagen liegen kann -- oder es gibt keinen (dann wäre der MD5 Loader Code falsch...).

Was stimmt?



Beachte, dass gemäß obigem MD5 prinzipiell sogar mächtiger zu sein scheint als Assimps Datenstrukturen, weil MD5 ausdrücken kann, dass das gewichtete Mittel aus Positionen gebildet werden kann, die in der "Bind Pose" nicht dieselbe World-Space Koordinate haben müssen. Assimp scheint hier genau dieser Beschränkung zu unterliegen: Das gewichtete Mittel kann nur aus Positionen gebildet werden, die in der Bind-Pose eine gemeinsame Koordinate haben... :!:
Viele Grüße,
Carsten

Cafu - die open-source Spiele- und Grafik-Engine für multiplayer, cross-platform, real-time 3D Action
Antworten