Обсуждение участника:Excid — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Excid (обсуждение | вклад) |
Excid (обсуждение | вклад) |
||
Строка 65: | Строка 65: | ||
=== Данные о геометрии — Geometry (0x0910) === | === Данные о геометрии — Geometry (0x0910) === | ||
В редакторе Geometry. | В редакторе Geometry. | ||
+ | Все представленные ниже данные описывают 1 подобъект. | ||
==== Неизвестные данные (0x1000) ==== | ==== Неизвестные данные (0x1000) ==== | ||
Строка 72: | Строка 73: | ||
|- | |- | ||
|Неизвестно||(2)||0x11 0x00|| | |Неизвестно||(2)||0x11 0x00|| | ||
+ | |} | ||
+ | |||
+ | ==== Название подобъекта - Name (0x1000) ==== | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Название||строка|||| | ||
|} | |} | ||
Строка 129: | Строка 138: | ||
|} | |} | ||
− | ==== Словарь текстурных координат — UVs (0x1008) ==== | + | ==== Словарь текстурных координат — UVs map (0x1008) ==== |
− | Логика формирования и назначение этого и | + | Логика формирования и назначение этого и блока "Текстурные координаты" доконца не понятна. |
Предположительный вариант представлен ниже. | Предположительный вариант представлен ниже. | ||
{| class="standard" | {| class="standard" | ||
Строка 140: | Строка 149: | ||
|Данные||(9)[k]||||Предположительная структура в следующей таблице | |Данные||(9)[k]||||Предположительная структура в следующей таблице | ||
|} | |} | ||
− | + | <br /> | |
{| class="standard" | {| class="standard" | ||
|- | |- | ||
Строка 147: | Строка 156: | ||
|Неизвестно||byte(1)||0x1|| | |Неизвестно||byte(1)||0x1|| | ||
|- | |- | ||
− | |Индекс таблицы текстурных координат||uint(4)||0x0 или 0x1||Возможно, только первый байт содержит эти данные,<br /> остальные выполняют другие функции ( | + | |Индекс таблицы текстурных координат||uint(4)||0x0 или 0x1||Возможно, только первый байт содержит эти данные,<br /> остальные выполняют другие функции<br />Встречались "некорректные" данные (например, 0x1 0x90 0xdb 0x11 0x7), но они не использовались |
+ | |- | ||
|Индекс текстурных координаты||uint(4)||0x0 или 0x1||Индекс в таблице, определяемой предыдущим значением. | |Индекс текстурных координаты||uint(4)||0x0 или 0x1||Индекс в таблице, определяемой предыдущим значением. | ||
|} | |} | ||
+ | ==== Материалы объекта — Object Materials (0x1009) ==== | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Количество материалов p||ushort(2)|||| | ||
+ | |- | ||
+ | |Материалы||[p]||||Cтруктура в следующей таблице | ||
+ | |} | ||
+ | <br /> | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Название материала||строка|||| | ||
+ | |- | ||
+ | |Количество граней q||uint(4)||||Количество граней, имеющих этот материал | ||
+ | |- | ||
+ | |Индексы граней||uint(4)[q]|||| | ||
+ | |} | ||
+ | |||
+ | ==== Текстурные координаты — UVs (0x1008) ==== | ||
+ | Количество таблиц, которое встречалось в тестовых файлах - 2. | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Количество таблиц t||uint(4)||0x2|| | ||
+ | |- | ||
+ | |Таблицы||[t]||||Структура в следующей таблице | ||
+ | |} | ||
+ | |||
+ | <br /> | ||
+ | {| class="standard" | ||
+ | |- | ||
+ | !Название||Тип(размер)||Значение||Подробнее | ||
+ | |- | ||
+ | |Неизвестно||строка||Texture|| | ||
+ | |- | ||
+ | |Неизвестно||ubyte(1)||0x2||Возможно, количество компонентов в текс. координате? | ||
+ | |- | ||
+ | |Номер таблицы||ushort(1)|||| | ||
+ | |- | ||
+ | |Количество текстурных координат s||uint(4)|||| | ||
+ | |- | ||
+ | |Текстурные координаты||float(4)[s * 2]||||Пары значения текстурных координат u и v | ||
+ | |- | ||
+ | |Неизвестно||uint(4)[s]||||Какие-то индексы, не превышающие s | ||
+ | |- | ||
+ | |Неизвестно<br />(только для второй таблицы)||uint(4)[s]||||Какие-то индексы, не превышающие s, отсорированные по возрастанию | ||
+ | |} | ||
<big>Допишу потом</big> | <big>Допишу потом</big> |
Версия 16:50, 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)
О формате
Формат *.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, отсорированные по возрастанию |
Допишу потом