I made a python script in blender to import .mesh files, I'll see if I can get it up somewhere later.
This was only done for non skinned meshes but I guess it should work for skinned as well if stuff such as weights etc is taken into account.
I did not write a script to put it back out in the files again, and while I tried to figure out how the .model files where arranged I noticed that the geomtry scale isn't the same in them.
If you do know how to do stuff in code or write importers here's basically what I came up with (from the top of my head and some scribbles).
4 byte magic 'MESH'
int32 - seems to be 2 for the stuff I checked, could be anythin, version etc.
int32 - number of vertices
Now the following is repeated 15 times (15 vertex attributes?), lets call them block_headers
int32 - component type (2=int32, 3=float) ?
int32 - number of components ? (seems to be accurate)
int32 - byte width ? (seems to be accurate)
<block_data> - see <block_data> description
int32 - number of indices
int32 * num_indices - each triplet defines a triangle and is an index pointing to the vertex
int32 - number of materials
Now the following is repeated num_materials times
int32 - material name length (string length more or less)
<string> - material name (points to a material in assets/materials/default.materials)
int32 - No idea what this represents, seems to be 2 for everything
int32 - index offset
int32 - number of primitives
Last there seems to be some center of bound and min and max bounding info plus some unknown.
float - center x
float - center y
float - center z
float - ? (could be a w component for center I guess)
float - min x
float - min y
float - min z
float - max x
float - max y
float - max z
Depending on the block_header you have a block of bytes (num_vertices * block_byte_width)
So for the first 'vertex attribute' which always seems to be vertices it's 3 floats repeated num_vertices times.
What I could see comparing skinned models with static models this seems to be what goes into them
1. Vertices (3, 3, 12)
2. Normals (3, 3, 12)
3. Tangents (3, 3, 12)
4. Bitangents (3, 3, 12)
6. Texture coordinates (3, 2, 8)
14. Weight indices (2, 4, 16)
15. Weights (3, 4, 16)
So if the header is (0,0,0) you don't have a block and can start to read the next header immediately.
Hope it helps.