Yeah there is some kind of 'hardpointing' in there too, for prop attachments, probably in the 'skeleton' section, thats why all the character accessory props come in male/female flavours, to match the variations in position on the two different skeletal rigs.
EDIT: Just opened a dfm since its been a while since I looked in one, theres a short hard pointsd list in a hardpoints section, for basic prop attachments, a parts list, multi nested but similar to a cmp, the face groups bit off the root is totaly unlike cmp/3db formats, looks like there are embedded mesh data in there in a mad binary format including bone names and bone weights, for kinematics, along with uv data again in some mad binary format, this seems to replace the standard vmesh data of a cmp/3db.
So, the material lib, texture lib, parts, and cmpnd sections are pretty normal, the hardpoints section is NOT normal, the skeleton section is almost empty, and the multilevel section is just insane, like somebody translated part of a vmesh format, might be worth checking the 'multilevel/mesh0/group0/' and geometry sections against the source code for a cmp/3db exporter plugin, seems the group0 group1 etc sections define the material groups just like the ones we use in cmp exports from milkshape, with a material name (not crc checksums or hex codes, plain text), and a list of triangle index numbers to which that material is applied, while the geometry section is an alternate format of vmesh, maybe if an export plugin c coder looked at this, it might actually be possible to write a milkshape exporter for it, so you could export a 'dummy cmp' and then export the dfm mesh format from the dummy and import it into a cloned dfm with utf editor...
- \
- MultiLevel
- Mesh0
- Geometry
- Point_indices
- UV0_indices
- Points
- Point_bone_first
- Point_bone_count
- Bone_id_chain
- Bone_weight_chain
- Vertex_Normals
- UV0
Display More
All those bottom level nodes are full of data, boneweight and bone are just 3 col arrays, for vertex weight mapping and vertex to skeleton bone assignment, that is which 'virtual body part' left thigh, right foot etc a particular vertex is attached to and how much it should deform from its position when the body part is posed.
Point bone count, another array, but who knows what it does, doesnt seem to match the number of verts at all... Points_bone_first, who knows, mad binary stuff..
[EDIT2]: Lightbulb time... array of xyz coordinates for the start points of the 'bones' in the skeleton, that is, center or rotation for each bone, left thigh pivot point, left shin pivot point, left foot pivot point etc., similar to the format used in poser (a rigging system even older than Freelancer) [/edit2]
Points is just a standard vertex list, with xyz coords, so points_bone_count *might* be vertex winding order to define the tris... *might* not, point_indices & uv0_indices looks more like triangle definition lists in fact.
The vertex_normals bit worries me, not sure if milkshape uses vert-normals, or if it only supports surface normals, vert normals allows you to make curved polygons instead of flat ones, a high end (3ds max) kind of mesh smoothing.
And thats just one mesh entry, there are 6, lods? Anyone ever seen characters use lods?
Icky format...