Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 08.08.2016, 12:45 Titel: 3D Animationsdatei (*.ba) auslesen |
|
|
Ich versuche seit ein paar Tagen die Animationsdateien (ursprünglich vermutlich von Serious Ska Studio oder Serious Engine, allerdings sind diese hier zusammengefasst *.AA) aus einem alten Spiel (Last Chaos) auszulesen....
Da ich mittels verschiedener PlugIns bereits die 3D 'meshes' (*.bm) und Skelett-Joints (*.bs) laden und auch nutzen kann würde ich nun auch gern die kompletten fertigen (und verschiedenen) animationen hinzuladen....
das würde mir für spielereien recht viel arbeit ersparen da ich so quasi eine komplette 3D Datenbank vom Spiel hernehmen könnte (Charaktere, Tiere, Monster und verschiedene Objekte) ohne die geriggten meshes selbst animieren zu müssen... laufen, rennen, schlagen ect.....
Bisher konnte ich leider nicht wirklich viel brauchbares mit google finden und habe bisher leider nur einen groben Anfang;
Code: |
'const filename = "ni.ba"
const filename = "flag1.ba"
Dim FF as Integer
FF = FreeFile
Open filename for binary as #FF
Dim headerstring as String*4
Dim headerinteger as Integer
Dim anystring as string
Dim headerfloat as Single
get #FF,,headerstring '' 'ANIM'
?"Header 'ANIM'",headerstring
get #FF,,headerinteger '' Version??
?"version?",headerinteger,hex(headerinteger)
get #FF,,headerinteger '' n animationfiles / count animations
?"n Animations:",headerinteger,hex(headerinteger)
get #FF,,headerinteger '' len of origin AA animation filename
?headerinteger,hex(headerinteger)
anystring = space(headerinteger)
get #FF,,anystring ''origin AA animation filename
?"Animation File:",anystring
get #FF,,headerinteger ''len of animationname
anystring = space(headerinteger)
get #FF,,anystring 'name of animation
?"Animationname:",anystring
' single/float FPS (meist 0.033333)
get #FF,,headerfloat
?"FPS:",headerfloat
' 4 bytes ????????
' anzahl der betroffenen Joints in der animation? Frames der Bewegung? oder sonstwas???
get #FF,,headerinteger
?headerinteger
' 4 bytes 00 00 00 00
get #FF,,headerinteger
?headerinteger
' 4 bytes 00 00 00 00
get #FF,,headerinteger
?headerinteger
' 4 bytes 00 00 00 00
get #FF,,headerinteger
?headerinteger
' 1 x Integer 'unknown' anzahl joints????
get #FF,,headerinteger
?headerinteger
' 1 x Integer 'len Jointname'
get #FF,,headerinteger
?headerinteger
anystring=space(headerinteger)
get #FF,,anystring
?anystring
close #FF
sleep
|
dazu habe ich mal 2 der ba files zum downloaden... ein einfaches (flag1) mit wohl nur einer einzigen loop animation
und noch eines von einem character das etwas größer ist...
ich vermute mal das zwischen den Joint-Blöcken überwiegend single matrix daten stehen, leider fehlt mir hier und da noch der richtige ansatz...
flag1.ba
ni.ba _________________
 |
|