Level (Версия 4) — S.T.A.L.K.E.R. Inside Wiki

Level (Версия 4)

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Общая информация

Файлы level версии 4 используются в билде 749 в уровне l1_day (единственный уровень в билде). На данный момент конвертер Бардака этот уровень декомпилировать не может. Файл состоит из следующих чанков:

Чанки файла

Идентификатор чанка Данные
0x1 заголовок
0x2 текстуры
0x3 шейдеры
0x4 визуалы
0x5 вершинный буфер
0x6 геометрия для просчёта столкновений
0x7 порталы
0x8 источники света
0xa короны источников света
0xb сектора

Типы данных

Введём обозначения типов данных

Обозначение Тип Диапазон Размер (в байтах)
B Целое число 0 - 255 1
H Целое число 0 - 65535 2
I Целое число 0 - 4294967295 4
f Дробное число - 4

Структура чанка

Данные Тип
Идентификатор чанка 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 индекс шейдера

продолжение следует...

Участник: Pavel



Другие места
LANGUAGE