Описание блока объектов из файла "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".
Смещение |
Размер |
|
Код блока | - |
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) |
Тоже пока не смотрели, поскольку тесно связанно с ббоксом.