Hi, ich habe mir eine wavefront obj loader gebastelt und will jetzt die Möglichkeit haben, die geladenen models zu animieren. Dazu möchte ich zusätzlich zu dem model eine milkshape ascii datei zur animation laden können. Ich habe jetzt ne weile gesucht, aber finde einfach keine ordentliche specification zum Milkshape Ascii Format.
Hat jemand ne idee wo ich das finden kann, oder vielleicht einen besseren Vorschlag zur animation?
da gibts gleich in der ersten Tabelle nen download für nen Milkshape viewer für das ascii und das binary format, inklusive source. Daraus kannste garantiert was machen. In der Model.cpp ist eine Methode die heißt cModel::Read (const char *szFilename). Da kannste mit ein bischen c/c++ Kenntnissen anschauen, wie man das ascii file lädt. Die Typendefinition steht wohl in der Model.h.
das ascii Format funktioniert eigentlich genauso wie das binäre Format die Unterschiede sind ziehmlich selbsterklärend wenn du dir die Datei mal anschaust... Problem ist aber das ms3d nicht exportieren kann wenn du nur ein Skelett im Model hast (jedenfalls bis zur 1.8.0 nicht), sprich du brauchst min. ein Mesh.... von daher nimm lieber das binäre Format
So, das Laden hab ich jetz durch, jetzt hab ich das Problem beim rendering.
Wie muss ich die matrizen berechnen? ich habe jetz schon alles mögliche durchprobiert und gelesen etc aber die animation sieht einfach nicht so aus wie sie sollte.
kann mir jemand eine kurze Beschreibung geben, wie ich alles berechnen muss?
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
also ich kenne das format nicht, aber es könnte sein, dass dir nur ein rotationswinkel und eine achse gegeben ist aus denen du dann ein quaternion machst. Aus diesem kannst du dann wiederum die matrix berechnen. Die Position ist wichtig, weil du ja nur um das Zentrum des Koordinatensystems rotieren kannst, deshalb musst du alle vertices ersteinmal in das Zentrum relativ vom joint verschieben. Also entgegen der Position. Wenn man dann die Rotationsmatrix drauf anwendet sollte es klappen. Falls du mit quaternions bewandert bist, kannste auch direkt mit denen die rotation ausführen (musst dann aber trotzdem noch verschieben), dadurch sparst du dir zwar das umrechnen in eine matrix, aber der rechenaufwand ist ein kleinesbischen höher. Die darstellung als quaternion wird meist gewählt um speicher zu sparen im dateiformat.
Danke, das wirds warscheinlich gewesen sein. Die Animation hat immer richtig funktioniert, sofern die bones nichts rotiert waren, sobald das der fall war hats meine animation zerhaun.
So ich hab jetz vor kurzen die Arbeit an meinem Projekt wieder aufgenommen und hänge immernoch an dem animations problem. Ich bekomm es einfach nicht richtig hin.
Also ich mache es jetzt folgendermaßen: - Für jeden Root-Bone habe ich eine Matrix (ParentMatrix) , die erst von diesem bone transliert und rotiert wird und dann an das kind-bone weitergereicht wird, welches diese wieder rotiert, transliert - für jeden bone berechne ich eine KeyFrameMatrix.
Dann mache ich: - multipliziere die Modelview matrix mit der ParentMatrix - multipliziere die ModelView matrix mit der KeyFrameMatrix - multipliziere die Modelview matrix mit der inverse der ParentMatrix - gehe weiter zum Kind-Bone und reiche die ParentMatrix durch, welche dann in gleicher weise von Kind-bone transliert und rotiert wird
Mein Problem liegt (denke ich) beim Berechnen der rotations matrix.
Leider bin ich nicht bewaldelt mit Quaternions und bin gerade dabei mich einzulesen. Aber so wie ich das verstehe, braucht man, um mit einem Quaternion die Rotation zu berechnen einmal die Achse (als 3-Vektor) und den Winkel, was vier Werte ergibt.
Im Milkshape format finde ich aber zur Rotation je nur 3 Werte, von denen ich ausgegangen bin, dass sie einfach nur die Rotation um x,y,z achse repräsentieren.
Diese eingesetzt ergeben aber nur eine Sinnvolle animation, wenn ich vorher nicht die ParentMatrix rotiere.
ich hoffe ihr könnt helfen. bin echt am verzweifeln
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.