Level (Версия 4)
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
- 1 Общая информация
- 2 Чанки файла
- 3 Типы данных
- 4 Структура чанка
- 5 Заголовок
- 6 Текстуры
- 7 Шейдеры
- 8 Визуалы
- 9 Данные визуала
- 10 Тип визуала
- 11 Шейдер и текстура
- 12 Ограничивающий параллелепипед
- 13 Индексы треугольников
- 14 Информация о вершинах
- 15 Центр и радиус
- 16 Неизвестный чанк
- 17 Вершинные буфера
- 18 Структура вершинного буфера
- 19 Структура вершин
- 20 Геометрия для просчёта столкновений
- 21 Структура треугольников
- 22 Порталы
- 23 Источники света
- 24 Короны источников света
Общая информация
Файлы level версии 4 используются в билде 749 в уровне l1_day (единственный уровень в билде). На данный момент конвертер Бардака этот уровень декомпилировать не может. Файл состоит из следующих чанков:
Чанки файла
Идентификатор чанка | Данные |
---|---|
0x1 | заголовок |
0x2 | текстуры |
0x3 | шейдеры |
0x4 | визуалы |
0x5 | вершинный буфер |
0x6 | геометрия для просчёта столкновений |
0x7 | порталы |
0x8 | источники света |
0xa | короны источников света |
0xb | сектора |
Типы данных
Введём обозначения типов данных
Обозначение | Тип | Диапазон |
---|---|---|
B | Целое число | 0 - 255 |
H | Целое число | 0 - 65535 |
I | Целое число | 0 - 4294967295 |
f | Дробное число | - |
Структура чанка
Данные | Тип |
---|---|
Идентификатор чанка | H |
Сжатие | H |
Размер данных чанка | I |
Данные чанка | - |
Если сжатие установлено в 0x0000, то чанк не сжат, а если установлено в 0x8000 то чанк сжат по методу Хафмана. Для декомпресии сжатых чанков можно использовать программу из xray_re_tools (trunk\garbage\lzhuf\lzhuf.c)
Заголовок
I версия формата (в данном случае равняется 4)
Далее идёт строка длинной в 124 байта, которая является описанием уровня
Текстуры
I количество текстур
Далее идут сами текстуры, которые представлены в виде строк, например: LMAP:L#1,STD:Bricks1\x00
Каждая текстура заканчивается нулевым байтом.
Шейдеры
I количество шейдеров
Далее идут шейдеры, которые представлены в виде строк.
Визуалы
I идентификатор визуала
I размер визуала (в байтах)
Данные визуала
Данные визуала
Данные визуала представлены чанками
Идентификатор чанка | Данные |
---|---|
0x1 | Тип визуала |
0x3 | Шейдер и текстура |
0x6 | Ограничивающий параллелепипед |
0x8 | Индексы треугольников |
0xb | Информация о вершинах |
0xс | Центр и радиус |
0xd | Неизвестный чанк |
Тип визуала
I тип (может быть 0x102 или 0x1e0002 или 0x3e0002)
Шейдер и текстура
I идентификатор шейдера
I идентификатор текстуры
Ограничивающий параллелепипед
3f минимальная граница
3f максимальная граница
Этот чанк содержит две вершины, которые имеют три координаты (X, Y, Z) типа f, и представяют собой вершины диагонали ограничивающего параллелепипеда.
Индексы треугольников
I количество индексов
H индекс * количество индексов
Информация о вершинах
I индекс вершинного буфера из которого берутся вершины
I индекс базовой вершины (это та вершина из буфера, с которой начинается отсчёт индексов треугольников для данного визуала)
I количество треугольников визуала
Центр и радиус
3f центр визуала
f радиус описываюшей сферы визуала
Неизвестный чанк
I количество визуалов
I идентификаторы визуалов * количество визуалов
Вершинные буфера
I количество вершинных буферов
Далее идут вершинные буфера
Структура вершинного буфера
I тип буфера
I количество вершин
Вершины
Структура вершин
Если тип равен 0x212:
3f позиция в пространстве (три координаты X, Y, Z)
3f нормаль вершины
2f юви координаты для карт освещения
2f юви координаты для диффузной карты
Если тип равен 0x152:
3f позиция в пространстве (три координаты X, Y, Z)
3f нормаль вершины
4B цвет вертексного освещения (R, G, B, A)
2f юви координаты для диффузной карты
Геометрия для просчёта столкновений
I версия формата (в данном случае 2)
I количество вершин
I количество треугольников
6f диагональ ограничивающего параллелепипеда
3f вершина (координаты X, Y, Z) * количество вершин
треугольники
Структура треугольников
3I 3 индекса вершин, по которым строится данных треугольник
14B неизвестные 14 байт
H идентификатор сектора, в котором находится треугольник
I идентификатор материала
Порталы
Данный чанк содержит информацию о порталах, которые представляют из себя полигон из 6 вершин. Один портал хранится в 80 байтах. Количество порталов равно размер чанка / 80.
Ниже описан один портал:
H передний сектор
H задний сектор
3f координаты X, Y, Z для первой вершины
3f координаты X, Y, Z для второй вершины
3f координаты X, Y, Z для третей вершины
3f координаты X, Y, Z для четвёртой вершины
3f координаты X, Y, Z для пятой вершины
3f координаты X, Y, Z для шестой вершины
Источники света
Количество источников света равно размер чанка / 124.
Ниже описан один источник света:
I тип источника света (0x1 - point, 0x2 - spot, 0x3 - directional)
4f диффузный цвет
4f бликовый цвет
4f эмбиент цвет
3f позиция
3f направление
f радиус (range)
f falloff
f attenuation0
f attenuation1
f attenuation2
f theta
f phi
20B неизвестные 20 байт
Короны источников света
Или glows. Количество glow равно размер чанка / 24.
Ниже описан 1 glow:
3f позиция
f радиус
I индекс текстуры
I индекс шейдера
продолжение следует...