 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 08.08.2016, 11: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 _________________
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 11.08.2016, 13:10 Titel: |
|
|
Bin beim auslesen schon ein wenig weiter gekommen;
kann aber irgendwie mit den Daten nicht wirklich was anfangen....
speziell mit den 4 floats und der short/(oder 2 bytes?) vor jedem vectorpaar und wie ich das ganze nun animiere (eigentlich ja rotiere)
die ersten vectorpaare scheinen positionen zu sein (stimmen im editor jedenfalls weitestgehend überein)
da im grunde nur die joints/bones mit einer bewegung interessieren der hexausschnitt von Bone29
Code: | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 06 00 00 00 42 6F 6E 65 32 39 00 00 80 3F 00 00 ....Bone29..€?..
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000020 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 €?..............
00000030 00 00 00 00 80 3F 00 00 00 00 02 00 00 00 00 00 ....€?..........
00000040 8A 00 3D B5 AA 3E 00 00 00 00 00 00 00 80 0B 00 Š.=µª>.......€..
00000050 B6 3D 3D B5 AA 3E 00 00 00 00 00 00 00 00 0B 00 ¶==µª>..........
00000060 00 00 00 00 8A 00 97 E9 7F 3F 92 6D 04 BA 31 29 ....Š.—é.?’m.º1)
00000070 D6 BC 56 7A 01 3A 02 00 7A BF A1 54 7F 3F 9D D8 Ö¼Vz.:..z¿¡T.?.Ø
00000080 51 BC 57 24 C3 3C 9A 40 89 3D 03 00 80 3F 1C DC Q¼W$Ã<š@‰=..€?.Ü
00000090 7E 3F 88 25 81 BC 5B 0A 10 3D 1E 36 B0 3D 04 00 ~?ˆ%.¼[..=.6°=..
000000A0 E3 3D 0F 08 7F 3F E2 D3 4E BC 6E 41 B3 3C A4 4B ã=...?âÓN¼nA³<¤K
000000B0 AA 3D 05 00 A7 3E 9E 6E 7F 3F A7 91 CE BB 58 73 ª=..§>žn.?§‘λXs
000000C0 A4 BB 64 55 87 3D 06 00 8D 3D D6 A9 7F 3F 53 D2 ¤»dU‡=...=Ö©.?SÒ
000000D0 1D BB 6E 93 D5 BC FF 83 34 3D 07 00 80 BF 50 D4 .»n“Õ¼ÿƒ4=..€¿PÔ
000000E0 7F 3F CE 63 8D BB 82 1F 09 BD 3D C4 63 3C 08 00 .?Îc.»‚..½=Äc<..
000000F0 55 BD BD C6 7F 3F 54 AB 0D BC 9F 59 0F BD 33 42 U½½Æ.?T«.¼ŸY.½3B
00000100 AD BC 09 00 43 BE 38 9B 7F 3F D9 3F 32 BC 69 BD .¼..C¾8›.?Ù?2¼i½
00000110 0D BD CB B4 2B BD 0A 00 79 BF 09 AC 7F 3F 46 73 .½Ë´+½..y¿.¬.?Fs
00000120 10 BC 59 56 07 BD C7 C4 18 BD 0B 00 80 BF 78 D7 .¼YV.½ÇÄ.½..€¿x×
00000130 7F 3F 9D C0 98 BB 92 76 F2 BC D6 C5 96 BC 3D B5 .?.À˜»’vò¼ÖÅ–¼=µ
00000140 AA 3E ª>
|
auch der letzte float nach jedem joint ergeben für mich irgendwie keinen sinn....
Code: | Header 'ANIM' ANIM
version? 14 E
n Animations: 1 1
Animation File: Data\world\StartZone\Ska\flag1.aa 33
Animationname: flag1 5
FPS: 0.1
12 Keyframes
7 Joints
Bone05:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 195| v(3) 0 -0.004561 0
Keyframe( 11): 0| v(3) 0 -0.004561 0
Keyframe: 0| 201| V(4) 0.7063459 -0 0 0.7078671
Keyframe: 11| 16256| V(4) 0.7063459 -0 0 0.7078671
unknown float: 0
Bone06:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 0| v(3) 1.703301 -0 0
Keyframe( 11): 0| v(3) 1.703301 -0 0
Keyframe: 0| 0| V(4) 0.9999995 0 -0 -0.001075501
Keyframe: 11| 195| V(4) 0.9999995 0 -0 -0.001075501
unknown float: 1.703301
Bone07:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 138| v(3) 0.575091 0 0
Keyframe( 11): 0| v(3) 0.575091 0 0
Keyframe: 0| 138| V(4) 1 0 0 0
Keyframe: 11| 8| V(4) 1 0 0 0
unknown float: 0.575091
Bone08:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 138| v(3) 1.703301 -0 0
Keyframe( 11): 0| v(3) 1.703301 -0 0
Keyframe: 0| 138| V(4) 0.6807516 0.06870494 0.07291941 -0.7256303
Keyframe: 2| 3| V(4) 0.6729881 0.04578535 0.04760337 -0.7366987
Keyframe: 3| 8| V(4) 0.670723 0.03046191 0.03122042 -0.7404242
Keyframe: 4| 0| V(4) 0.6713531 0.003883575 0.003661635 -0.7411186
Keyframe: 5| 16353| V(4) 0.6726606 -0.0265405 -0.02760159 -0.7389596
Keyframe: 6| 138| V(4) 0.6733309 -0.0424431 -0.0438811 -0.7368168
Keyframe: 7| 8| V(4) 0.6737201 -0.03276955 -0.03393026 -0.7374795
Keyframe: 8| 6| V(4) 0.6739423 -0.008586046 -0.009006706 -0.7386793
Keyframe: 9| 138| V(4) 0.6744286 0.01516654 0.01567994 -0.7380177
Keyframe: 10| 0| V(4) 0.6762923 0.03333507 0.03495382 -0.7350479
Keyframe: 11| 138| V(4) 0.6787597 0.05103757 0.05395576 -0.7305951
unknown float: 1.703301
Bone09:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 138| v(3) 0.297268 -0 0
Keyframe( 11): 6| v(3) 0.297268 -0 0
Keyframe: 0| 138| V(4) 0.9905784 0.002589144 -0.1305005 0.0414422
Keyframe: 1| 138| V(4) 0.9971794 0.004333724 -0.07164884 0.02192935
Keyframe: 2| 0| V(4) 0.9999006 0.006061103 -0.01251824 0.002331232
Keyframe: 3| 8| V(4) 0.9992633 0.006216579 0.03497351 -0.01451369
Keyframe: 4| 3| V(4) 0.9968255 0.003162038 0.07322471 -0.03109672
Keyframe: 5| 15434| V(4) 0.9940013 -0.001445169 0.09972045 -0.04489003
Keyframe: 6|-17209| V(4) 0.9943835 -0.004174949 0.09541691 -0.04560062
Keyframe: 7| 138| V(4) 0.9991067 -0.003013942 0.03585878 -0.02215179
Keyframe: 8| 138| V(4) 0.9983941 5.734209e-005 -0.05474792 0.01455237
Keyframe: 9| 8| V(4) 0.9916788 0.002417366 -0.1218454 0.04148823
Keyframe: 10| 6| V(4) 0.9889798 0.002949504 -0.1400587 0.0478938
Keyframe: 11| 15641| V(4) 0.9897958 0.002769258 -0.1352822 0.04466856
unknown float: 0.297268
Bone29:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 138| v(3) 0.333414 0 -0
Keyframe( 11): 15798| v(3) 0.333414 0 0
Keyframe: 0| 138| V(4) 0.999658 -0.0005051728 -0.02614269 0.0004939189
Keyframe: 2|-16518| V(4) 0.9973851 -0.01280799 0.02382104 0.06701775
Keyframe: 3| 16256| V(4) 0.9955461 -0.01576497 0.03516613 0.08604072
Keyframe: 4| 15843| V(4) 0.9962167 -0.01262376 0.02188179 0.08315209
Keyframe: 5| 16039| V(4) 0.9977816 -0.006303984 -0.005018633 0.06608084
Keyframe: 6| 15757| V(4) 0.9986852 -0.002408166 -0.02607128 0.04407119
Keyframe: 7|-16512| V(4) 0.9993334 -0.004314876 -0.03347731 0.01390177
Keyframe: 8|-17067| V(4) 0.9991263 -0.008646805 -0.03499758 -0.02114973
Keyframe: 9|-16829| V(4) 0.9984622 -0.01087948 -0.03460446 -0.04192046
Keyframe: 10|-16519| V(4) 0.9987188 -0.008816546 -0.03304133 -0.03729704
Keyframe: 11|-16512| V(4) 0.9993815 -0.004661633 -0.02959755 -0.01840488
unknown float: 0.333414
Bone30:
Matrix
X 1 0 0
Y 0 1 0
Z 0 0 1
W 0 0 0
Keyframe( 0): 185| v(3) 0.659432 -0 -0
Keyframe( 11): 8224| v(3) 0.659432 -0 -0
Keyframe: 0| 185| V(4) 1 0 0 0
Keyframe: 11| 2592| V(4) 1 0 0 0
unknown float: 0.659432
0
--------------------------------
|
_________________
 |
|
Nach oben |
|
 |
UEZ

Anmeldungsdatum: 24.06.2016 Beiträge: 132 Wohnort: Opel Stadt
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|