Boneanimationen aus 3DSMax laden



  • Hi,

    ich suche ein Tutorial für das Laden von Boneanimationen, die in 3DSMax erstellt wurden. Ich habe mir bereits ein Modelloader geschrieben, der 3DSMax Modelle mit Texturen läd. Das war relativ simpel. Ich habe die 3DSMAX Datei in als eine ASCII-Datei(*.ASE) exportiert, mir dann die Datei im Textformat angesehen und mir die nötigen Informationen wie Vertex- oder Facekoordinaten herausgesucht und die dann in meinem Programm geladen und ausgeben lassen.
    In der ASE-Datei finde ich zwar auch Informationen über die Animation, kann damit aber nicht so wirklich etwas anfangen.

    Hier mal ein Ausschnitt, der offensichtlich etwas mit der Animation zu tun hat:

    *3DSMAX_ASCIIEXPORT	200
    *COMMENT "AsciiExport Version  2,00 - Sun Sep 11 16:06:33 2005"
    *SCENE {
    	*SCENE_FILENAME "rig_arm_fin.max"
    	*SCENE_FIRSTFRAME 0         //der anfangsframe nehme ich an
    	*SCENE_LASTFRAME 100        //der letzte frame/anzahl der frames
    	*SCENE_FRAMESPEED 25        //frame geschwindigkeit
    	*SCENE_TICKSPERFRAME 192    //bilder pro frame? 
    
    // das oben sieht mir eher nach informationen für eine keyframeanimation aus
    // brauch ich das für eine skelettanimation?
    

    Das nächste scheint etwas mit der positionsänderung und der rotation zu tun haben(z. B. bei welchem tick(nennt man das so?) das objekt welche position besitzt):

    *TM_ANIMATION {
    	*NODE_NAME "Camera03"
    	*CONTROL_POS_TRACK {
    		*CONTROL_POS_SAMPLE 0     -1838.8322   177.7493     156.9001
    		*CONTROL_POS_SAMPLE 960   -1903.7831	  -9.8659	      290.5031
    		*CONTROL_POS_SAMPLE 1920  -1968.7339	  -197.4810    424.1059
    		}
    	*CONTROL_ROT_TRACK {
    		*CONTROL_ROT_SAMPLE 0     0.5972  -0.6127  -0.5176   4.0760
    		*CONTROL_ROT_SAMPLE 960  -0.0177   0.6027   0.7978   6.1454
    		*CONTROL_ROT_SAMPLE 1920  0.0821  -0.6073  -0.7902   0.1268
    		}
    

    Aus diesem Ausschnitt werde ich so gut wie überhaupt nicht klar(nur das es um die joints geht):

    *IK_JOINT {
    		*IK_TYPE Position
    		*IK_DOF 3
    		*IK_XACTIVE 0
    		*IK_YACTIVE 0
    		*IK_ZACTIVE 0
    		*IK_XLIMITED 0
    		*IK_YLIMITED 0
    		*IK_ZLIMITED 0
    		*IK_XEASE 0
    		*IK_YEASE 0
    		*IK_ZEASE 0
    		*IK_LIMITEXACT 0
    		*IK_JOINTINFO 0 0.0000 0.0000 0.0000
    		*IK_JOINTINFO 1 0.0000 0.0000 0.0000
    		*IK_JOINTINFO 2 0.0000 0.0000 0.0000
    	}
    	*IK_JOINT {
    		*IK_TYPE Rotation
    		*IK_DOF 3
    		*IK_XACTIVE 1
    		*IK_YACTIVE 1
    		*IK_ZACTIVE 1
    		*IK_XLIMITED 0
    		*IK_YLIMITED 0
    		*IK_ZLIMITED 0
    		*IK_XEASE 0
    		*IK_YEASE 0
    		*IK_ZEASE 0
    		*IK_LIMITEXACT 0
    		*IK_JOINTINFO 0 0.0000 0.0000 0.0000
    		*IK_JOINTINFO 1 0.0000 0.0000 0.0000
    		*IK_JOINTINFO 2 0.0000 0.0000 0.0000
    	}
    

    Könnt ihr mir helfen? Für eure Mühe bedanke ich mich schon einmal im Voraus.

    Gruß Crabbe



  • ich weiss nicht, ob es hilft, aber ich habe gerade mal IK_DOF bei google eingegeben und bin auf folgenden sourcecode gestoßen: http://merlin.fit.vutbr.cz/svn/TankGame/Spring2004/src/ModelASE.cpp

    Der scheint sich auch mit dem Import von 3Ds max dateien zu beschäftigen...
    schau ihn dir doch mal an, vielleicht sind da gute Tipps/ Erklärungen drin.

    ndT Lupo

    Jedes gelöste Problem ist einfach.
    ^Thomas Alva Edison^



  • TomasRiker (aus dem Forum) hat doch auch 'nen Max-Exporter geschrieben (inkl. Bones), wenn ich mich nicht irre?!?

    Besseren Support als bei dem wirst Du wohl nicht kriegen... 😉



  • 😮 😮

    [OT]
    Hey, Sgt. Nukem ist back 😃
    Willkommen zurück 😉 Wo warste denn die ganze Zeit?... Doch nicht etwa im RL? 😮

    🙂 😃 😉 😞 :p

    PS: Argh, warst wohl doch nicht genug lang weg, die Smilie-Begrenzung ist ja immer noch auf 10...
    [/OT]


Anmelden zum Antworten