MDL — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Основные данные)
Строка 1: Строка 1:
 
{{stub}}
 
{{stub}}
'''MDL''' – условное обозначение формата (не путайте его с другими MDL, содержащимися например в Gothic или Half-Life2), в которых хранятся откомпилированные данные игровых моделей для [[GTA LCS]], [[GTA VCS]] и [[Manhunt 2]]. Формат MDL жёстко привязан к игровой платформе, т.е. не является кроссплатформенным в отличие от [[DFF]], использовавшегося в предыдущих играх серии GTA до покупки [[RenderWare]] фирмой EA Games.
 
  
 +
<!--->TODO: переделать. Статья никуда не годится. Много информации действительности не соответствует, вместо этого есть много ненужного и лишнего.</!--->
 +
 +
'''MDL''' – внутренный формат моделей (не путайте его с другими <code>"*.mdl"</code>, содержащимися в прочих видеоиграх), используемый в [[GTA LCS]] и [[GTA VCS]]. Данный формат жестко привязан к игровой платформе (PSP/PS2), т.е. не является кроссплатформенным в отличие от [[DFF|<code>*.dff</code>]], использовавшегося в предыдущих играх серии GTA до покупки [[RenderWare]] фирмой EA Games.
 +
 +
Используется в ресурсах, обобщенных расширением <code>[[MDL|*.mdl]]</code> и <code>[[WRLD|*.wrld]]</code>
  
  
Строка 7: Строка 11:
 
[[Изображение:Lcs J-Fox tool.jpg|200px|thumb|right|Скриншот программы J-Fox'a]]
 
[[Изображение:Lcs J-Fox tool.jpg|200px|thumb|right|Скриншот программы J-Fox'a]]
  
PSP-версия MDL была разобрана '''J-Fox''', им же написана программа, читающая структуру MDL с рендерингом геометрии, UV-координат с текстурами из [[CHK]]. Как и остальной многочисленный софт для сториесов, программа от J-Fox не была выпущена.
+
PSP-версия <code>[[MDL|*.mdl]</code> была разобрана '''J-Fox''', им же написана программа, читающая структуру <code>[[MDL|*.mdl]</code> с рендерингом геометрии, UV-координат с текстурами из <code>[[TEX|*.chk]</code>. Как и остальной многочисленный софт для сториесов, программа от J-Fox не была выпущена.
  
PS2-версия MDL разобрана '''AK-73 aka Alex''', им же написан уникальный скрипт к [[3D Studio MAX]] для загрузки любого MDL PS2-версии (поддерживаются [[GTA LCS]], [[GTA VCS]] и [[Manhunt 2]]). Скрипт поддерживает импорт всех составляющих MDL, присутствует совместимость с [[GTA Tools]] для быстрой конверсии MDL в [[DFF]]
+
PS2-версия <code>[[MDL|*.mdl]</code> разобрана '''AK-73 aka Alex''', им же написан уникальный скрипт к [[3D Studio MAX]] для загрузки любого <code>[[MDL|*.mdl]</code> PS2-версии (поддерживается как[[GTA LCS]], так и и [[GTA VCS]]). Скрипт поддерживает импорт всех составляющих <code>[[MDL|*.mdl]</code>, присутствует совместимость с [[GTA Tools]] для быстрой конверсии MDL в [[DFF]]
  
PC-версия MDL никем не разбиралась. Судя по первому впечатлению, Рокстары усложнили формат, сделав его более похожим на форматы движка RAGE. Используется исключительно в [[Manhunt 2]].
 
  
 
== Структура ==
 
== Структура ==
Строка 17: Строка 20:
 
[[Изображение:Tri-Strip.png|200px|thumb|right|Изображение одного тристрипса]]
 
[[Изображение:Tri-Strip.png|200px|thumb|right|Изображение одного тристрипса]]
  
Общее для всех MDL - наличие глобального заголовка и заголовка Атомика. Остальные секции MDL строго специфические для каждой из поддерживаемых платформ - PSP, PS2 и PC.
+
Общее для всех MDL - наличие глобального заголовка и заголовка Атомика. Остальные секции <code>[[MDL|*.mdl]</code> строго специфические для каждой из поддерживаемых платформ - PSP или PS2
  
 
Основные термины:
 
Основные термины:
Строка 26: Строка 29:
  
 
==Глобальный заголовок==
 
==Глобальный заголовок==
 +
{{stub}}
 
''Информация будет добавлена позже...''
 
''Информация будет добавлена позже...''
  
 
==Atomic==
 
==Atomic==
 +
{{stub}}
 
''Информация будет добавлена позже...''
 
''Информация будет добавлена позже...''
  
 
==Clump==
 
==Clump==
 +
{{stub}}
 
''Информация будет добавлена позже...''
 
''Информация будет добавлена позже...''
  
 
==Список материалов==
 
==Список материалов==
 +
{{stub}}
 +
''Информация будет добавлена позже...''
  
 
====MDL-версия====
 
====MDL-версия====
 
''Информация будет добавлена позже...''
 
''Информация будет добавлена позже...''
 +
{{stub}}
  
 
====WRLD-версия====
 
====WRLD-версия====
Содержится исключительно в WRLD и является сжатой по сравнению с MDL-версией для быстрого чтения и экономии памяти консоли. Вместо имён текстур содержит их id (хэши). Заголовок списка геометрии из WRLD читает программа [[GTA Stories WRLD Tool]] - количество материалов в MDL + размер секции в байтах без заголовка. Длина строки списка геометрии = 20 байт. Код строки на условном языке:
+
Содержится исключительно в <code>[[WRLD|*.wrld]]</code> и является сжатой по сравнению с <code>[[MDL|*.mdl]]</code>-версией для быстрого чтения и экономии памяти консоли. Вместо имён текстур содержит их id (хэши). Заголовок списка геометрии из <code>[[WRLD|*.wrld]]</code> - количество материалов в MDL + размер секции в байтах без заголовка. Длина строки списка геометрии = 20 байт. Код строки на условном языке:
  
 
<source lang="scm">id текстуры[2], unknown1[2], множитель для U[2], множитель для V[2], unknown2[2], код оптимизации[10] </source>
 
<source lang="scm">id текстуры[2], unknown1[2], множитель для U[2], множитель для V[2], unknown2[2], код оптимизации[10] </source>
Строка 50: Строка 59:
  
 
====PS2-версия====
 
====PS2-версия====
Вся геометрия модели разбита на тристрипсы (поддержка тристрипсев присутствует и в [[DFF]], начиная и заканчивая [[GTA SA]]).
+
Вся геометрия модели разбита на тристрипсы (поддержка тристрипсев присутствует и в <code>[[ВАА|*.dff]]</code>, начиная и заканчивая [[GTA SA]]).
  
Чтение первого тристрипса в MDL начинается сразу после списка материалов. Началом чтения геометрии тристрипса служит флаг 6С018000. За флагом 2 раза повторяется количество вершинок в тристрипсе. Затем идёт технический сектор 40404020, который необходим для движка (для импорта модели он не важен).
+
Чтение первого тристрипса в <code>[[MDL|*.mdl]</code> начинается сразу после списка материалов. Началом чтения геометрии тристрипса служит флаг 6С018000. За флагом 2 раза повторяется количество вершинок в тристрипсе. Затем идёт технический сектор 40404020, который необходим для движка (для импорта модели он не важен).
  
 
Далее идут собственно блоки, содержащие элементы модели:
 
Далее идут собственно блоки, содержащие элементы модели:
Строка 62: Строка 71:
 
* Блок 76 - '''UV''' - содержит все координаты UV-маппинга в тристрипсе. Одна координата закодирована 1м байтом, вычисляется делением на 255 и умножением на 2 (иногда умножение на 2 не требуется - импортёр должен проверять получившуюся цифру после деления). Размер блока = заголовок блока (4 байта) + (UV (2 байта) * количество вершинок в тристрипсе).
 
* Блок 76 - '''UV''' - содержит все координаты UV-маппинга в тристрипсе. Одна координата закодирована 1м байтом, вычисляется делением на 255 и умножением на 2 (иногда умножение на 2 не требуется - импортёр должен проверять получившуюся цифру после деления). Размер блока = заголовок блока (4 байта) + (UV (2 байта) * количество вершинок в тристрипсе).
  
* Блок 6F - '''Прилайт сториесов''' - содержит RGBA для предварительного освещения вершинки. Используется только в [[GTA LCS]] и [[GTA VCS]]. Вычисляется по хитрой формуле AK-73. Размер блока = заголовок блока (4 байта) + (RGBA (2 байта) * количество вершинок в тристрипсе).
+
* Блок 6F - '''Прилайт GTA Stories''' - содержит RGBA для предварительного освещения вершинки. Используется только в [[GTA LCS]] и [[GTA VCS]]. Вычисляется по хитрой формуле AK-73. Размер блока = заголовок блока (4 байта) + (RGBA (2 байта) * количество вершинок в тристрипсе).
 
+
* Блок 6Е - '''Прилайт манхунт 2''' - содержит RGBA для предварительного освещения вершинки. Используется только в [[Manhunt 2]]. Каждый цвет закодирован одним байтом. Размер блока = заголовок блока (4 байта) + (RGBA (4 байта) * количество вершинок в тристрипсе).
+
  
 
* Блок 6A - '''Нормали''' - содержит все координаты векторов нормалей в трипстрипсе. Одна координата закодирована одним байтом и вычисляется делением на 127. Размер блока = заголовок блока (4 байта) + (XYZ (3 байта) * количество вершинок в тристрипсе).
 
* Блок 6A - '''Нормали''' - содержит все координаты векторов нормалей в трипстрипсе. Одна координата закодирована одним байтом и вычисляется делением на 127. Размер блока = заголовок блока (4 байта) + (XYZ (3 байта) * количество вершинок в тристрипсе).
Строка 71: Строка 78:
  
 
Чтение следующего тристрипса начинается сразу же за флагом окончания тристрипса - 14000006. Общее количество тристрипсев в модели так же записано в клампе.
 
Чтение следующего тристрипса начинается сразу же за флагом окончания тристрипса - 14000006. Общее количество тристрипсев в модели так же записано в клампе.
 
====PC (Windows) версия====
 
''Информация будет добавлена позже...''
 
  
 
{{GTA_Stories-navi}}
 
{{GTA_Stories-navi}}
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]

Версия 16:43, 4 августа 2012


MDL – внутренный формат моделей (не путайте его с другими "*.mdl", содержащимися в прочих видеоиграх), используемый в GTA LCS и GTA VCS. Данный формат жестко привязан к игровой платформе (PSP/PS2), т.е. не является кроссплатформенным в отличие от *.dff, использовавшегося в предыдущих играх серии GTA до покупки RenderWare фирмой EA Games.

Используется в ресурсах, обобщенных расширением *.mdl и *.wrld


Содержание

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

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

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

PS2-версия [[MDL|*.mdl] разобрана AK-73 aka Alex, им же написан уникальный скрипт к 3D Studio MAX для загрузки любого [[MDL|*.mdl] PS2-версии (поддерживается какGTA LCS, так и и GTA VCS). Скрипт поддерживает импорт всех составляющих [[MDL|*.mdl], присутствует совместимость с GTA Tools для быстрой конверсии MDL в DFF


Структура

Изображение одного тристрипса

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

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

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

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

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

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

Atomic

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

Clump

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

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

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

MDL-версия

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

WRLD-версия

Содержится исключительно в *.wrld и является сжатой по сравнению с *.mdl-версией для быстрого чтения и экономии памяти консоли. Вместо имён текстур содержит их id (хэши). Заголовок списка геометрии из *.wrld - количество материалов в MDL + размер секции в байтах без заголовка. Длина строки списка геометрии = 20 байт. Код строки на условном языке:

id текстуры[2], unknown1[2], множитель для U[2], множитель для V[2], unknown2[2], код оптимизации[10]

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

PSP-версия

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

PS2-версия

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

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

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

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

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

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

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

п · о · р
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