MDL

Материал из GTAModding.ru
Перейти к: навигация, поиск

MDL – условное обозначение формата (не путайте его с другими MDL, содержащимися например в Gothic или Half-Life2), в которых хранятся откомпилированные данные игровых моделей для GTA LCS, GTA VCS и Manhunt 2. Формат MDL жёстко привязан к игровой платформе, т.е. не является кроссплатформенным в отличие от DFF, использовавшегося в предыдущих играх серии GTA до покупки RenderWare фирмой EA Games.


Содержание

Основные данные

Скриншот программы J-Fox'a

PSP-версия MDL была разобрана J-Fox, им же написана программа, читающая структуру MDL с рендерингом геометрии, UV-координат с текстурами из CHK. Как и остальной многочисленный софт для сториесов, программа от J-Fox не была выпущена.

PS2-версия MDL разобрана AK-73 aka Alex, им же написан уникальный скрипт к 3D Studio MAX для загрузки любого MDL PS2-версии (поддерживаются GTA LCS, GTA VCS и Manhunt 2). Скрипт поддерживает импорт всех составляющих MDL, присутствует совместимость с GTA Tools для быстрой конверсии MDL в DFF (эта версия MDL importer со всеми исправленными ошибками остаётся закрытой для обычных пользователей, как собственно и остальные программы от LCS Team).

PC-версия MDL никем не разбиралась. Судя по первому впечатлению, Рокстары усложнили формат, сделав его более похожим на форматы RAGE. Используется исключительно в Manhunt 2.


Структура

Изображение одного Tri-Strip

Общее для всех MDL - наличие глобального заголовка и заголовка Атомика. Остальные секции MDL строго специфические для каждой из поддерживаемых платформ - PSP, PS2 и PC.

Основные термины:

Tri-Strips (Тристрипсы) - Это серия связанных треугольников и вершин. Специально используется в играх данной серии для быстрого рендеринга.

Pre-Light - Предварительное освещение модели во время рендеринга модели.

Глобальный заголовок

Информация будет добавлена позже...

Atomic

Информация будет добавлена позже...

Clump

Информация будет добавлена позже...

Список материалов

Информация будет добавлена позже...

Список геометрии

Информация будет добавлена позже...

PSP-версия

Информация будет добавлена позже...

PS2-версия

Вся геометрия модели разбита на тристрипсы (поддержка тристрипсев присутствует и в DFF начиная и заканчивая GTA SA).

Чтение первого тристрипса в MDL начинается сразу после списка материалов. Началом чтения геометрии тристрипса служит флаг 6С018000. За флагом 2 раза повторяется количество вершин в тристрипсе. Затем идёт технический сектор 40404020, который необходим для движка (для импорта модели он не важен).

Далее идут собственно блоки, содержащие элементы модели:

  • Блок 79 - Geo - содержит все координатки вершин в тристрипсе. Одна координата закодирована 2мя байтами и представляет собой обычный множитель на размер ограничивающей модель коробки из клампа. Размер блока = заголовок блока (4 байта) + (XYZ (6 байтов) * количество вершин в тристрипсе).

Блок геометрии заканчивается техническим блоком 50505020, который необходим для движка (для импорта модели он не важен).

  • Блок 76 - UV - содержит все координатки UV-маппинга в тристрипсе. Одна координата закодирована 1м байтом, вычисляется делением на 255 и умножением на 2 (иногда умножение на 2 не требуется - импортёр должен проверять получившуюся цифру после деления). Размер блока = заголовок блока (4 байта) + (UV (2 байта) * количество вершин в тристрипсе).
  • Блок 6F - Pre-Light - содержит RGBA для предварительного освещения вершинки. Вычисляется по хитрой формуле AK-73. Размер блока = заголовок блока (4 байта) + (RGBA (2 байта) * количество вершин в тристрипсе).
  • Блок 6Е - Неизвестно - блок, добавленный в MDL в Manhunt 2. Не разобран. Размер блока = 4 байта * количество вершинок в тристрипсе.
  • Блок 6A - Normals - содержит все координатки векторов нормалей в трипстрипсе. Одна координата закодирована 1м байтом и вычисляется делением на 127. Размер блока = заголовок блока (4 байта) + (XYZ (3 байта) * количество вершин в тристрипсе).
  • Блок 6С - Skin - содержит таблицу весов вершинок для их анимации. Это id косточки (1 байт) + её вес (3 байта). Соответственно, каждая вершинка содержит 4 id (т.е. в анимации она управляется 4 косточками). Размер блока = заголовок блока (4 байта) + ((id_weight (4 байта) * 4) * количество вершин в тристрипсе.

Чтение следующего тристрипса начинается сразу же за флагом окончания тристрипса - 14000006. Общее количество тристрипсев в модели так же записано в Clump'e.

PC (Windows) версия

Информация будет добавлена позже...

п · о · р
Lcs.png GTA Liberty City Stories Vcs.png GTA Vice City Stories
Форматы файлов.anim.at3.cam.chk/.xtx.col2.cut.dtz.ifp.img/.dir.irx.gxt.lvz.mdl.pss.raw/.sdt.scm.vb.wrld
ИнструментыApacheConsole Texture Explorer (PSP/PS2)GTA Stories IMG ToolGTA Stories Texture ViewerGTA Stories Texture Explorer
GTA Stories RAW EditorGXT EditorJPCSPMDL importerMF AudioPCSX2PPSSPPStories WRLD ToolGTA Stories Map Converter v1.0UMD GenYAIE
ТуториалыМоддинг VCS и LCS (PSP/PS2)Аудио на PSPАудио на PS2Спецификация версий PS2Конфигурирование PCSX2
ПК-версииVice City StoriesLiberty City Stories