Level.details — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Level.details — различия между версиями

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

Перейти к: навигация, поиск
(Блок 0x0 (заголовок))
(Описание слотов в версии 2)
 
(не показаны 12 промежуточные версии 1 участника)
Строка 1: Строка 1:
 +
Перед прочтением данной статьи, прочтите эту статью: <br>[[Бинарные файлы]]
 +
 
== Общее описание файла ==
 
== Общее описание файла ==
  
Строка 15: Строка 17:
 
|-
 
|-
 
|}
 
|}
 +
 +
Одна ячейка (слот) представляет из себя параллелепипед.
 +
 +
Габариты всех ячеек по осям X и Z одинаковы и равны 2 метра.
 +
 +
Высота слота (габариты параллелепипеда по оси Y) у всех слотов индивидуальна.
 +
 +
[[image:Level_details_slot_in_level_editor.png|Так выглядит слот в Level Editor|left|frame|Так выглядит слот в Level Editor]]
 +
<br clear="both" />
  
 
== Версии формата ==
 
== Версии формата ==
Строка 22: Строка 33:
 
3 - от билда 1569 до "Зова Припяти"
 
3 - от билда 1569 до "Зова Припяти"
  
Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности. В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше. Коэфициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor). А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет). Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный.
+
Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности.
 +
 
 +
В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше.
 +
 
 +
Коэффициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor).
 +
 
 +
А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет).
 +
 
 +
Структура блоков 0x0, 0x1 одинакова в обеих версиях.
 +
 
 +
Порядок расположения блоков в версии 2 и 3 разный.
  
 
Очерёдность блоков в версии 3: 0x1, 0x2, 0x0
 
Очерёдность блоков в версии 3: 0x1, 0x2, 0x0
Строка 28: Строка 49:
 
Очерёдность блоков в версии 2: 0x0, 0x1, 0x2
 
Очерёдность блоков в версии 2: 0x0, 0x1, 0x2
  
== Типы данных ==
 
  
Чтобы статья была более компактной, я введу обозначения данных:
+
При выполнении Build уровня (в LevelEditor), создаётся файл build.details.
  
{| class="standard"
+
Этот файл идентичен level.details, за исключением того, что в нём не просчитаны коэффициенты освещения (их значения равны 0).
|-
+
!Обозначение||Размер (в байтах)||Тип||Диапазон
+
|-
+
|I||4||целое число||0..4294967295
+
|-
+
|i||4||целое число||-2147483648..2147483647
+
|-
+
|H||2||целое число||0..65535
+
|-
+
|}
+
  
 
== Блоки ==
 
== Блоки ==
Строка 67: Строка 77:
 
=== Блок 0x1 (меши) ===
 
=== Блок 0x1 (меши) ===
  
I идентификатор меша
+
Блок состоит из вложенных блоков.
  
I размер данных меша
+
Идентификатор вложенного блока является индексом меша детального объекта.
  
данные меша
+
Данные вложенных блоков - это меш в формате dm.
  
==== Данные меша ====
+
Описание формата dm: <br>[[Формат файлов *.dm]]
 
+
Меши хранятся в формате *.dm
+
 
+
Описание формата dm:
+
<br>[[Формат файлов *.dm]]
+
  
 
=== Блок 0x2 (слоты/таблица ячеек) ===
 
=== Блок 0x2 (слоты/таблица ячеек) ===
Строка 84: Строка 89:
 
==== Версия 3 ====
 
==== Версия 3 ====
  
Один слот хранится в 16 байтах, которые указывают:
+
Блок хранит ячейки (слоты).
  
Базовую высоту слота (это значение нужно умножить на 0.2 метра), хранится в 12 битах
+
Слоты в этом блоке записаны поочерёдно.
  
Дополнительную высоту слота (это значение нужно умножить на 0.1 метра), хранится в 8 битах
+
К каждому слоту может быть привязано до четырёх мешей детальных объектов.
  
Четыре идентификатора меша растительности (по 6 бит каждый)
+
Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это отсутствие меша).
  
Тень от солнца (4 бита)
+
Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее:
  
Hemi освещение (4 бита)
+
{| class="standard"
 +
|-
 +
!Размер (в битах)||Описание
 +
|-
 +
|12||Координата нижней границы слота по оси Y (это значение нужно умножить на 0.2 метра)
 +
|-
 +
|8||Высота слота (это значение нужно умножить на 0.1 метра)
 +
|-
 +
|6||Идентификатор первого меша растительности
 +
|-
 +
|6||Идентификатор второго меша растительности
 +
|-
 +
|6||Идентификатор третьего меша растительности
 +
|-
 +
|6||Идентификатор четвёртого меша растительности
 +
|-
 +
|4||Тень от солнца
 +
|-
 +
|4||Hemi освещение
 +
|-
 +
|4||Красная составляющая статических источников света
 +
|-
 +
|4||Зелёная составляющая статических источников света
 +
|-
 +
|4||Синяя составляющая статических источников света
 +
|-
 +
|4||Плотность первого меша в левом переднем углу слота
 +
|-
 +
|4||Плотность первого меша в правом переднем углу слота
 +
|-
 +
|4||Плотность первого меша в левом заднем углу слота
 +
|-
 +
|4||Плотность первого меша в правом заднем углу слота
 +
|-
 +
|4||Плотность второго меша в левом переднем углу слота
 +
|-
 +
|4||Плотность второго меша в правом переднем углу слота
 +
|-
 +
|4||Плотность второго меша в левом заднем углу слота
 +
|-
 +
|4||Плотность второго меша в правом заднем углу слота
 +
|-
 +
|4||Плотность третьего меша в левом переднем углу слота
 +
|-
 +
|4||Плотность третьего меша в правом переднем углу слота
 +
|-
 +
|4||Плотность третьего меша в левом заднем углу слота
 +
|-
 +
|4||Плотность третьего меша в правом заднем углу слота
 +
|-
 +
|4||Плотность четвёртого меша в левом переднем углу слота
 +
|-
 +
|4||Плотность четвёртого меша в правом переднем углу слота
 +
|-
 +
|4||Плотность четвёртого меша в левом заднем углу слота
 +
|-
 +
|4||Плотность четвёртого меша в правом заднем углу слота
 +
|-
 +
|}
  
Освещение RGB (каждая составляющая цвета по 4 бита)
+
Как видно из таблицы, каждый слот имеет 16 значений плотности.
  
(?) палитра (64 бита)
+
Каждый из четырёх мешей имеет четыре значения плотности (для четырёх углов слота).
  
На положение слотов по оси Y накладываются ограничения. Нижняя граница равна -200 метров. А допустимый диапазон: -200..644.5 (0.2*4095 + 0.1*255 - 200)
+
Значения плотности внутри слота интерполируются от значений плотности углов слота.
 +
 
 +
Обозначим плотности следующим образом:
 +
 
 +
a0 - плотность для левого переднего угла слота
 +
 
 +
a1 - плотность для правого переднего угла слота
 +
 
 +
a2 - плотность для левого заднего угла слота
 +
 
 +
a3 - плотность для правого заднего угла слота
 +
 
 +
Если смотреть на слот сверху, то плотности будут выглядеть так:
 +
 
 +
[[image:Level_details_slot_density_example.jpeg|Плотность мешей, вид слота сверху|left|frame|Плотность мешей, вид слота сверху]]
 +
<br clear="both" />
 +
 
 +
На позицию слотов по оси Y накладываются ограничения.
 +
 
 +
Нижняя граница равна -200 метров.
 +
 
 +
А допустимый диапазон: от -200 метров до 619 метров (0.2 * 4095 - 200).
 +
 
 +
Максимальная высота слота (параллелепипеда) равна: 25.5 (0.1 * 255).
 +
 
 +
Верхняя граница слота равна: нижняя граница + высота слота.
 +
 
 +
==== Версия 2 ====
 +
 
 +
Данные одного слота в версии 2 хранятся в 22 байтах, которые содержат в себе следующее:
 +
 
 +
{| class="standard"
 +
|-
 +
!Тип||Описание
 +
|-
 +
|f||Координата нижней границы слота по оси Y
 +
|-
 +
|f||Координата верхней границы слота по оси Y
 +
|-
 +
|B||Идентификатор первого меша растительности
 +
|-
 +
|H||Плотность первого меша растительности
 +
|-
 +
|B||Идентификатор второго меша растительности
 +
|-
 +
|H||Плотность второго меша растительности
 +
|-
 +
|B||Идентификатор третьего меша растительности
 +
|-
 +
|H||Плотность третьего меша растительности
 +
|-
 +
|B||Идентификатор четвёртого меша растительности
 +
|-
 +
|H||Плотность четвёртого меша растительности
 +
|-
 +
|H||Освещение слота
 +
|-
 +
|}
 +
 
 +
Плотность представляет из себя следующее:
 +
 
 +
{| class="standard"
 +
|-
 +
!Размер в битах||Описание
 +
|-
 +
|4||Плотность в левом переднем углу слота
 +
|-
 +
|4||Плотность в правом переднем углу слота
 +
|-
 +
|4||Плотность в левом заднем углу слота
 +
|-
 +
|4||Плотность в правом заднем углу слота
 +
|-
 +
|}
 +
 
 +
Освещение слота представляет из себя следующее:
 +
 
 +
{| class="standard"
 +
|-
 +
!Размер в битах||Описание
 +
|-
 +
|4||Освещённость в левом переднем углу слота
 +
|-
 +
|4||Освещённость в правом переднем углу слота
 +
|-
 +
|4||Освещённость в левом заднем углу слота
 +
|-
 +
|4||Освещённость в правом заднем углу слота
 +
|-
 +
|}
  
Абсолютная высота слота (т.е. положение по оси Y) равна: баз.*0.2 + доп.*0.1 - 200
+
==Ссылки==
 +
Утилиты так или иначе связанные с импортом\экспортом details:
 +
*[https://github.com/igelbox/blender-xray/releases Blender X-Ray Engine Tools] от '''igelbox'''
  
 
[[Участник: Pavel]]
 
[[Участник: Pavel]]
  
 
[[Категория:Форматы файлов]]
 
[[Категория:Форматы файлов]]

Текущая версия на 20:01, 3 марта 2018

Перед прочтением данной статьи, прочтите эту статью:
Бинарные файлы

Общее описание файла

Содержит информацию о детальных объектах (трава, гайки и сухие листья).

Состоит из трёх RIFF-секций (блоков):

Идентификатор блока Размер (в байтах) Описание
0x0 24 заголовок
0x1 - модели объектов (в формате .dm)
0x2 - таблица ячеек 2x2 метра, задающяя плотность и видовое разнообразие объектов на карте

Одна ячейка (слот) представляет из себя параллелепипед.

Габариты всех ячеек по осям X и Z одинаковы и равны 2 метра.

Высота слота (габариты параллелепипеда по оси Y) у всех слотов индивидуальна.

Так выглядит слот в Level Editor


Версии формата

2 - билды 1096-1558

3 - от билда 1569 до "Зова Припяти"

Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности.

В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше.

Коэффициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor).

А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет).

Структура блоков 0x0, 0x1 одинакова в обеих версиях.

Порядок расположения блоков в версии 2 и 3 разный.

Очерёдность блоков в версии 3: 0x1, 0x2, 0x0

Очерёдность блоков в версии 2: 0x0, 0x1, 0x2


При выполнении Build уровня (в LevelEditor), создаётся файл build.details.

Этот файл идентичен level.details, за исключением того, что в нём не просчитаны коэффициенты освещения (их значения равны 0).

Блоки

Блок 0x0 (заголовок)

Тип Описание
I версия формата
I количество dm моделей в файле
i смещение ячеек таблицы по оси X
i смещение ячеек таблицы по оси Z
I количество ячеек таблицы по оси X
I количество ячеек таблицы по оси Z

Блок 0x1 (меши)

Блок состоит из вложенных блоков.

Идентификатор вложенного блока является индексом меша детального объекта.

Данные вложенных блоков - это меш в формате dm.

Описание формата dm:
Формат файлов *.dm

Блок 0x2 (слоты/таблица ячеек)

Версия 3

Блок хранит ячейки (слоты).

Слоты в этом блоке записаны поочерёдно.

К каждому слоту может быть привязано до четырёх мешей детальных объектов.

Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это отсутствие меша).

Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее:

Размер (в битах) Описание
12 Координата нижней границы слота по оси Y (это значение нужно умножить на 0.2 метра)
8 Высота слота (это значение нужно умножить на 0.1 метра)
6 Идентификатор первого меша растительности
6 Идентификатор второго меша растительности
6 Идентификатор третьего меша растительности
6 Идентификатор четвёртого меша растительности
4 Тень от солнца
4 Hemi освещение
4 Красная составляющая статических источников света
4 Зелёная составляющая статических источников света
4 Синяя составляющая статических источников света
4 Плотность первого меша в левом переднем углу слота
4 Плотность первого меша в правом переднем углу слота
4 Плотность первого меша в левом заднем углу слота
4 Плотность первого меша в правом заднем углу слота
4 Плотность второго меша в левом переднем углу слота
4 Плотность второго меша в правом переднем углу слота
4 Плотность второго меша в левом заднем углу слота
4 Плотность второго меша в правом заднем углу слота
4 Плотность третьего меша в левом переднем углу слота
4 Плотность третьего меша в правом переднем углу слота
4 Плотность третьего меша в левом заднем углу слота
4 Плотность третьего меша в правом заднем углу слота
4 Плотность четвёртого меша в левом переднем углу слота
4 Плотность четвёртого меша в правом переднем углу слота
4 Плотность четвёртого меша в левом заднем углу слота
4 Плотность четвёртого меша в правом заднем углу слота

Как видно из таблицы, каждый слот имеет 16 значений плотности.

Каждый из четырёх мешей имеет четыре значения плотности (для четырёх углов слота).

Значения плотности внутри слота интерполируются от значений плотности углов слота.

Обозначим плотности следующим образом:

a0 - плотность для левого переднего угла слота

a1 - плотность для правого переднего угла слота

a2 - плотность для левого заднего угла слота

a3 - плотность для правого заднего угла слота

Если смотреть на слот сверху, то плотности будут выглядеть так:

Плотность мешей, вид слота сверху


На позицию слотов по оси Y накладываются ограничения.

Нижняя граница равна -200 метров.

А допустимый диапазон: от -200 метров до 619 метров (0.2 * 4095 - 200).

Максимальная высота слота (параллелепипеда) равна: 25.5 (0.1 * 255).

Верхняя граница слота равна: нижняя граница + высота слота.

Версия 2

Данные одного слота в версии 2 хранятся в 22 байтах, которые содержат в себе следующее:

Тип Описание
f Координата нижней границы слота по оси Y
f Координата верхней границы слота по оси Y
B Идентификатор первого меша растительности
H Плотность первого меша растительности
B Идентификатор второго меша растительности
H Плотность второго меша растительности
B Идентификатор третьего меша растительности
H Плотность третьего меша растительности
B Идентификатор четвёртого меша растительности
H Плотность четвёртого меша растительности
H Освещение слота

Плотность представляет из себя следующее:

Размер в битах Описание
4 Плотность в левом переднем углу слота
4 Плотность в правом переднем углу слота
4 Плотность в левом заднем углу слота
4 Плотность в правом заднем углу слота

Освещение слота представляет из себя следующее:

Размер в битах Описание
4 Освещённость в левом переднем углу слота
4 Освещённость в правом переднем углу слота
4 Освещённость в левом заднем углу слота
4 Освещённость в правом заднем углу слота

Ссылки

Утилиты так или иначе связанные с импортом\экспортом details:

Участник: Pavel

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