since known format specs aren't being shared except for the vague table in Han's model on the first page i guess
we have to figure this out from the start if there is to be hope for extending support to the bigger rax models.
i just don't know why anyone would keep game format specs to themselves on a game research forum *.rax format research reboot
I'm going to start with Han's stormtrooper model since there was nothing mentioned except this viewtopic.php?p=115108#p115108
I know this looks messy, so bear with me.
0x00 - 4bytes - stored start address of some unk table near the end of the file
0x10 - 4bytes - stored address that takes you 20 bytes after "deft"
0x28 - 4bytes - stored start address of where that first unk table data is
0x2c - 4bytes - stored start address of material data (0x60)
0x30 - 4bytes - number of materials (4) --each material block is 288 bytes
0x60 - start material data - 1st material
--- 0x60 4bytes - diffuse texture name
--- 0x70 4bytes - normal map texture name
--- 0x80 4bytes - specular texture name
0x180 - 2nd material
0x2a0 - 3rd material
0x3c0 - 4th material
-loop through the 3 texture names in each material block (4)
you reached the end of material data when you see "deft" which i assume is the start of skeleton data.
i know nothing of this so i skip to the next "CHRTOP" text at 0x309c
0x30a3 - start array of submesh names (8 in total)
--i have yet to see anything that indicates how many submeshes there are
--i guess you could just use the number of names as the variable here?
0x30e8 - first submesh info starts with "00 00 10 03", seems to be one for each submesh
-00 00 10 03 - 4bytes
-vertex count - 4bytes
-face indices count - 4bytes
0x3200 - next submesh
0x3380 - next submesh
0x34a0 - next submesh
0x35c0 - next submesh
0x36e0 - next submesh
0x3800 - next submesh
0x3980 - last submesh, starts with "00 00 10 0B", i am unsure why this is different from the rest
no idea how to read that because the block lengths aren't consistent between each one
I see lengths of 384, 288, 280 bytes there and i don't see any lengths stored.
I suppose you can do a byte search for "00 00 10 0B" or "00 00 10 03" to find these,
I have seen some start with "00 00 00 02", i bet this is significant in some way.
0x3b10 - 4bytes - stored start address of face indices data block (0x175e0) indicated by "FACE"
-------- 20 bytes after that address (0x175f4) is the stored start address (0x17600) where word face indices actually start
0x3b20 - 4bytes - stored start address of vertex block
0x3b28 - 4bytes - vertex stride(?) (24) --if integer is 0 stride is usually 16
0x3b34 - 4bytes - stored start address of UV data
According to what we see in the Hex2obj image hereviewtopic.php?p=115086#p115086
The vertices are stored as shorts and the UVs are word with 4 byte stride per vertex
I attached the *.rax sample used for this outline if anyone else wants to have a look
I'll post more as i figure it out
If anyone else here can shed light on offsets/flags etc in this *.rax format feel free to jump in!