MDL — различия между версиями
Материал из GTAModding.ru
Solom (обсуждение | вклад) (→Основные данные) |
Dageron (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
− | |||
+ | <!--->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-координат с текстурами из [[ | + | 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-версии ( | + | 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]] |
− | |||
== Структура == | == Структура == | ||
Строка 17: | Строка 20: | ||
[[Изображение:Tri-Strip.png|200px|thumb|right|Изображение одного тристрипса]] | [[Изображение:Tri-Strip.png|200px|thumb|right|Изображение одного тристрипса]] | ||
− | Общее для всех MDL - наличие глобального заголовка и заголовка Атомика. Остальные секции MDL строго специфические для каждой из поддерживаемых платформ - PSP | + | Общее для всех 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 (хэши). Заголовок списка геометрии из | + | Содержится исключительно в <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-версия==== | ||
− | Вся геометрия модели разбита на тристрипсы (поддержка тристрипсев присутствует и в [[ | + | Вся геометрия модели разбита на тристрипсы (поддержка тристрипсев присутствует и в <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 - '''Прилайт | + | * Блок 6F - '''Прилайт GTA Stories''' - содержит RGBA для предварительного освещения вершинки. Используется только в [[GTA LCS]] и [[GTA VCS]]. Вычисляется по хитрой формуле AK-73. Размер блока = заголовок блока (4 байта) + (RGBA (2 байта) * количество вершинок в тристрипсе). |
− | + | ||
− | + | ||
* Блок 6A - '''Нормали''' - содержит все координаты векторов нормалей в трипстрипсе. Одна координата закодирована одним байтом и вычисляется делением на 127. Размер блока = заголовок блока (4 байта) + (XYZ (3 байта) * количество вершинок в тристрипсе). | * Блок 6A - '''Нормали''' - содержит все координаты векторов нормалей в трипстрипсе. Одна координата закодирована одним байтом и вычисляется делением на 127. Размер блока = заголовок блока (4 байта) + (XYZ (3 байта) * количество вершинок в тристрипсе). | ||
Строка 71: | Строка 78: | ||
Чтение следующего тристрипса начинается сразу же за флагом окончания тристрипса - 14000006. Общее количество тристрипсев в модели так же записано в клампе. | Чтение следующего тристрипса начинается сразу же за флагом окончания тристрипса - 14000006. Общее количество тристрипсев в модели так же записано в клампе. | ||
− | |||
− | |||
− | |||
{{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
Содержание |
Основные данные
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. Общее количество тристрипсев в модели так же записано в клампе.