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.html

    Linear Interpolierte Keyframe Animation für Skelettbasierende Animation:
    http://loop.servehttp.com/~vertexwahn/oldwiki/public_html_an_turing/KeyFrameAnimation.html

    Das 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!


Anmelden zum Antworten