Обсуждение участника:Excid — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Excid (обсуждение | вклад) |
Excid (обсуждение | вклад) |
||
Строка 75: | Строка 75: | ||
|} | |} | ||
− | ==== Название | + | ==== Название подобъекта — Name (0x1000) ==== |
{| class="standard" | {| class="standard" | ||
|- | |- | ||
Строка 139: | Строка 139: | ||
==== Словарь текстурных координат — UVs map (0x1008) ==== | ==== Словарь текстурных координат — UVs map (0x1008) ==== | ||
− | Логика формирования и назначение этого и блока | + | Логика формирования и назначение этого и блока «Текстурные координаты» доконца не понятна. |
Предположительный вариант представлен ниже. | Предположительный вариант представлен ниже. | ||
{| class="standard" | {| class="standard" | ||
Строка 156: | Строка 156: | ||
|Неизвестно||byte(1)||0x1|| | |Неизвестно||byte(1)||0x1|| | ||
|- | |- | ||
− | |Индекс таблицы текстурных координат||uint(4)||0x0 или 0x1||Возможно, только первый байт содержит эти данные,<br /> остальные выполняют другие функции<br />Встречались | + | |Индекс таблицы текстурных координат||uint(4)||0x0 или 0x1||Возможно, только первый байт содержит эти данные,<br /> остальные выполняют другие функции<br />Встречались «некорректные» данные (например, 0x1 0x90 0xdb 0x11 0x7), но они не использовались |
|- | |- | ||
|Индекс текстурных координаты||uint(4)||0x0 или 0x1||Индекс в таблице, определяемой предыдущим значением. | |Индекс текстурных координаты||uint(4)||0x0 или 0x1||Индекс в таблице, определяемой предыдущим значением. | ||
Строка 184: | Строка 184: | ||
==== Текстурные координаты — UVs (0x1008) ==== | ==== Текстурные координаты — UVs (0x1008) ==== | ||
− | Количество таблиц, которое встречалось в тестовых | + | Количество таблиц, которое встречалось в тестовых файлах — 2. |
{| class="standard" | {| class="standard" | ||
|- | |- | ||
Строка 214: | Строка 214: | ||
|} | |} | ||
+ | |||
+ | === Материалы — Materials (0x0907) === | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Количество материалов r||uint(4)|||| | ||
+ | |- | ||
+ | |Материалы||[r]||||Структура в следующей таблице | ||
+ | |} | ||
+ | |||
+ | <br /> | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Название||строка|||| | ||
+ | |- | ||
+ | |Характеристика для движка||строка||||Например, default | ||
+ | |- | ||
+ | |Характеристика для компилятора||строка||||Например, default | ||
+ | |- | ||
+ | |Характеристика для игры||строка||||Например, default | ||
+ | |- | ||
+ | |Путь к текстуре||строка|||| | ||
+ | |- | ||
+ | |Неизвестно||строка||Texture||Значение Texture используется в блоке <br />Текстурные координаты — UVs (0x1008) | ||
+ | |- | ||
+ | |Флаги||uint(4)||||0x1, если материал двустронний, иначе 0x0 | ||
+ | |- | ||
+ | |Неизвестно||(4)||0x12 0x1 0x0 0x0 0x1 0x0 0x0 0x0|| | ||
+ | |} | ||
+ | |||
+ | |||
+ | === Автор — Author (0x0907) === | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Создатель||строка||||Вид \\компьютер\пользователь (например, \\NAPALI\excid) | ||
+ | |- | ||
+ | |Дата создания||(4)|||| | ||
+ | |- | ||
+ | |Последний модифицирующий||строка||||Вид \\компьютер\пользователь (например, \\NAPALI\excid) | ||
+ | |- | ||
+ | |Дата модификации||(4)|||| | ||
+ | |} | ||
− | + | == Скрипт разбора файла == | |
+ | [[Скрипт разбора файла object]] |
Версия 17:27, 7 июня 2007
Формат разобрал excid
Содержание
- 1 О формате
- 2 Описание структуры
- 3 Структура
- 4 Файл (0x7777)
- 4.1 Неизвестные данные (0x0900)
- 4.2 Пользовательские информация — User Data (0x0912)
- 4.3 Уровень детализации — LOD (0x0925)
- 4.4 Тип объекта — Object Type (0x0903)
- 4.5 Данные о геометрии — Geometry (0x0910)
- 4.5.1 Неизвестные данные (0x1000)
- 4.5.2 Название подобъекта — Name (0x1000)
- 4.5.3 Ограничивающий параллелепипед — Bounding Box (0x1004)
- 4.5.4 Неизвестные данные (0x1002)
- 4.5.5 Неизвестные данные (0x1010)
- 4.5.6 Вершины — Vertices (0x1005)
- 4.5.7 Грани — Faces (0x1006)
- 4.5.8 Группы сглаживания — Smoothing Groups (0x1013)
- 4.5.9 Словарь текстурных координат — UVs map (0x1008)
- 4.5.10 Материалы объекта — Object Materials (0x1009)
- 4.5.11 Текстурные координаты — UVs (0x1008)
- 4.6 Материалы — Materials (0x0907)
- 4.7 Автор — Author (0x0907)
- 5 Скрипт разбора файла
О формате
Формат *.object используется в качестве основного формата хранения моделей на этапе редактирования (включая экспорт из Maya или 3ds Max и хранение моделей до компиляции уровня)
Описание структуры
Формат бинарный. Файл состоит из вложенных друг в друга блоков. Весь файл представляет собой единый блок.
Структура блока
Блок имеет 3 обязательные части:
Часть | Тип(размер) | Подробнее |
---|---|---|
Идентификатор типа блока | (4) | 2 байта идентификатора и 2 нулевых байта |
Размер блока | uint(4) | без учета этих частей — только то, что идет дальше |
Данные | (Размер блока) | Данные могут быть представлены вложенными блоками |
Типы данных
Особое внимание стоит обратить на то, как хранятся строки: они нуль-терминальные, то есть в конце обязательно содержат нулевой байт.
Структура
В заголовке последующих пунктов в скобках содержатся идентификаторы типа блока в шестнадцатиричной форме, при этом байты представлены в обратном порядке (то есть так, как числа задаются в исходниках), поэтому идентификатор 0x0912 в файле будет выглядеть как 09 12 00 00.
Файл (0x7777)
Неизвестные данные (0x0900)
Возможно, это версия.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | (2) | 0x10 0x00 |
Пользовательские информация — User Data (0x0912)
В редакторе Game options > User Data.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Данные | строка | Произвольная строка |
Уровень детализации — LOD (0x0925)
В редакторе LOD > Reference.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Ссылка | строка | Путь к модели, содержащей следующий уровень детализации |
Тип объекта — Object Type (0x0903)
В редакторе Object Type.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Тип | (4) | Значение 0x00 для статической модели (тип Static) |
Данные о геометрии — Geometry (0x0910)
В редакторе Geometry. Все представленные ниже данные описывают 1 подобъект.
Неизвестные данные (0x1000)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | (2) | 0x11 0x00 |
Название подобъекта — Name (0x1000)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Название | строка |
Ограничивающий параллелепипед — Bounding Box (0x1004)
В редакторе Transform > BBox Min/Max
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Минимум | float(4)[3] | Минимальные значения вершин по x, y, z | |
Максимум | float(4)[3] | Максимальные значения вершин по x, y, z |
Неизвестные данные (0x1002)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | (1) | 0x05 |
Неизвестные данные (0x1010)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | (8) | 0x00 | Все нули |
Вершины — Vertices (0x1005)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество вершин n | uint(4) | ||
Координаты | float(4)[n * 3] | Координаты x, y, z для каждой вершины |
Грани — Faces (0x1006)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество граней m | uint(4) | ||
Координаты | uint(4)[m * 6] | Троки пар индекс вершины + индекс текстурной координаты |
Группы сглаживания — Smoothing Groups (0x1013)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Группы | uint(4)[m] | 32-битная маска групп сглаживания для каждой грани |
Словарь текстурных координат — UVs map (0x1008)
Логика формирования и назначение этого и блока «Текстурные координаты» доконца не понятна. Предположительный вариант представлен ниже.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество записей k | uint(4) | ||
Данные | (9)[k] | Предположительная структура в следующей таблице |
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | byte(1) | 0x1 | |
Индекс таблицы текстурных координат | uint(4) | 0x0 или 0x1 | Возможно, только первый байт содержит эти данные, остальные выполняют другие функции Встречались «некорректные» данные (например, 0x1 0x90 0xdb 0x11 0x7), но они не использовались |
Индекс текстурных координаты | uint(4) | 0x0 или 0x1 | Индекс в таблице, определяемой предыдущим значением. |
Материалы объекта — Object Materials (0x1009)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество материалов p | ushort(2) | ||
Материалы | [p] | Cтруктура в следующей таблице |
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Название материала | строка | ||
Количество граней q | uint(4) | Количество граней, имеющих этот материал | |
Индексы граней | uint(4)[q] |
Текстурные координаты — UVs (0x1008)
Количество таблиц, которое встречалось в тестовых файлах — 2.
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество таблиц t | uint(4) | 0x2 | |
Таблицы | [t] | Структура в следующей таблице |
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Неизвестно | строка | Texture | |
Неизвестно | ubyte(1) | 0x2 | Возможно, количество компонентов в текс. координате? |
Номер таблицы | ushort(1) | ||
Количество текстурных координат s | uint(4) | ||
Текстурные координаты | float(4)[s * 2] | Пары значения текстурных координат u и v | |
Неизвестно | uint(4)[s] | Какие-то индексы, не превышающие s | |
Неизвестно (только для второй таблицы) |
uint(4)[s] | Какие-то индексы, не превышающие s, отсорированные по возрастанию |
Материалы — Materials (0x0907)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Количество материалов r | uint(4) | ||
Материалы | [r] | Структура в следующей таблице |
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Название | строка | ||
Характеристика для движка | строка | Например, default | |
Характеристика для компилятора | строка | Например, default | |
Характеристика для игры | строка | Например, default | |
Путь к текстуре | строка | ||
Неизвестно | строка | Texture | Значение Texture используется в блоке Текстурные координаты — UVs (0x1008) |
Флаги | uint(4) | 0x1, если материал двустронний, иначе 0x0 | |
Неизвестно | (4) | 0x12 0x1 0x0 0x0 0x1 0x0 0x0 0x0 |
Автор — Author (0x0907)
Название | Тип(размер) | Значение | Подробнее |
---|---|---|---|
Создатель | строка | Вид \\компьютер\пользователь (например, \\NAPALI\excid) | |
Дата создания | (4) | ||
Последний модифицирующий | строка | Вид \\компьютер\пользователь (например, \\NAPALI\excid) | |
Дата модификации | (4) |