В статье подробно описан процесс "рипа" моделей и текстур из игр использующих в качестве API directx версий 8, 9, 11 и импортирования "рипнутых" моделей/текстур в 3ds max. Важно: если вы опытный пользователь ПК, то для вас сложностью может быть только настройка импорта UV. Остальное всё просто. Однако, я специально "разжевал" процесс для всех пользователей.
Примечание: Статья рассчитана на пользователей знакомых с работой в 3ds Max и не описывает такие моменты как, например, текстурирование объектов, настройка материалов и т.п.
Для конвертирования потребуются следующие инструменты:
- 3ds Max (я использую 2009 х86) должно работать на версиях: 2009-2013
- Ninja Ripper v1.1.0 (рипер) Автор: blackninja [страница]
- ninja_importer v1.3 (скрипт для импорта в 3ds max) Автор: blackninja [скачать]
1. Настройка рипера. Распаковываем содержимое архива в любую папку. Запускаем программу.
Извлекается ВСЯ доступная информация о вершинах модели (позиция, все текстурные координаты, нормали, веса, BLENDWEIGHT, BLENDINDICES, BINORMAL, TANGENT), индексы, текстуры, шейдеры. Теоретически, можно импортировать и эту доп. информацию в 3д редактор!
Поддержка D3D11, D3D9, D3D8 (обрабатываются не все методы/техники, но должно работать в 95% игр).
Выбираем игру которую хотим "рипать". В окне рипера жмём кнопку для выбора .exe игры.
Примечание: Добавить желаемую игру в окно рипера можно так же простым перетаскиванием .exe игры из окна "эксплорера" в окно рипера.
Выбираем режим, в котором будет производится "рип" игры. Режим зависит от того, на каком directx работает игра. Описание режимов:
• No Wrapper - режим, при котором рипер будет пытаться запустить exe приложения/игры напрямую, используя для "рипинга" только intruder.dll, если этот режим не сработает (ничего не рипается) то нужно выбрать один из режимов "Врапера"!
Режимы "Врапера", при которых рипер копирует d3dX.dll рипера в папку содержащую исполняемый файл приложения/игры, после этого окно рипера можно уже закрыть, далее можно запускать игру из любого места, скопированная рипером d3dX.dll будет автоматически цепляться в игру при запуске любым способом, позволяя "рипать" модели. Таким образом более не нужно запускать сам рипер для этой игры.
• D3D8 Wrapper - для игр на directx8
• D3D9 Wrapper - для игр на directx9
• D3D11 Wrapper - для игр на directx11
Примечание: Удалять .dll-ки из папки с игрой надо вручную (если это потребуется), настройки рипера отныне хранятся в реестре. (в старой версии рипера настройки хранились в папке с рипером)
Запускаем игру нажатием на кнопку Run:
2. Процесс "рипа" игры. После запуска игры и выбора нужного места нажимаем на кнопку "рипа", по умолчанию это клавиша F10. После нажатия F10 игра "подвиснет" на секунду, далее игра чуть "дёрнется" и снова зависнет на какое-то время (около 5-25 секунд). Продолжительность "рипа" зависит от "качества" игры и мощности компьютера. Во время процесса рипа игры в папке с игрой где расположен её .exe создаётся папка с моделями в формате .rip и текстурами в формате .dds.
Нажатием на кнопку рипа текстур (по умолчанию F9) "рипаются" только текстуры и сохраняются так же в папку с игрой туда где расположен .exe.
О завершении процесса рипа можно узнать по "отвиснувшей" игре.
Стоит так же учитывать, что в некоторых играх процесс рипа "вешает" всю игру, т.е. после завершения рипа и "отвисания" игры можно продолжить с того же места, с которого игра "зависла". Однако есть и такие игры, которые продолжают выполняться даже во время рипа и после окончания процесса вы можете въехать в бок какому-нибудь внедорожнику, а соперники будут далеко впереди.
3. Импортирование модели в 3ds max. Открываем 3ds max. В меню MAXScript > Run Script... выбираем скрипт ninja_importer.ms, откроется окно:
- Source select (выбор источника и режима импорта):
- Group - режим для импорта группы файлов
- Single - режим для импорта файлов по-одному
- List File - режим для импорта файлов через файл-список .lst, который содержит список всех моделей одного рипа
- Input Dir/File - источник импорта, файл или папка (в зависимости от выбранного режима)
- RIP File Nums - поле для ввода номеров файлов для импорта (для режима Group), формат ввода: 0-15, 589, 67
- Vertex Format (выбор режима построения модели):
- Auto - режим для автоматического определения групп данных (вершины, нормали, uv-координаты), подходит для большинства игр
- Manual - режим для ручного определения групп данных, необходим для импорта моделей из новых игр (преимущественно directx11)
- Position (x,y,z) - поля для ввода группы данных определяющих положение вершин модели, даже в ручном режиме эти параметры в 99% игр остаются неизменными
- Normal (x,y,z) - поля для ввода группы данных определяющих направление нормалей каждой вершины модели (находятся в доработке)
- TexCoord (u,v) - поля для ввода группы данных определяющих текстурные координаты модели, один из важнейших параметров импорта. Для игр, импорт которых не позволяет получить правильные uv-координаты, пара uv всегда подбирается перебором. На данный момент выявлено, что пары не могут превышать цифру 50, т.е. могут быть 6-7 или 18-19 или 24-25 или 39-40. В очень редких случаях пары uv могут быть 3-4 или 4-5 или 5-6, что входит в пределы "поля определения нормалей", а так же 8-6 или 12-11, что идёт в разрез со здравым смыслом, но тем не менее может быть.
- Transformations (трансформации):
- Scale - масштаб импортируемой модели
- Rotate X - поворот по оси импортируемой модели
- Tex.0 File Level - выбор номера текстуры, которая будет присвоена модели после импорта
- Flip UV Vertical - инвертировать расположение uv по вертикали
- IMPORT - кнопка для начала процесса импорта
Для импорта модели жмём кнопку "Обзор":
Выбираем .rip файл, и жмём "Открыть". Модель загрузится в 3ds max. Если результат вас не устроил измените режим Vertex Layout импорта с Auto на Manual, откроются дополнительные настройки для импорта:
Приложу так же картинку для наглядного понимания что за цифры и за что они отвечают (цвета/зоны на картинке ниже соответствуют цветам на картинке выше):
На этой картинке показан шаблон данных .rip файла. Из шаблона следует: зелёная зона (модель), синяя зона (нормали), оранжевая зона (uv, текстурные координаты), подробнее:
- данные вершин (сама модель) строится по первым трём значениям (00=x, 01=y, 02=z), так же эти цифры соответствуют тому, что есть в импортере, т.о. 00=0=x, 01=1=y, 02=2=z. Значения эти в импортере можно изменить на какие угодно цифры, но в 99,99% игр эти значения остаются неизменными, и лучше их вообще не трогать
- данные нормалей (для групп сглаживания моделей, соответствует цифрам 03, 04, 05) - в текущей версии не закончено, изменение значений не даст результатов
- uv, текстурные координаты - представляются двумя цифрами (06, 07 или 07, 08 или 24, 25), а не тремя как в случае с вершинами или нормалями - в 80% игр остаются неизменными, но бывают игры (например: Battlefield: Bad Company 2 или NFS: Run) где необходимо изменять эти значения, а иногда значения даже заходят в зону "нормалей" (т.е. могут быть 03, 04), но никогда не заходят в зону "вершин". Значения эти нужно менять простым перебором/подставлением. На картинке ниже — пример.
Таким образом выбрав модель, настроив процесс импорта (uv, масштаб, поворот и т.д.) нажимаем кнопку IMPORT. Модель загружена в 3ds max.
Так же можно импортировать модели массово. Для этого нужно вместо Single в Source Select выбрать Group, а в RIP File Nums написать цифры соответствующие имени модели .rip в таком виде: 15,489,0, 50-85
После этого настроив процесс импорта жмём IMPORT, все файлы соответствующие написанным цифрам импортируются в 3ds max.
Примечание: Следите за тем чтобы файлов не было очень много, или перенесите текстуры в отдельную папку: бывает такое, что огромное количество текстур, которые ложатся на импортированные объекты перегружают 3ds max и он "падает/закрывается" с ошибкой.
4. О текстурах. Текстурами всегда являются .dds файлы. Они автоматически загружаются в 3ds max. Стоит учесть, что каждой модели соответствует несколько текстур: например есть модель Mesh_0000.rip, ей могу соответствовать несколько текстур с именами Tex_0000_1.dds, Tex_0000_2.dds, Tex_0000_3.dds и т.д. В 3ds max можно загрузить только одну из эти текстур. Какая текстура будет загружена выбирается в имортере функцией Tex.Num изменением цифры.
Примечание: Если вы используете программы генераторы "превью" для .dds файлов в Windows (я использую Mystic Thumbs) то при рипе игр на dx11 такие .dds не будут показывать мини-превью, всё потому-что они имеют неправильный заголовок файла, данная проблема пока не решена.
5. Результат. Результаты некоторых рипов из игр Battlefield: Bad Company 2, Battlefield 3, NFS: Run, Expendables 2:
Источник: http://gameshaker.ucoz.ru |