Сповіщення
Очистити все

Level (Версія 4)


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 
 
 

Загальна інформація

Файли 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 кількість вершин

Вершини

Структура вершин

Якщо тип дорівнює 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 індекс шейдера

далі буде...


   
Цитата