Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
> Вскрытие ресурсов Метро 2033
Panisher
сообщение 18.03.2010, 10:28
Сообщение #221


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

Репутация:   18  
Группа: Забанен
Сообщений: 28
Регистрация: 22.10.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


ЭкшнШутерПостапокалипсис
93 %
81/100
Разработчик: 4A Games
Дата выхода: 16 марта 2010
Здесь технический разговор между создателями ПО на тему ресурсов игры.

ПО для работы с ресурсами игры

Обсуждение ПО для работы с ресурсами

Мелкие моды и фиксы

Моддинг. Общее обсуждение

Советы и решения

Работа с bump- и normalmaps (от iOrange)
В альфе лежит бамп, а в зеленом канале (если я правильно понял) лежит Gloss-Map (регулирующая силу specular-бликов).
Если Вам нужна normal-map, то бапм легко в нее превратить:
1) Качаем плагин nVidia для фотошопа (тыц)
2) Открываем в фотошопе интересующий бамп (например act\act_bab_body_bump.512.dds)
3) Выделяем все четыре канала (RGB + Alpha)
4) Жмем Filter->NVIDIA Tools->NormalMapFilter...
5) В появившемся окне в разделе Height Source выбираем Alpha Channel
6) Ставим нужный scale (я ставлю 10)
7) Жмем OK
8) Наслаждаемся результатом





Сообщение отредактировал Deimos - 20.04.2010, 17:01


--------------------
забанen по собственному желанию
Перейти в начало страницы
 
28 страниц V  « < 10 11 12 13 14 > »   
Начать новую тему
Ответов
iOrange
сообщение 31.03.2010, 15:15
Сообщение #222
BFG9000 owner

Половина землекопа
**************

Репутация:   247  
Куратор темы
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(surfer @ 31.03.2010, 14:57) *
Вау, внезапно )))


Привет ))

Да, как и говорил исходники будут вечером.
А формат простой - чанк с ID = 9 -> размер файла
чанк с ID = 0 -> пока не понял, просто пропускаю
чанк с ID = 1 -> тоже не понятен, всегда 64 байта, пропускаем
чанк с ID = 2 -> названия материалов, разделенные нулем
чанк с ID = 3 -> вершины (размер чанка, тип вершины (???), кол-во вершин, данные)
чанк с ID = 4 -> индексы (размер чанка, и соббсно данные)

чанк с ID = 9 - только один на файл, остальные могут встречаться много раз, и в перемешку

ну раз пошла такая пъянка - вот исходник моей читалки модели
MetroModelReader.h

Код
#ifndef __MetroModelReader_h__
#define __MetroModelReader_h__

#include <string>

struct MetroModelVertex
{
    Point3    pos;
    union {
        struct { DWORD a, b; };
        struct { float fa, fb; };
    };
    Point3    normal;
};

typedef unsigned short MetroModelIndex;

class CMetroModelReader
{
public:
    CMetroModelReader();
    ~CMetroModelReader();

    int OpenModelFile(const std::string& fileName);
    int MakeMaxMesh(Mesh* mesh);

private:

    void ReadChunk(unsigned int chunkID, unsigned int chunkSize, FILE* file);

    unsigned int        m_VBSize;
    unsigned int        m_IBSize;

    unsigned int        m_NumVerteces;
    unsigned int        m_NumIndeces;

    MetroModelVertex    *m_VBPtr;
    MetroModelIndex        *m_IBPtr;
};

#endif    // __MetroModelReader_h__


MetroModelReader.cpp

Код
#include "Metro2033MeshImport.h"
#include "MetroModelReader.h"


#define METRO_CHUNK_NULL            0x00000000    // iOrange - ????
#define METRO_CHUNK_UNKNOWN            0x00000001    // iOrange - ????
#define METRO_CHUNK_MATERIALS        0x00000002    // iOrange - some materials names
#define METRO_CHUNK_VERTEXDATA        0x00000003    // iOrange - vertex data chunk
#define METRO_CHUNK_INDEXDATA        0x00000004    // iOrange - indexes data chunk

#define METRO_CHUNK_IGNORETHIS        0x00000009    // iOrange - it seems that need to be ignored


CMetroModelReader::CMetroModelReader()
    : m_VBSize(0)
    , m_IBSize(0)
    , m_NumVerteces(0)
    , m_NumIndeces(0)
    , m_VBPtr(NULL)
    , m_IBPtr(NULL)
{
}
CMetroModelReader::~CMetroModelReader()
{
}

int CMetroModelReader::OpenModelFile(const std::string& fileName)
{
    FILE* file = NULL;
    fopen_s(&file, fileName.c_str(), "rb");
    if (!file)
        return FALSE;

    unsigned int chunkID, chunkSize;
    while (!feof(file))
    {
        fread(&chunkID, 4, 1, file);
        fread(&chunkSize, 4, 1, file);

        ReadChunk(chunkID, chunkSize, file);

        if (METRO_CHUNK_INDEXDATA == chunkID)
            break;
    }

    fclose(file);

    return TRUE;
}


void CMetroModelReader::ReadChunk(unsigned int chunkID, unsigned int chunkSize, FILE* file)
{
    switch (chunkID)
    {
        //    iOrange - just ignore these chunks to be ignored
        case METRO_CHUNK_NULL:
        case METRO_CHUNK_IGNORETHIS:
            return;

        case METRO_CHUNK_MATERIALS:
        {
            //std::cout << "Found materials chunk" << std::endl << "\tSize = " << chunkSize << std::endl;
        } break;

        case METRO_CHUNK_VERTEXDATA:
        {
            //std::cout << "Found vertexdata chunk" << std::endl << "\tSize = " << chunkSize << std::endl;

            unsigned int stub0 = 0;
            fread(&stub0, 4, 1, file);
            fread(&m_NumVerteces, 4, 1, file);

            m_VBPtr = new MetroModelVertex[m_NumVerteces];
            fread(m_VBPtr, m_NumVerteces * sizeof(MetroModelVertex), 1, file);
        } return;

        case METRO_CHUNK_INDEXDATA:
        {
            //std::cout << "Found indexdata chunk" << std::endl << "\tSize = " << chunkSize << std::endl;

            fread(&m_NumIndeces, 4, 1, file);

            m_IBPtr = new MetroModelIndex[m_NumIndeces];
            fread(m_IBPtr, m_NumIndeces * sizeof(MetroModelIndex), 1, file);
        } return;

        default:
            //std::cout << "Found unknown chunk id = " << ext::Hex(8) << chunkID << ", size = " << chunkSize << std::endl;
            break;
    }

    fseek(file, chunkSize, SEEK_CUR);
}



Сообщение отредактировал iOrange - 31.03.2010, 15:23


--------------------
Hello worlds!
Перейти в начало страницы
 
f6677
сообщение 31.03.2010, 16:23
Сообщение #223


Новичок
*

Репутация:   4  
Группа: Участник
Сообщений: 6
Регистрация: 31.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Суепр ! iOrange Сделай пожалуйста для 3D max 9

У меня не получается извлечь модели с помощью 3D Ripper DX
Когда я нажимаю на запись то игра сначала подвисает (так и должно быть) но потом вылетает...
А когда я в максе открываю то что программа "сфоткала" , я вижу пустое место.
Все настройки я сделал.
У меня стоит Win7 может из-за этого не работать ?
Перейти в начало страницы
 
[SОC]
сообщение 31.03.2010, 16:29
Сообщение #224


Почти Игроман
*********

Репутация:   395  
Группа: Участник
Сообщений: 684
Награды: 2
Регистрация: 25.01.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


iOrange, bravo7kg.gif
Вы не планируете сделать аналогичный импорт для Maya?


--------------------

...Имен не осталось. Приказано забыть
14/88
Перейти в начало страницы
 
Panisher
сообщение 31.03.2010, 16:31
Сообщение #225


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

Репутация:   18  
Группа: Забанен
Сообщений: 28
Регистрация: 22.10.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


f6677
Вот,качай.

Ещё б для 8-го макса rolleyes.gif


--------------------
забанen по собственному желанию
Перейти в начало страницы
 
Kolmogor
сообщение 31.03.2010, 16:33
Сообщение #226


Опытный Геймер
*******

Репутация:   147  
Группа: Участник
Сообщений: 182
Регистрация: 08.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Давайте меряться списком чанков в моделях smile.gif
У меня такой:
Ид чанка
1 - заголовок, размер 0х40
содержимое:
byte Version;//версия
/// <summary>
/// enum
/// 0 - model_std
/// 1 - model_hierrarhy
/// 2 - model_skeleton
/// 3 - model_skeleton
/// 4 - model_hierrarhy
/// 5 - model_skin
/// 8 - model soft
/// 11 - rparticles__effect
/// 12 - rparticles__system
/// 13 - model_skeleton
/// </summary>
byte Type;//тип модели
UInt16 Index;//какой-то индекс
дальше бокс и сфера из float, в которые вписывается модель


2 - мне кажется это текстуры
string Tex1;
string Tex2;
string Tex3;

3 - вершины
в начале идет UInt32 VertexFormat; , потом собственно массив вершин

4 - индексы

9 - кучка моделей
внутри идут чанки с ИД от 0 до N. А внутри каждого чанка модель, которую надо разбирать сначала smile.gif

11 - Lod1
внутри снова отдельная модель
Также вместо этого чанка, иногда лежит в отдельном файле. В имени файла суффикc _lod1

12 - Lod2
внутри модель
Также вместо этого чанка, иногда лежит в отдельном файле. В имени файла суффикc _lod2

16 - внутри идут строчки подряд, ссылки на отдельные файлы моделей

18 - параметры
string HitFactorRef;//ссылается на string.Format(@"content\scripts\hit_factors_presets_{0}.bin", HitFactorRef)
дальше иногда бывают строчки с типами объектов

20 - ссылка на файл скелета
string SkeletonRef;

24 - вроде скелет, сразу встроенный в модель

25 - несколько строк подряд

26 - внутри одна строка
И если есть, то всегда что-то вроде human_head_speech

29 - внутри строка

31 - внутри строка

Сообщение отредактировал Kolmogor - 31.03.2010, 16:35
Перейти в начало страницы
 
iOrange
сообщение 31.03.2010, 17:29
Сообщение #227
BFG9000 owner

Половина землекопа
**************

Репутация:   247  
Куратор темы
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Привет всем smile.gif

1 - давайте на "ты"
2 - тот плагин что я выложил он ооочень базовый

теперь имея очень полезную инфу от Kolmogor надеюсь в течении суток заклепать более-менее полноценный плагин для статики.

итак список "максов" - 3DSMax 2009, 3DSMax 9, 3DSMax 8 - все? ок, скачаю остальные и соберу под них.
ОСК - под майку никогда не писал, но думаю смогу. Вам под какую версию майки?

В планах:
1 - Экспорт статики в формат Metro2033
2 - Импорт анимации. Kolmogor подсказал где скелет, осталось найти их анимационные треки и веса для вершин - и можно приступать к импорту анимации.
3 - Экспорт анимации в формат Metro2033

PS. Kolmogor - а где добыл все это добро? А вообще ты молодец, спасибо за инфу!
/// <summary>
/// enum
/// 0 - model_std
/// 1 - model_hierrarhy
/// 2 - model_skeleton
/// 3 - model_skeleton
/// 4 - model_hierrarhy
/// 5 - model_skin
/// 8 - model soft
/// 11 - rparticles__effect
/// 12 - rparticles__system
/// 13 - model_skeleton
/// </summary>

Сообщение отредактировал iOrange - 31.03.2010, 17:48


--------------------
Hello worlds!
Перейти в начало страницы
 
[SОC]
сообщение 31.03.2010, 17:45
Сообщение #228


Почти Игроман
*********

Репутация:   395  
Группа: Участник
Сообщений: 684
Награды: 2
Регистрация: 25.01.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


iOrange,
Планы впечатляют.
Я использую Maya 8.5.


--------------------

...Имен не осталось. Приказано забыть
14/88
Перейти в начало страницы
 
VEN0M
сообщение 31.03.2010, 18:00
Сообщение #229


Опытный Игрок
****

Репутация:   37  
Группа: Участник
Сообщений: 59
Регистрация: 31.12.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
Привет всем smile.gif

здаров smile.gif
Цитата
так список "максов" - 3DSMax 2009, 3DSMax 9, 3DSMax 8

ну из максов можно ещё на десятый добить, ну а на версии раньше восьмой делать бессмысленно smile.gif
Перейти в начало страницы
 
kutuzvden
сообщение 31.03.2010, 18:05
Сообщение #230


грандмастер бит
******************

Репутация:   352  
Группа: Участник
Сообщений: 3274
Награды: 5
Регистрация: 18.02.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


На 2008 забабахай


--------------------
Перейти в начало страницы
 
surfer
сообщение 31.03.2010, 21:47
Сообщение #231


Почти Игроман
*********

Репутация:   70  
Группа: Забанен
Сообщений: 631
Регистрация: 25.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Похвастаюсь и я своим плагином )))

Жмур полностью




У некоторых элементов жмура вершины индексируются в обратном порядке, из-за чего поверхность выворачивается наизнанку, а у некоторых норм. Как с этим бороться?


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
Kolmogor
сообщение 31.03.2010, 23:35
Сообщение #232


Опытный Геймер
*******

Репутация:   147  
Группа: Участник
Сообщений: 182
Регистрация: 08.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


1 апреля наступило smile.gif
вот содержимое scripts.bin http://webfile.ru/4397762
с именами файлов только пока проблема smile.gif
Перейти в начало страницы
 
surfer
сообщение 31.03.2010, 23:39
Сообщение #233


Почти Игроман
*********

Репутация:   70  
Группа: Забанен
Сообщений: 631
Регистрация: 25.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Kolmogor @ 01.04.2010, 00:35) *
вот содержимое scripts.bin http://webfile.ru/4397762

Ого!


Наверное это LOD'ы были =\


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
Kolmogor
сообщение 31.03.2010, 23:56
Сообщение #234


Опытный Геймер
*******

Репутация:   147  
Группа: Участник
Сообщений: 182
Регистрация: 08.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


неее, он состоит из чанков, у которых ИД это СRС32 от имени файла
какие-то имена файлов нашлись, а остальные нет smile.gif
Перейти в начало страницы
 
surfer
сообщение 01.04.2010, 00:18
Сообщение #235


Почти Игроман
*********

Репутация:   70  
Группа: Забанен
Сообщений: 631
Регистрация: 25.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Kolmogor, понятно. smile.gif
Я про модель, у лодов полики почему-то в обратную сторону развернуты, на первом скрине они есть, на втором удалены.


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
surfer
сообщение 01.04.2010, 01:11
Сообщение #236


Почти Игроман
*********

Репутация:   70  
Группа: Забанен
Сообщений: 631
Регистрация: 25.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Блин, до меня доехало что это такое ))) Это невидимые в игре элементы на трупе, при наведении на которые прицела, можно снимать аптечки всякие, патроны с трупа, а полигоны внутрь смотрят, чтобы их не видно было в игре ))


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
HikeR
сообщение 01.04.2010, 02:51
Сообщение #237


Магистр Игры
****************

Репутация:   270  
Группа: Участник
Сообщений: 2620
Награды: 4
Регистрация: 26.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Kolmogor @ 01.04.2010, 00:35) *
вот содержимое scripts.bin ... с именами файлов только пока проблема

форматом не поделишься? может и с именами поможем чем-нить.

а вобще получается, что конфиги у нас открытые, а скрипты компилированные, и все заявления разрабов что они использовали Lua только при разработке (мол движок с Lua-скриптами будет сильно жручий и неподъемный) - мягко говоря неправда.
в сталкере скрипты компилировались перед запуском, здесь же этот этап пропущен, но особой разницы нет.

да, похоже наступает эра "Real Weapon Сharacteristics" модов ;) правда предсказанный мной ранее "Real Weapon Sound" так до сих пор и не появился, поэтому может я ошибаюсь ;)
Перейти в начало страницы
 
surfer
сообщение 01.04.2010, 03:24
Сообщение #238


Почти Игроман
*********

Репутация:   70  
Группа: Забанен
Сообщений: 631
Регистрация: 25.11.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


HikeR, это вероятно в целях экономии памяти сделано, разного рода компиляторы требовательны к памяти, а разработчики игру в память х-ящика старались уплотнить.

З.Ы. Вот после этого я консольщиков еще больше не люблю. dry.gif


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
Veresk
сообщение 01.04.2010, 06:14
Сообщение #239


Почти Мастер
***********

Репутация:   250  
Группа: Забанен
Сообщений: 1131
Награды: 1
Регистрация: 25.01.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


surfer, похоже что чёрное на твоей модели, это часть (верхний слой) модели с прозрачной текстурой (кровь в игре).


т.е. удалять этот слой при импорте нельзя! (это я так, на всякий случай)

Цитата(HikeR @ 01.04.2010, 02:51) *
да, похоже наступает эра "Real Weapon Сharacteristics" модов wink.gif правда предсказанный мной ранее "Real Weapon Sound" так до сих пор и не появился, поэтому может я ошибаюсь wink.gif

а обратный процесс работает (запаковки в бин) или конфиги будут прям напрямую подхватываться?
думаю просто, что весь интузиазм по модингу метра собрался на этом сайте laugh.gif По большому счёту модить линейную паруразпроходную игру не особо интересно


--------------------
До каких пор людей, по крохам собиравших державу и беспощадно каравших её врагов, мы будем обзывать палачами, а индивидов, разваливших страну и пустивших на ветер труды целых поколений, именовать реформаторами? (Ф.М. Достоевский)
Прочитай сам, сообщи другому! Россия в цифрах ч.1 Россия в цифрах ч.2

Убей салоедного имперца - спаси триединство: Белоруссия, Россия, Украина
Перейти в начало страницы
 
iOrange
сообщение 01.04.2010, 08:49
Сообщение #240
BFG9000 owner

Половина землекопа
**************

Репутация:   247  
Куратор темы
Сообщений: 1813
Награды: 3
Регистрация: 30.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


дописал плагин - теперь правильно импортит статику.

Картина Репина "Труп смотрит телевизор" ))


Плагин собран под:
3DS Max 2010 32-bit
3DS Max 2009 32-bit
3DS Max 2008 32-bit
3DS Max 9 32-bit

надеюсь никого не забыл

ЗЫ. Под майку работаю, надеюсь скоро будет


Прикрепленные файлы
Прикрепленный файл  Metro2033MeshImport_max2010.zip ( 9,34 килобайт ) Кол-во скачиваний: 117
Прикрепленный файл  Metro2033MeshImport_max2009.zip ( 9,24 килобайт ) Кол-во скачиваний: 98
Прикрепленный файл  Metro2033MeshImport_max2008.zip ( 9,24 килобайт ) Кол-во скачиваний: 83
Прикрепленный файл  Metro2033MeshImport_max9.zip ( 9,24 килобайт ) Кол-во скачиваний: 101
 


--------------------
Hello worlds!
Перейти в начало страницы
 
Kolmogor
сообщение 01.04.2010, 09:34
Сообщение #241


Опытный Геймер
*******

Репутация:   147  
Группа: Участник
Сообщений: 182
Регистрация: 08.09.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(HikeR @ 01.04.2010, 03:51) *
а вобще получается, что конфиги у нас открытые, а скрипты компилированные, и все заявления разрабов что они использовали Lua только при разработке (мол движок с Lua-скриптами будет сильно жручий и неподъемный) - мягко говоря неправда.

скриптов в ресурсах по-моему вообще нет, так что слова "про ЛУА только для разработки" наоборот похожи на правду
Формат scripts.bin простой. В нем последовательно идут чанки - файлы конфигов. Ид чанка - это CRC32 от имени файла конфига
Внутри чанка первый байт - аттрибуты архива, битовое поле.
В scripts.bin встречаются следующие маски:
enum
{
ATTR_EDITOR = 1,///значит что в конфиге будут указываться название и тип параметров
ATTR_UNKNOWN = 2,///встречается вроде только в одном конфиге language_type.bin
ATTR_DICTIONARY = 4,///Строки вынесены в отдельный словарь и в конфиге вместо строки указывается индекс строки в словаре
///в конфиге тогда создаются 2 чанка: чанк 1 - в нем конфиг, чанк 2 - словарь
///формат чанка 2: количество строк в словаре, потом сами строчки
};
Большинство файлов имеет аттрибуты ATTR_EDITOR | ATTR_DICTIONARY. Они и лежат разобранные в архиве smile.gif
в конфигах с этими аттрибутами последовательно уложены структуры:
struct
{
int idxName;//индекс названия параметра
int idxType;//индекс названия типа
//значение параметра - зависит от типа
}
Также иногда встречаются секции. Их я определял по тому что у очередного поля индекс названия выходил за границы словаря. Тогда считал это секцией. Секции представлены ввиде чанков, внутри которых уложены параметры. Ид чанка - CRC32 от имени секции. в начале секции один байт - аттрибуты

ну и кстати smile.gif есть разобранный textures.bin

Сообщение отредактировал Deimos - 20.04.2010, 07:33
Перейти в начало страницы
 

28 страниц V  « < 10 11 12 13 14 > » 
Ответить в данную темуНачать новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25.04.2024, 03:38