MDL (GoldSrc): Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Add link to the303's stuff)
Line 3: Line 3:


== Technical ==
== Technical ==
=== Limitations ===
HLMDL has the following limitations per input SMD:
* 1 mesh
** 2048 vertices and vertex normals per mesh
** 4080 triangles per mesh
* 1 animation sequence
** 512 keyframes per sequence
* 128 bones
Additionally, the
* 8 bone controllers
* 4 bone attachments
* 32 meshes across all submodels
* 256 animation sequences.
Textures must:
* Be 8-bit uncompressed [[BMP]] files.
* Have a resolution which is a multiple of 8 (multiples of 16 are preferred).
* Have a resolution which does not exceed 512x512 (soft limit; raised to 1024x1024 in {{sven|4.1}} and other engines like {{fte|4.1}}).
* Have a file name which is not longer than 64 characters (including the {{code|.bmp}} extension).
<br>
{{modernImportant|Older versions of [[StudioMDL]], including the version found in the {{hlsdk|4.1}} on Steam, do not support tiling UVs, clamping them to the edge of the texture. ''This is not a limitation of the HLMDL file format''; the [https://www.the303.org/tutorials/gold_qc.htm#AS Sven Co-Op StudioMDL] can create MDLs compatible with vanilla {{Goldsrc|4.1}} which have tiled UVs. }}
{{tip|To create a model or submodel with more than 4080 tris, split the model into multiple SMD meshes, with a separate {{cmd|$body}} or {{cmd|$bodygroup}} entry for each mesh in the [[QC]] file.
{{modernWarning|'''''<big>Avoid going over 9000 tris!</big>'''''<br>While the HLMDL format can handle over 100K tris, the old OpenGL renderer struggles with such "high-poly" models, even on high-end GPUs.
{{note|Third party games that upgrade the renderer (ex: {{cof}} or {{csnz}}) can handle higher polygon MDLs better. This does '''''not''''' include {{sven|4.1}}, which uses a mostly vanilla renderer.<br>This is obviously not a problem for games on engines newer than GoldSrc that use the HLMDL format, such as {{cloop|4.1}} ({{Unity}}) or {{freecs|4.1}} ({{fte}}). }}
{{modernConfirm|Is this soft limit 9000 total, or 9000 being displayed simultaneously?}}
{{modernConfirm|Can replacement renderers without engine access, such as [[Trinity Engine]], improve performance for higher-poly MDLs?}}
}} }}
{{modernConfirm|Max textures, and max skins?}}
=== Structs ===
{{stub}}
{{stub}}



Revision as of 16:45, 24 August 2023

English (en)Translate (Translate)

MDL (sometimes referred to as Half-Life MDL or HLMDL) is a model format used by GoldSrc GoldSrc to store dynamically lit models which can be animated using skeletal animation. It is a heavily modified version of the Quake MDL format.

Technical

Limitations

HLMDL has the following limitations per input SMD:

  • 1 mesh
    • 2048 vertices and vertex normals per mesh
    • 4080 triangles per mesh
  • 1 animation sequence
    • 512 keyframes per sequence
  • 128 bones

Additionally, the

  • 8 bone controllers
  • 4 bone attachments
  • 32 meshes across all submodels
  • 256 animation sequences.

Textures must:

  • Be 8-bit uncompressed BMP files.
  • Have a resolution which is a multiple of 8 (multiples of 16 are preferred).
  • Have a resolution which does not exceed 512x512 (soft limit; raised to 1024x1024 in Sven Co-op Sven Co-op and other engines like FTE FTE).
  • Have a file name which is not longer than 64 characters (including the .bmp extension).


Icon-Important.pngImportant:Older versions of StudioMDL, including the version found in the Half-Life SDK Half-Life SDK on Steam, do not support tiling UVs, clamping them to the edge of the texture. This is not a limitation of the HLMDL file format; the Sven Co-Op StudioMDL can create MDLs compatible with vanilla GoldSrc GoldSrc which have tiled UVs.
Tip.pngTip:To create a model or submodel with more than 4080 tris, split the model into multiple SMD meshes, with a separate $body or $bodygroup entry for each mesh in the QC file. Template:ModernWarning
Confirm:Max textures, and max skins?

Structs

Stub

This article or section is a stub. You can help by expanding it.

In other engines

Half-Life MDLs are supported by FTE FTE and the Unity Unity game Codename: Loop Codename: Loop.

External links