Milkshape Animation exportieren und ausführen
-
Hallo,
ich habe mir nen eigenen Exporter für Milkshape geschrieben, der mir das Modell und
die Texturen in eine Datei exportiert. Dann habe ich noch eine Modell-Klasse geschrieben, die diese Datei ließt und das Modell in OpenGL zeichnet.
Jetzt wollte ich mich mal an Animationen ran machen, aber ich habe keine Ahnung wie
Milkshape die Animationen speichert un wie man sie "abspielt".Hier ein Ausschnitt aus der Milkshape 3D SDK:
/* msPositionKey */ typedef struct msPositionKey { float fTime; msVec3 Position; } msPositionKey; /* msRotationKey */ typedef struct msRotationKey { float fTime; msVec3 Rotation; } msRotationKey; /* msBone */ typedef struct msBone { int nFlags; char szName[MS_MAX_NAME]; char szParentName[MS_MAX_NAME]; msVec3 Position; msVec3 Rotation; int nNumPositionKeys; int nNumAllocedPositionKeys; msPositionKey* pPositionKeys; int nNumRotationKeys; int nNumAllocedRotationKeys; msRotationKey* pRotationKeys; } msBone;Heisst das jetzt:
jeder Bone speichert eine Array von KeyFrames. Ein Keyframe speichert eine Zeit (zb in Millisekunden) und der dazugehörige Positionsvektor?
Wie ist es dann bei Rotation: Der Rotationskey speichert eine Rotation in einem Vektor?? ist das möglich??
danke für antworten, christoph
-
Das Stichwort lautet "Skelletbasierende Animation" -> google
Was ich dir sonst noch anbieten kann:
Skelletbasierende Animation
http://loop.servehttp.com/~vertexwahn/oldwiki/public_html_an_turing/sa.htmlLinear Interpolierte Keyframe Animation für Skelettbasierende Animation:
http://loop.servehttp.com/~vertexwahn/oldwiki/public_html_an_turing/KeyFrameAnimation.htmlDas Ms3D Format
http://loop.servehttp.com/~vertexwahn/oldwiki/public_html_an_turing/Das Ms3D Format.html
-
hui danke, joar hört sich alles ganz gut an!
nur ich versteh das nicht:
"Die einzelnen Komponenten gliedern sich in x-Rotation, y-Rotation, z-Rotation..."wie wird da jetzt die rotation gespeichert? da reicht doch prinzipiell nur ein wert, und zwar eine grad-angabe? oder man brauch 4 werte (x,y,z,w) (quaternion) um eine rotation zu beschreiben.
#edit
oder ist mit diesem rotationsvektor einfach nur die neue position angegeben und die drehung kann man dann anhand der position des parent-joints bestimmen?alles andre versteh ich

lg
-
(Fehlpost)
-
Hi,
auf der Milkshape Seite gibt es eine Referenz-Implementierung eines Loaders der auch die Animationen abspielt:
http://chumbalum.swissquake.ch/ms3d/download.html
=> MilkShape 3D Binary Model Viewer (/w src)
Arbeite das durch und es dürfte alles klar werden.
@Rotation
Ja ein Winkel könnte reichen wenn man die Rotationsachse mit dazu hat. Aber in der Regel rotiert man erst um X-Achse, dann um die Y-Achse und dann um die Z-Achse, daher drei Winkel. Oder man baut sich daraus ein Quaternion um Platz zu sparen.Ciao,
Stefan
-
joar das hört sich alles schonmal sehr gut an! dankeschön für die antworten!