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

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

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


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

Репутация:   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  « < 14 15 16 17 18 > »   
Начать новую тему
Ответов
iOrange
сообщение 12.04.2010, 18:37
Сообщение #302
BFG9000 owner

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

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




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


Хм... вряд ли они так мутили - смысл? А Obb легко могут кстати быть Hit-box'ами wink_old.gif
Возможно что компоненты квантовали, и они там в ushort, ubyte. Но тогда где же scale ? Без него теряем точность. Вобщем надо гадать и пробовать.

Add: Хотя из Obb взять то можно скейл, но с какого?

Add2: там же заголовок к каждему мешу идет длиной 0x40 - в нем BBox и BSphere есть, можно из них брать. Вобщем это все мой бред, не обращай внимания smile.gif

Add3: чисто теоретически, т.к. это анимированные меши, то в вершину еще должны входить индексы костей (~4 штуки) [byte] и их веса (~3-4 штуки) [ushort, float ?]

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


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 13.04.2010, 00:05
Сообщение #303


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

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




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


Цитата(iOrange @ 12.04.2010, 19:37) *
Хм... вряд ли они так мутили - смысл?

Я х.з. но похоже на правду. У меня получилась вот такая структура:
Код
typedef struct
{
    short width;
    short depth;
    short height;
    short scale;
    char others[24];
}
VERTEX_FORMAT;

Опытным путем установлено, что для котелка Хантера:
width - меняется в пределах (-298; 296)
height - меняется в пределах (-351; 410 )
depth - меняется в пределах ( 5032; 6078 )
scale - всегда равен четырем.

Сделаем допушение, что размер вьюпорта - 1024х1024, тогда:
x = (width/512) * 4
y = (height/512) * 4
z = [ (depth - 5032)/(6078 - 5032) ] * 4
и будут координатами вершины

Попытаюсь сейчас это проверить.


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


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

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




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




--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
surfer
сообщение 13.04.2010, 12:15
Сообщение #305


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

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




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




Размер вьюпорта при котором пропорции сохраняются (вроде) - 2048х2048


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 13.04.2010, 13:20
Сообщение #306
BFG9000 owner

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

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




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


Прикольно. А они все-таки извращенцы, не пойму какой смысл так хранить геометрию wink_old.gif
Жаль я в командировке, пишу с телефона sad.gif Домой попаду послезавтра, продолжу копать анимацию.


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 13.04.2010, 19:21
Сообщение #307


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

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




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


Кстати, есть предположение, что те 42 объекта, что ты откопал - есть ничто иное как ключевые точки для морфинга лицевой анимации, а 42 байта предшествующие им - время smile.gif


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 14.04.2010, 11:48
Сообщение #308
BFG9000 owner

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

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




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


Цитата(surfer @ 13.04.2010, 19:21) *
Кстати, есть предположение, что те 42 объекта, что ты откопал - есть ничто иное как ключевые точки для морфинга лицевой анимации, а 42 байта предшествующие им - время smile.gif

Да, то что это time-line я тоже думал, ибо подозрительно они по возростанию всегда идут wink.gif


--------------------
Hello worlds!
Перейти в начало страницы
 
iOrange
сообщение 15.04.2010, 09:05
Сообщение #309
BFG9000 owner

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

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




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


Привет surfer.
Ты удивишься, но по-моему я был прав, и они всего лишь квантуют координаты.
По крайней мере для объектов. Т.е. первые 3 short'a в вершине это просто квантованные XYZ.
Тоесть я делаю так
Код
float x = static_cast<float>(verts[i].width) / 32767.0f;
float y = static_cast<float>(verts[i].height) / 32767.0f;
float z = static_cast<float>(verts[i].depth) / 32767.0f;

потом просто скейлю по Obb из заголовка. Вроде получается правильно:


Сообщение отредактировал iOrange - 15.04.2010, 09:06


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 15.04.2010, 16:36
Сообщение #310


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

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




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


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

Осталось только текстурные координаты определить.


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 15.04.2010, 16:48
Сообщение #311
BFG9000 owner

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

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




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


Цитата(surfer @ 15.04.2010, 16:36) *
Осталось только текстурные координаты определить.

Ну я наконец вернулся из запоя командировки, буду ковырять wink.gif Там еще надо веса костей найти.


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 15.04.2010, 20:22
Сообщение #312


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

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




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


Нормали, кстати, можно вполне использовать те, что в максе генерятся:

С текстурными координатами у меня пока не выходит ничего sad.gif


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 16.04.2010, 08:46
Сообщение #313
BFG9000 owner

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

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




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


Ухууу!!
Я наконец нашел текстурные координаты! tongue.gif
Они тоже квантованы, и лежат в конце мэша.
Пока получилось что структура такая:
Код
struct MetroPackedMeshVertex
{
    short x, y, z;
    short scale;
    short skip[10];
    short uv[2];
};
// iOrange - texcoord quantized by 2048 coefficient
uv.x = float(verts[i].uv[0]) / 2048.0f;
uv.y = float(verts[i].uv[1]) / 2048.0f;




Постараюсь сегодня-завтра обновить плагины чтобы можно было импортить и динамические мэши. Сегодня могу не успеть, т.к. всю ночь не спал, ужасно хочу спать, а мне еще сегодня на работу dry.gif

ЗЫ. Надо раскапывать где там у них остались спрятанными веса костей.
ЗЫЫ. Кстати scale похоже ни какой не scale, т.к. он у всех вершин разный, но колеблется от 1 до 4, что может быть количеством действующих на вершину костей.

Сообщение отредактировал iOrange - 16.04.2010, 08:49


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 16.04.2010, 11:24
Сообщение #314


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

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




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


Цитата(iOrange @ 16.04.2010, 09:46) *
Я наконец нашел текстурные координаты!
Они тоже квантованы, и лежат в конце мэша.

Чорд! Я был близок к этому, только делил на 65535 biggrin.gif



--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 16.04.2010, 11:34
Сообщение #315
BFG9000 owner

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

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




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


Цитата(surfer @ 16.04.2010, 11:24) *
только делил на 65535

Нет, исходя из того что это мэши людей, их лиц, то скорее всего они использовали "зеркалирование" координат, а значит unsigned типы автоматом отпадают. Остальное - дело усидчивости smile.gif

ЗЫ. Помоги найти теперь веса костей, т.к. мы уже близки к импорту анимации.


--------------------
Hello worlds!
Перейти в начало страницы
 
surfer
сообщение 16.04.2010, 15:05
Сообщение #316


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

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




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


Я тут сравнил размеры статических моделей с динамическими, получается что все координаты на 2048 делятся и скейлить их потом не надо.

Код
    x = (float)vertices[i].width/2048.0f;
    y = (float)vertices[i].height/2048.0f;
    z = (float)vertices[i].depth/2048.0f;
    u = (float)vertices[i].u/2048.0f;
    v = -(float)vertices[i].v/2048.0f;




Насчет анимаций - я думаю надо в сторону keyframe копать, скелет в другом файле хранится. Вот откопал полезную статью в закладках http://www.gamedev.ru/community/toolcorner...nimation?page=3 раскуриваю smile.gif

Сообщение отредактировал surfer - 16.04.2010, 15:06


--------------------
забанен, нарушение правил, пп. 2.1 и 7.2
Перейти в начало страницы
 
iOrange
сообщение 16.04.2010, 15:21
Сообщение #317
BFG9000 owner

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

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




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


Цитата(surfer @ 16.04.2010, 15:05) *
Насчет анимаций - я думаю надо в сторону keyframe копать, скелет в другом файле хранится.

естественно, я ж об этом и говорю - "надо веса костей найти", а сам скелет отдельно идет.

Цитата(surfer @ 16.04.2010, 15:05) *
Вот откопал полезную статью в закладках http://www.gamedev.ru/community/toolcorner...nimation?page=3 раскуриваю smile.gif

То старая статья - попробуй мою покурить, она поновее, основана на IGame и поэтому универсальнее.
http://sites.google.com/site/orangegraphix...icle_exportanim

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


--------------------
Hello worlds!
Перейти в начало страницы
 
Predador78
сообщение 16.04.2010, 16:53
Сообщение #318


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

Репутация:   135  
Группа: Забанен
Сообщений: 913
Регистрация: 02.11.2008




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


Братцы а тут никак физику ковырнуть нельзя?
Веса добавить телам?
Может кто знает где собака зарыта?
Спасибо.
Перейти в начало страницы
 
Deimos
сообщение 16.04.2010, 18:41
Сообщение #319


Доктор Игровых Наук
*******************

Репутация:   528  
Группа: Забанен
Сообщений: 3591
Награды: 2
Регистрация: 16.09.2009




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


Цитата(Predador78 @ 16.04.2010, 16:53) *
Может кто знает где собака зарыта?

Пока народ занят другим.

Просьба пользоваться нашим хостингом изображений. http://img.gameru.net/

Молодцы, ребята! Так держать.


--------------------
Забанен по собственному желанию
Перейти в начало страницы
 
iOrange
сообщение 16.04.2010, 23:41
Сообщение #320
BFG9000 owner

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

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




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


Цитата(Deimos @ 16.04.2010, 18:41) *
Молодцы, ребята! Так держать.

Спасибо, делаем все что в наших силах (и на сколько хватает свободного времени).

Итак - первая итерация:
добавил в плагин импорта поддержку файлов *.mesh.
Все остальное как и раньше (то есть все сделает за Вас автоматом, при соблюдении условий)



Add:
Пожалуйста, во избежание недоразумений, не пытайтесь открывать файлы *.model из папку dynamic. wink_old.gif

Сообщение отредактировал iOrange - 16.04.2010, 23:43
Прикрепленные файлы
Прикрепленный файл  Metro2033MeshImport_max2010.zip ( 12,02 килобайт ) Кол-во скачиваний: 100
Прикрепленный файл  Metro2033MeshImport_max2009.zip ( 11,9 килобайт ) Кол-во скачиваний: 94
Прикрепленный файл  Metro2033MeshImport_max2008.zip ( 11,9 килобайт ) Кол-во скачиваний: 71
Прикрепленный файл  Metro2033MeshImport_max9.zip ( 11,88 килобайт ) Кол-во скачиваний: 89
Прикрепленный файл  Metro2033MeshImport_max7.zip ( 11,75 килобайт ) Кол-во скачиваний: 71
Прикрепленный файл  Metro2033MeshImport_max9x64.zip ( 12,55 килобайт ) Кол-во скачиваний: 84
 


--------------------
Hello worlds!
Перейти в начало страницы
 
iOrange
сообщение 17.04.2010, 18:43
Сообщение #321
BFG9000 owner

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

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




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


Я похоже полностью разгадал формат вершины. Все кроме загадочного short scale.
Выглядит это где-то так:
Код
struct MetroSkinnedVertex
{
    short x, y, z;            // 6 bytes
    short scale;            // 2 bytes
    dword normal;            // 4 bytes
    dword tangent;            // 4 bytes
    dword binormal;            // 4 bytes
    byte  bones[4];            // 4 bytes
    byte  weights[4];        // 4 bytes
    short uv[2];            // 4 bytes
    // ===============================
                            // 32 bytes
};


Сейчас ковыряю формат скелета. Импорт анимации все ближе wink.gif


--------------------
Hello worlds!
Перейти в начало страницы
 

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

 



Текстовая версия Сейчас: 29.03.2024, 08:15