Page 1 of 2
Tales of Zestiria
Posted: Tue Apr 26, 2016 6:23 pm
by chiri
Hi
After some hacking I managed to rip static objects directly from the model files. But I'm struggling with the animated model files: The index buffer and texture coordinate data is stored separately from the vertex data. The vertex data itself is stored directly in a hierarchical bone structure, which is too complicated for me to analyze at the moment.
The attached Edna model was ripped using NinjaRipper, but what I'm after is the bone animatable raw vertex data.
Here is what I got so far:
- Extract the "TLFILE.TLDAT" and "FILEHEADER.TOFHDB" containers using quickbms with the "tales_of_xillia.bms" profile.
- Texture descriptions are then exported in "TOTEXB_D\*.dpd" and the textures itself in "TOTEXP_P\*.dat".
- Model animations are stored in "TOMDLB_D\*.dpd" and static model data is stored in "TOMDLP_P\*.dc5".
- Run the attached code to extract DirectX DDS textures from the TOTEXP_P folder. Example: "CHR_EDN_TEN_100_CHEST0_C.dds", "CHR_EDN_TEN_100_HAIRBAND0_C.dds" and so on.
- Run the attached code to extract OBJ model files from static models in the TOMDLP_P folder. Example: "ATT_106_FLO_00.obj"
- Animation data is stored in ".toanmb"-files.
Any help parsing the animation data please?
Re: Tales of Zestiria
Posted: Tue Apr 26, 2016 6:30 pm
by chiri
I can only attach one file per post. So here's the code to extract the textures and model data.
Re: Tales of Zestiria
Posted: Tue Apr 26, 2016 6:41 pm
by chiri
And here is an example of the Edna bone animation model containing the vertex data. The nodes are named like "DB_XNECKRIBBON1_1_R", "DB_HOOD1_1_BR", "DB_HOOD1_1_BL" and so on.
My goal is to modify the vertex data and store it back into the game for a better gaming experience.
Re: Tales of Zestiria
Posted: Tue Jul 05, 2016 1:58 am
by rballad
how to use the program?
Re: Tales of Zestiria
Posted: Wed Aug 31, 2016 2:06 am
by jusete
Hey friend, How I can extract the models? I extracted the package with quickBms but I don´t know how to figure out the obj models
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 5:53 pm
by dian333
at "CHR_EDN_TEN_100_CHEST_MI.toanmb"
offset 0xC8
Code: Select all
group-01 neck ribbon r bone 0->1
neck ribbon l
group-00 hood x2 bone 2->7
cloth x4
offset 0x108
Code: Select all
"bone name " how many words +3
"DB_XNECKRIBBON1_1_R" words= 19 , 0x30-0x20=0x10=16
.... 0x40-0x30=0x10
"DB_HOOD1_1_BR" words= 13 , 0x4a-0x40=0xa =10
"DB_CLOTH1_1_BR "(space) words=15 ,0x56-0x4a=12
"DB_CLOTH1_1_R" words=13 0x60-0x56= =10
"DB_HOOD1_1_BL" words=13 0x6a-0x60= =10
"DB_CLOTH1_1_BL "(space) words=15 ,0x76-0x6a =12
=========================
in other words,
from offset 0x108
move 0x20 ##two line down
get the bone name start address ## bone name="DB_XNECKRIBBON1_1_R"
from offset 0x10B
move 0x30 ##three line down
get the 2nd bone name start address ## bone name = "DB_XNECKRIBBON1_1_L"
....
frome offset 0x124
move 0x76
get 0x19A ##bone name="DB_CLOTH1_1_L"
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 6:36 pm
by dian333
FROM offset 0x1ac TO 0x5ac
0x5AC - 0x1AC = 0x400=1024
8bone 1024/8= 128
x,y,z,w 4 float number 128/16=8 key frame
#####w 0 or 1 ,appear many times
but here ,it would be posible 4x4 matrix
Code: Select all
{A1 A2 A3 0
B1 B2 B3 0
C1 C2 C3 0
D1 D2 D3 1}
it looks like a ”no scale(size)transform “ 4x4 matrix
and then compare 0x1ac and after 0x10x4linex8bone offset
that is 0x3ac
their matrix
= = only guess
A1
{0.75} <==> 0.75
0.75 <==> 0.75
-0.037 <==> -0.037
0.184 <==> 0.184
0.365 <==> 0.365
-0.0375 <==> -0.0375
0.184 <==> 0.184
0.365 <==> 0.365
find it that A1 stay the same value, A2 ,A3 changes
continue find it that
A1
B2
C3
stay the same value
so taht ,this matrix possible have "move transform" only
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 7:44 pm
by dian333
does this anime data only have two key frame?
or above matrix is bone matrix (70% possibility ,consider order :bone-mesh-animetion)
look down ,
offset 0x5b0
offset:0x61c
8 (obejects?)
offset: 0x628
Code: Select all
float 0 0 0.1 0.1
0.5 0 1 1
5 π π π ## π=3.14159...
0.17 0 1 -6.6
= = in fact ,when i saw "0 0 0.1 0.1 0.5 0 1 1" and then number>1 .
i guess the numbers(which>1) would be <x,y,z>
so from offset 0x62c skip 0x20
ot offset 0x64c read 3 floats as <x,y,z> (which first one is x=y=z=π)
from 0x628 to 0x693 as a part ,0x694-0x628 =0x6c
it is
Code: Select all
index:1 int
?? : 2 lines skip 0x20
<x,y,z>??? : 3 float like (1,0.5)*π
....
this types parts appear 8 times
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 8:02 pm
by dian333
ok , look back to 0x1a0
print (C1 C2 C3) #IF here is bone matrix ,(C1, C2 ,C3)is bone position (x,y,z)
Code: Select all
X Y Z
1st: -0.757 120 3.38 left
2nd 0.757 120 3.38 right
3rd -5.5 112 6.49 hood b right
4th -4.4 97 2.63 cloth b right
5th -9.6 102 -3.02 cloth right
6th 5.5 112 6.49 hood b left
7th 4.4 97 2.63 cloth b left
8th 9.6 102 -3.02 cloth left
BINGO!!
and then 9th-16th is what?
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 8:43 pm
by dian333
= =CAN NOT FIND vertex_index to build face
CAN NOT FIND X Y Z W quaternion to build animetion
Re: Tales of Zestiria
Posted: Thu Sep 01, 2016 9:44 pm
by dian333
= = animetion data isobviously in "TOANMB"and "TOANMSB"
“MDL” 〉〉model ..bone+mesh+weight+material ONLY
Re: Tales of Zestiria
Posted: Sun Sep 04, 2016 7:03 pm
by ChrisX930
Now...
is there a way to import the models (probably with animations) into 3dsmax or similar yet?
Re: Tales of Zestiria
Posted: Tue Sep 06, 2016 1:01 am
by shakotay2
Most confusing thread I've ever read.
1. it doesn't make sense to care for animation data as long as you don't have the skeleton, imho
2. give the .toanmb file some structure (search for "EDN_" for example)
Code: Select all
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0B20 30 80 00 00 CA 02 00 00 3A 01 00 00 90 00 00 00
0x2CA -> 714 (x28)
Code: Select all
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
94F0 88 AD 00 00 49 00 00 00 5B 00 00 00 23 00 00 00
0x0049 -> 73 (x28)
At 0x9504 and 0x11C1C there's promising point clouds:
charEdnTen100ChestMi.jpg
Re: Tales of Zestiria
Posted: Tue Sep 06, 2016 7:33 am
by dian333
this a file from DLC (story of alisha) in "DATADLC\008\EXTRA\WIN\TOMDLP_P"
which player angrily call it "真の仲间"
file:
https://mega.nz/#!VkBHWJzJ!WqHpQl1I__hV ... OraNgEyINo
Re: Tales of Zestiria
Posted: Tue Sep 06, 2016 8:20 am
by dian333
in “CHR_EDN_TEN_100_CHEST_MI.toanmb”
Code: Select all
offset 0xb20: {CA 02 00 00} = int 714 this part vertex number
the part is offset 0xb34 - 0x594C
FVF size = 28
(0x594C-0xb34)/28= 714
as the name "HAND_0_L_EDN......"