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

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

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

Перейти к: навигация, поиск
(Версия 3)
Строка 1: Строка 1:
 +
Перед прочтением данной статьи, прочтите эту статью: <br>[[Бинарные файлы]]
 +
 
== Общее описание файла ==
 
== Общее описание файла ==
  
Строка 22: Строка 24:
 
3 - от билда 1569 до "Зова Припяти"
 
3 - от билда 1569 до "Зова Припяти"
  
Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности. В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше. Коэфициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor). А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет). Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный.
+
Версия 3 отличается от 2 тем, как хранится таблица ячеек растительности.
  
Очерёдность блоков в версии 3: 0x1, 0x2, 0x0
+
В 3 версии они сохраняются в более компактном виде из-за чего размер файла level.details меньше.
  
Очерёдность блоков в версии 2: 0x0, 0x1, 0x2
+
Коэфициенты освещения в версии 3: тени от солнца, hemi, свет (Light в Level Editor).
  
== Типы данных ==
+
А в версии 2 коэффициент освещения общий (нет разделения на тени, hemi, свет).
  
Чтобы статья была более компактной, я введу обозначения данных:
+
Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный.
  
{| class="standard"
+
Очерёдность блоков в версии 3: 0x1, 0x2, 0x0
|-
+
 
!Обозначение||Размер (в байтах)||Тип||Диапазон
+
Очерёдность блоков в версии 2: 0x0, 0x1, 0x2
|-
+
|I||4||целое число||0..4294967295
+
|-
+
|i||4||целое число||-2147483648..2147483647
+
|-
+
|H||2||целое число||0..65535
+
|-
+
|}
+
  
 
== Блоки ==
 
== Блоки ==
Строка 85: Строка 79:
 
К каждому слоту может быть привязано до четырёх мешей детальных объектов.
 
К каждому слоту может быть привязано до четырёх мешей детальных объектов.
  
Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это пустой слот).
+
Индекс меша детального объекта может быть в пределах [0 .. 62] (63 - это отсутствие меша).
  
 
Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее:
 
Данные одного слота хранятся в 16 байтах (128 битах), которые хранят в себе следующее:
Строка 153: Строка 147:
 
Нижняя граница равна -200 метров.
 
Нижняя граница равна -200 метров.
  
А допустимый диапазон: -200..644.5 (0.2 * 4095 + 0.1 * 255 - 200)
+
А допустимый диапазон: от -200 метров до 644.5 метров (0.2 * 4095 + 0.1 * 255 - 200)
  
Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 + Дополнительная высота * 0.1 - 200
+
Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 метра + Дополнительная высота * 0.1 метра - 200.0 метров
  
 
[[Участник: Pavel]]
 
[[Участник: Pavel]]
  
 
[[Категория:Форматы файлов]]
 
[[Категория:Форматы файлов]]

Версия 16:06, 18 декабря 2016

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

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

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

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

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

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

2 - билды 1096-1558

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

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

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

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

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

Блоки 0x0, 0x1 одинаковы в обеих версиях, но порядок расположения в файле у них разный.

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

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

Блоки

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

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

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

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

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

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

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

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

Версия 3

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

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

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

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

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

Размер (в битах) Описание
12 Базовая высота слота (это значение нужно умножить на 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 Плотность четвёртого меша (?)

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

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

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

Абсолютная высота слота (т.е. позиция по оси Y) равна: Базовая высота * 0.2 метра + Дополнительная высота * 0.1 метра - 200.0 метров

Участник: Pavel

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