Описание блока объектов из файла "level"

В картах версии 2215 зафиксированы следующие типы объектов:

Код объекта Word(2)
Браш
4
Объединитель брашей и энтитей
260
Энтитя
516
Объединитель растительности
1540
Растительность
1796
Растительность с масштабированием
2820

Скажу парочку слов о каждом из объектов:)

Браш - это самый просто объект, который не имеет большой детализации, а главное - не имеет LOD. К ним, как правило, относятся дома, земля...

Объединитель брашей и энтитей - интересный объект, играющий определённую роль в работе секторов и порталов. Объект просто описывает границы объединяемых им объектов. Может быть составным, т.е. объединять в себе такие же объекты. Принцип, по какому компилятор объединил объекты, нами пока не изучен. Надеюсь, скоро одолеем.

Энтитя - это детализированый объект. К ним относятся все самые красивенькие объекты на карте - трубы, вентили, унитазы и раковины:) Кроме того, у них есть LOD (несколько копий объекта с разной детализацией для различной удалённости от наблюдателя). Хочу заметить, что таким объектом может являться и часть ландшафта.

Объединитель растительности - как правило, объединяет в себе одну законченную композицию: ствол, ветви и листву дерева.

Растительность - к этим объектам относятся цельные стволы деревьев с ветками и листва.

Растительность с масштабированием - иногда на карте можно встретить одинаковую растительность, но разных размеров, делается она при помощи этих объектов. Других отличий о предыдущих у них нет.

Теперь приступим к детальному описанию.

Каждый объект начинается со следующих двух чисел:

Размер
Номер объекта (начиная с нуля)
DWord(4)
Размер объекта (в байтах)
DWord(4)

 

Далее в зависимости от типа объекта могут следовать следующие структурные единицы:

Структурные единицы браша
 
Код блока
Описание геометрии
21
Вспомогательное описание геометрии
22
Основная информация
1

 

Структурные единицы объединителя брашей и энтитей
 
Код блока
Основная информация
1
Список объединённых объектов
10

 

Структурные единицы энтити
 
Код блока
Описание геометрии
21
Описание LOD
6
Вспомогательное описание геометрии
22
Основная информация
1

 

Структурные единицы объединителя растительности
 
Код блока
Основная информация
1
Список объединённых объектов
10
Размещение всех объектов растительности
11

 

Структурные единицы растительности
 
Код блока
Описание геометрии
21
Основная информация
1
Расположение растительности
12

 

Структурные единицы растительности с масштабированием
 
Код блока
Описание геометрии
21
Основная информация
1
Расположение растительности
12
Масштабирование
20

 

 

Основная информация (код блока = 1)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Код объекта
0
Word(4)
Номер текстуры
2
Word(4)
Координата X1
4
Single(4)
Координата Z1

8

Single(4)
Координата Y1
12
Single(4)
Координата X2
16
Single(4)
Координата Z2
20
Single(4)
Координата Y2
24
Single(4)
Координата X3
28
Single(4)
Координата Z3
32
Single(4)
Координата Y3
36
Single(4)
Радиус
40
Single(4)

Координаты X1, Z1 и Y1 определяют первую точку нормали ббокса (коробки, которая описывает объект). X2, Z2, Y2 - координаты второй точки. X3, Z3, Y3 - координаты центра бсферы. Последнее число - радиус бсферы.

 

 

Описание геометрии (код блока = 21)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Номер вершинного блока
0
DWord(4)
Номер первой вершины
4
DWord(4)
Количество вершин
8
DWord(4)
Номер индексного блока

12

DWord(4)
Номер первого индекса
16
DWord(4)
Количество индексов
20
DWord(4)

Думаю, тут всё понятно. Информация подаётся для данных, которые будут взяты из файла "level.geom".

 

 

Описание LOD (код блока = 6)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
???
0
Word(2)
???
2
Word(2)
???
4
Word(2)
???

6

Word(2)
???
8
Word(2)
???
10
Word(2)
???
12
Word(2)
???
14
Word(2)
Количество элементов
16
DWord(4)
Элементы (???)
20
-

 

Элемент:

Смещение
Размер
???
0
DWord(4)
???
4
Word(2)
Номер вершины ???
6
Word(2)

С этим товарищем толком пока не разобрались - ещё предстоит куча экспериментов:)

 

 

Вспомогательное описание геометрии (код блока = 22) - не используется вообще. Блок может быть пропущен.

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Описание геометрии
0
-
Описание LOD
-
-

Описание геометрии и Описание LOD в этом блоке хранятся точно в таком же виде, как и самостоятельно. Функции этого блока пока тоже под большим вопросом.

 

 

Список объединённых объектов (код блока = 10)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Количество объединённых объектов
-
DWord(4)
Номер объекта
0
DWord(4)
...
...
...

Тут всё понятно - номер объекта соответствует номеру какого-нибудь объекта в этом же файле.

 

 

Размещение всех объектов растительности (код блока = 11)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Размещения объектов
0
-

Размещение объекта:

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Координата X
0
Single(4)
Координата Z

4

Single(4)
Координата Y
8
Single(4)
Угол поворота по X
12
Single(4)
Угол поворота по Z
16
Single(4)
Угол поворота по Y
20
Single(4)
???
22
Word(2)
???
24
Word(2)

С последними двумя параметрами пока не разбирались...

 

 

Расположение растительности (код блока = 12)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Размещения объектов ???
0
-

Размещение объекта ???: Ещё не разбирались

 

 

Масштабирование (код блока = 20)

Смещение
Размер
Код блока
-
DWord(4)
Размер блока (в байтах)
-
DWord(4)
Масштаб
0
DWord(4)

Тоже пока не смотрели, поскольку тесно связанно с ббоксом.

Hosted by uCoz