Exanima 3D models, unknown format
Posted: Wed Jul 28, 2021 9:19 am
Hello everyone, this is my first post. I've lurked this website for a while but I think i hit a roadblock with my current project.
I want to make a full set of extraction tools for this game, a hard task since this is an engine made from the ground up with OpenGL.
First I used the existing bms to open the .rpk archives, and it still works perfectly after years of game updates.
You can find it here: http://aluigi.altervista.org/bms/exanima.bms
This left me with various files, the first issue being that there are no extensions to be found inside the archive, but its usually pretty clear.
Textures were confusing at first, but i realized that they are simple DDS, the header data was simply misplaced. I made a quick script to rebuild it to the correct codecs.
I also took a quick look at the other assets, but I'm not that interested right now as my current focus is on 3D models.
So after studying a bit the 3D model files, I started to work on a blender script to import them. For this thread i will use the model in the attachment called "hammer01", with no exension I'm aware of.
The file starts quite simple. You can see that there is a string that represents the name of the asset. The array of bytes that i selected is where the vertices start, while the hex number 29 is the 41 (42) vertices that make up the mesh.

I already managed to import the vertices into blender with no issue, they are a simple list of floats that contain the XYZ coordinates.
After the lists of vertex i encountered another block, its possible that this is the UV maps, but how the floats are structured seems strange to me and couldn't make much sense of it. However you can still see the number that identifies how long the list is going to be.

I skipped some of the data, as it seems like its just material references I'm not interested in.
What seems to be what identifies the triangles is what truly confuses me, as it starts quite normal, but the numbers go much higher than the max vertex index, and ends with repeated numbers. Even if i just select the data that could create some triangles I cant fill the whole mesh and some triangles look misplaced. I tried different configurations and nothing makes sense to me.

Do you know how the triangles could be configured? Can anything be done? Thank you very much in advance.
I want to make a full set of extraction tools for this game, a hard task since this is an engine made from the ground up with OpenGL.
First I used the existing bms to open the .rpk archives, and it still works perfectly after years of game updates.
You can find it here: http://aluigi.altervista.org/bms/exanima.bms
This left me with various files, the first issue being that there are no extensions to be found inside the archive, but its usually pretty clear.
Textures were confusing at first, but i realized that they are simple DDS, the header data was simply misplaced. I made a quick script to rebuild it to the correct codecs.
I also took a quick look at the other assets, but I'm not that interested right now as my current focus is on 3D models.
So after studying a bit the 3D model files, I started to work on a blender script to import them. For this thread i will use the model in the attachment called "hammer01", with no exension I'm aware of.
The file starts quite simple. You can see that there is a string that represents the name of the asset. The array of bytes that i selected is where the vertices start, while the hex number 29 is the 41 (42) vertices that make up the mesh.

I already managed to import the vertices into blender with no issue, they are a simple list of floats that contain the XYZ coordinates.
After the lists of vertex i encountered another block, its possible that this is the UV maps, but how the floats are structured seems strange to me and couldn't make much sense of it. However you can still see the number that identifies how long the list is going to be.

I skipped some of the data, as it seems like its just material references I'm not interested in.
What seems to be what identifies the triangles is what truly confuses me, as it starts quite normal, but the numbers go much higher than the max vertex index, and ends with repeated numbers. Even if i just select the data that could create some triangles I cant fill the whole mesh and some triangles look misplaced. I tried different configurations and nothing makes sense to me.

Do you know how the triangles could be configured? Can anything be done? Thank you very much in advance.

