Вскрытие ресурсов Метро 2033 |
Здравствуйте, гость ( Авторизация | Регистрация )
Вскрытие ресурсов Метро 2033 |
18.03.2010, 10:28
Сообщение
#301
|
|
Почти Игрок Репутация: 18 Группа: Забанен Сообщений: 28 Регистрация: 22.10.2009 |
ПО для работы с ресурсами игры Обсуждение ПО для работы с ресурсами Мелкие моды и фиксы Моддинг. Общее обсуждение Советы и решения Работа с 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 по собственному желанию
|
 
|
|
|
|
12.04.2010, 18:37
Сообщение
#302
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Хм... вряд ли они так мутили - смысл? А Obb легко могут кстати быть Hit-box'ами
Возможно что компоненты квантовали, и они там в ushort, ubyte. Но тогда где же scale ? Без него теряем точность. Вобщем надо гадать и пробовать. Add: Хотя из Obb взять то можно скейл, но с какого? Add2: там же заголовок к каждему мешу идет длиной 0x40 - в нем BBox и BSphere есть, можно из них брать. Вобщем это все мой бред, не обращай внимания Add3: чисто теоретически, т.к. это анимированные меши, то в вершину еще должны входить индексы костей (~4 штуки) [byte] и их веса (~3-4 штуки) [ushort, float ?] Сообщение отредактировал iOrange - 12.04.2010, 18:48 -------------------- Hello worlds!
|
 
|
|
13.04.2010, 00:05
Сообщение
#303
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
Хм... вряд ли они так мутили - смысл? Я х.з. но похоже на правду. У меня получилась вот такая структура: Код 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
|
 
|
|
13.04.2010, 11:30
Сообщение
#304
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
-------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
13.04.2010, 12:15
Сообщение
#305
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
-------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
13.04.2010, 13:20
Сообщение
#306
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Прикольно. А они все-таки извращенцы, не пойму какой смысл так хранить геометрию
Жаль я в командировке, пишу с телефона Домой попаду послезавтра, продолжу копать анимацию. -------------------- Hello worlds!
|
 
|
|
13.04.2010, 19:21
Сообщение
#307
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
Кстати, есть предположение, что те 42 объекта, что ты откопал - есть ничто иное как ключевые точки для морфинга лицевой анимации, а 42 байта предшествующие им - время
-------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
14.04.2010, 11:48
Сообщение
#308
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Кстати, есть предположение, что те 42 объекта, что ты откопал - есть ничто иное как ключевые точки для морфинга лицевой анимации, а 42 байта предшествующие им - время Да, то что это time-line я тоже думал, ибо подозрительно они по возростанию всегда идут -------------------- Hello worlds!
|
 
|
|
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!
|
 
|
|
15.04.2010, 16:36
Сообщение
#310
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
Да, похоже на то, хотя я не удивлен - принцип тот же, просто значения ширины, глубины и высоты делятся на другое число, оно в принципе может быть любым, это только на масштаб влияет.
Осталось только текстурные координаты определить. -------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
15.04.2010, 16:48
Сообщение
#311
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Осталось только текстурные координаты определить. Ну я наконец вернулся из -------------------- Hello worlds!
|
 
|
|
15.04.2010, 20:22
Сообщение
#312
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
Нормали, кстати, можно вполне использовать те, что в максе генерятся:
С текстурными координатами у меня пока не выходит ничего -------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
16.04.2010, 08:46
Сообщение
#313
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Ухууу!!
Я наконец нашел текстурные координаты! Они тоже квантованы, и лежат в конце мэша. Пока получилось что структура такая: Код 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; Постараюсь сегодня-завтра обновить плагины чтобы можно было импортить и динамические мэши. Сегодня могу не успеть, т.к. всю ночь не спал, ужасно хочу спать, а мне еще сегодня на работу ЗЫ. Надо раскапывать где там у них остались спрятанными веса костей. ЗЫЫ. Кстати scale похоже ни какой не scale, т.к. он у всех вершин разный, но колеблется от 1 до 4, что может быть количеством действующих на вершину костей. Сообщение отредактировал iOrange - 16.04.2010, 08:49 -------------------- Hello worlds!
|
 
|
|
16.04.2010, 11:24
Сообщение
#314
|
|
Почти Игроман Репутация: 70 Группа: Забанен Сообщений: 631 Регистрация: 25.11.2009 |
Я наконец нашел текстурные координаты! Они тоже квантованы, и лежат в конце мэша. Чорд! Я был близок к этому, только делил на 65535 -------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
16.04.2010, 11:34
Сообщение
#315
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
только делил на 65535 Нет, исходя из того что это мэши людей, их лиц, то скорее всего они использовали "зеркалирование" координат, а значит unsigned типы автоматом отпадают. Остальное - дело усидчивости ЗЫ. Помоги найти теперь веса костей, т.к. мы уже близки к импорту анимации. -------------------- Hello worlds!
|
 
|
|
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 раскуриваю Сообщение отредактировал surfer - 16.04.2010, 15:06 -------------------- забанен, нарушение правил, пп. 2.1 и 7.2
|
 
|
|
16.04.2010, 15:21
Сообщение
#317
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Насчет анимаций - я думаю надо в сторону keyframe копать, скелет в другом файле хранится. естественно, я ж об этом и говорю - "надо веса костей найти", а сам скелет отдельно идет. Вот откопал полезную статью в закладках http://www.gamedev.ru/community/toolcorner...nimation?page=3 раскуриваю То старая статья - попробуй мою покурить, она поновее, основана на IGame и поэтому универсальнее. http://sites.google.com/site/orangegraphix...icle_exportanim Сообщение отредактировал iOrange - 16.04.2010, 15:22 -------------------- Hello worlds!
|
 
|
|
16.04.2010, 16:53
Сообщение
#318
|
|
Игроман Репутация: 135 Группа: Забанен Сообщений: 913 Регистрация: 02.11.2008 |
Братцы а тут никак физику ковырнуть нельзя?
Веса добавить телам? Может кто знает где собака зарыта? Спасибо. |
 
|
|
16.04.2010, 18:41
Сообщение
#319
|
|
Доктор Игровых Наук Репутация: 528 Группа: Забанен Сообщений: 3591 Награды: 2 Регистрация: 16.09.2009 |
Может кто знает где собака зарыта? Пока народ занят другим. Просьба пользоваться нашим хостингом изображений. http://img.gameru.net/ Молодцы, ребята! Так держать. -------------------- Забанен по собственному желанию
|
 
|
|
16.04.2010, 23:41
Сообщение
#320
|
|
BFG9000 owner
Половина землекопа Репутация: 247 Куратор темы Сообщений: 1813 Награды: 3 Регистрация: 30.03.2010 |
Молодцы, ребята! Так держать. Спасибо, делаем все что в наших силах (и на сколько хватает свободного времени). Итак - первая итерация: добавил в плагин импорта поддержку файлов *.mesh. Все остальное как и раньше (то есть все сделает за Вас автоматом, при соблюдении условий) Add: Пожалуйста, во избежание недоразумений, не пытайтесь открывать файлы *.model из папку dynamic. Сообщение отредактировал 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!
|
 
|
|
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 }; Сейчас ковыряю формат скелета. Импорт анимации все ближе -------------------- Hello worlds!
|
 
|
|
Текстовая версия | Сейчас: 29.04.2024, 00:13 |