Librelancer Wiki

Librelancer Wiki

  1. Deformable Meshes
    1. Deformable Model
    2. MultiLevel

Deformable Meshes

While stored in UTF format like most other assets they have a different structure to rigid meshes (VMesh).

Deformable Model

Deformable models are always compound, consist of multiple parts representing bones of skeleton. Skeleton hierarchy is defined by Cmpnd much like rigid compound models are.


Mesh data is stored within MultiLevel entry located in UTF root entry.

Deformable meshes aren’t shareable between files, meshes defined within .dfm file are in local scope.

Single-part rigid meshes also happen to use entry of the same name to store VMeshPart/VMeshRefs for each LOD, however contents of MultiLevel for deformable mesh are different. Luckily you can avoid mixing the two by checking presence of Cmpnd within UTF as well, as rigid model has either Cmpnd or MultiLevel but never both which is the case only for deformable models.

  • Fractions
  • Mesh*
    • Face_groups
      • Count
      • Group*
        • Material_name
        • Tristrip_indices
        • Face_indices
    • Geometry
      • Point_indices
      • UV0_indices
      • UV1_indices
      • Points
      • Point_bone_first
      • Point_bone_count
      • Bone_id_chain
      • Bone_weight_chain
      • Vertex_normals
      • UV0
      • UV1
      • Min_du
      • Max_du
      • Min_dv
      • Max_dv
      • Bone_X_to_U_scale
      • Bone_Y_to_V_scale
      • UV_bone_id
      • UV_vertex_count
      • UV_vertex_id
      • UV_default_list
      • UV_plane_distance
Entry Type Name Description
Fractions float Level of Detail LOD fractions from range defined in INIs, amount of floats indices how many Mesh* entries are expected
Mesh* folder Mesh LOD  
Face_groups folder Face groups  
Count uint32 Face group counter Indicates how many Group* are to follow
Group* folder Face group  
Material_name string Group material Name of material to use for this group of mesh faces
Tristrip_indices uint16 Triangle strip Vertex indices of triangles strip
Face_indices uint16 Triangle array Vertex indices of triangles array
Geometry folder LOD geometry  
Point_indices uint32 ? ?
UV0_indices uint32 ? ?
UV1_indices uint32 ? ?
Points float Vertex coordinates 3x float per vertex
Point_bone_first uint32 ? ?
Point_bone_count uint32 ? ?
Bone_id_chain uint32 ? ?
Bone_weight_chain uint8 ? 4x per bone?
Vertex_normals float Vertex normals 3x float per vertex
UV0 float Map 0 UV UV coordinates (2xfloat)
UV1 float Map 1 UV UV coordinates (2xfloat)
Min_du float Min U Delta Single float
Max_du float Max U Delta Single float
Min_dv float Min V Delta Single float
Max_dv float Max V Delta Single float
Bone_X_to_U_scale float Bone X to Map 1 U Bone X position translation scales to Map 1 U
Bone_Y_to_V_scale float Bone Y to Map 1 V Bone Y position translation scales to Map 1 V
UV_bone_id uint32 Bone ID Bone which affects selected vertices UV
UV_vertex_count uint32 Vertex count UV_vertex_id?
UV_vertex_id uint32 Vertex IDs Vertices affected by bone at UV_bone_id
UV_default_list float UVs Default UV coordinates for vertices in UV_vertex_id?
UV_plane_distance float ? Default 1?