IPB

Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

 
 
>

Разбор форматов

, Тема для обсуждения различных форматов игровых файлов

 
 Pavel_Blend
сообщение 09.06.2018, 11:49
Сообщение #1


Ветеран
*****

Группа: Участник
Сообщений: 88
Регистрация: 12.11.2012
Пользователь №: 15200



Предлагаю в этой теме писать вопросы/ответы по поводу устройства различных форматов игровых файлов сталкера. Начиная от форматов 3д моделей и заканчивая спавном.

И мой первый вопрос о формате level.geom:

этот формат хранит вершинные буферы (чанк 0x9). Каждый буфер имеет вершины. Каждая вершина имеет нормали, которые хранятся в четырёх числах длиной в один байт каждая. Вопрос: как преобразовать эти четыре числа в привычные 3 числа типа float?
Перейти в начало страницы
 
 
 СамСебеСекретарш...
сообщение 09.06.2018, 13:29
Сообщение #2


Игроман
**********

Группа: Участник
Сообщений: 948
Регистрация: 05.05.2007
Пользователь №: 6215



Всё уже давно разобрано. Достаточно посмотреть исходники xray-engine-toolset или самой игры, и всё станет ясно.
Каждый компонент нормаля рассчитывается как X * 0.0078431372549019607843137254901961 - 1.0. Где X - прочитанное однобайстное число. Четвёртое не используеся.
Перейти в начало страницы
 
 
 buffy
сообщение 09.06.2018, 13:37
Сообщение #3


Ветеран
*****

Группа: Участник
Сообщений: 75
Регистрация: 05.11.2017
Пользователь №: 28310



Кое-какая информация.
Перейти в начало страницы
 
 
 Pavel_Blend
сообщение 09.06.2018, 13:46
Сообщение #4


Ветеран
*****

Группа: Участник
Сообщений: 88
Регистрация: 12.11.2012
Пользователь №: 15200



Цитата(СамСебеСекретарша @ 09.06.2018, 14:29) *
0.0078431372549019607843137254901961

а что это за число такое? Откуда оно берётся? И в каком файле исходников xray engine toolset находятся данные вычисления?

Кстати, мне это нужно для того, чтобы написать импорт и экспорт уровней в блендере. Как считаете бредовая идея или нет? Это нужно для того, чтобы можно было редактировать уже скомпилированные уровни. Делать косметические изменения (например, поправить юви развёртку) и экспортировать обратно без повторной компиляции. Ну и ещё просто интересно, как устроены форматы уровней. Хочется в блендере посмотреть на уровень со всеми данными (включая карты освещения и вертексное освещение).
Перейти в начало страницы
 
 
 СамСебеСекретарш...
сообщение 09.06.2018, 14:31
Сообщение #5


Игроман
**********

Группа: Участник
Сообщений: 948
Регистрация: 05.05.2007
Пользователь №: 6215



Цитата(Pavel_Blend @ 09.06.2018, 13:46) *
а что это за число такое? Откуда оно берётся? И в каком файле исходников xray engine toolset находятся данные вычисления?

Это число ничто иное как 1 - (-1) / 255.
Берётся оно вот в этой функции:
Код
float xr_reader::r_float_q8(float min, float max) { return r_u8()*((max - min)/255.f) + min; }

При вызове с min = -1 и max = 1.

Само чтение нормалей происходит в файле xr_geom_buf.cxx, функция:
Код
static inline void r_qnormal(xr_reader& r, fvector3& n)
{
    n.x = r.r_float_q8(-1.f, 1.f);
    n.y = r.r_float_q8(-1.f, 1.f);
    n.z = r.r_float_q8(-1.f, 1.f);
    r.advance(sizeof(uint8_t));    // пропускаем лишний байт
}


Цитата(Pavel_Blend @ 09.06.2018, 13:46) *
Как считаете бредовая идея или нет?

Да нет, идея хорошая. Глядишь так вообще весь функционал сталкерского СДК в блендере реализуешь.
Перейти в начало страницы
 
 
 RedMagic
сообщение 09.06.2018, 17:30
Сообщение #6


Высший Игровой Бог
************************

Группа: Супермодератор
Сообщений: 11773
Регистрация: 05.11.2009
Пользователь №: 12882



Цитата(Pavel_Blend @ 09.06.2018, 13:46) *
Кстати, мне это нужно для того, чтобы написать импорт и экспорт уровней в блендере.

Пили уже сразу импорт сцены в Unity. Я недавно писал о такой идее: https://www.gameru.net/forum/index.php?act=...amp;pid=1637552
Настроить все ассеты сталкера (модели и материалы из сталкерского сдк), а потом просто импортнуть их положение в сцене.
С точки зрения моделирования профита мало (модельки все равно надо править в блендере), а вот поиграться в великого геймдизайнера в современном WYSIWYG редакторе - вполне интересно. Плюс можно получить все плюшки современного движка.
Перейти в начало страницы
 
 
 Pavel_Blend
сообщение 19.06.2018, 08:51
Сообщение #7


Ветеран
*****

Группа: Участник
Сообщений: 88
Регистрация: 12.11.2012
Пользователь №: 15200



А для чего нужны файлы level.geomx? Насколько я знаю, они используются только на динамическом освещении. Но для чего именно, не знаю.
Перейти в начало страницы
 
 
 Neo][
сообщение 19.06.2018, 10:42
Сообщение #8


The One
****************

Группа: Участник
Сообщений: 2679
Регистрация: 05.12.2005
Из: Наша Раша
Пользователь №: 2566



Цитата(Pavel_Blend @ 19.06.2018, 10:51) *
А для чего нужны файлы level.geomx

Pavel_Blend, geomx содержит только геометрию. В рендере используется при проходах отрисовки теней, за счёт того, что информации меньше - загрузка данных в буферы - быстрее.
Перейти в начало страницы
 
 
 Yara
сообщение 19.06.2018, 15:25
Сообщение #9


Почти Игрок
**

Группа: Участник
Сообщений: 23
Регистрация: 20.03.2014
Пользователь №: 19526



Видел где-то правленый xrCompressor, там была заметка, что отключено сжатие для level.geomx, недавно глянул описание пакера Oxygen, там отключено для .ogm(ролики). Мне интересно, какие ещё файлы не стоит сжимать? Или может для быстродействия, вообще их держать в распакованной геймдате.
Перейти в начало страницы
 
 
 
 

 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 21.06.2018, 13:07