В статье подробно описан процесс "рипа" моделей, текстур и шейдеров из игр использующих в качестве API directx версий 6, 7, 8, 9, 10, 11 (как 32 так и 64 битных версий) и импортирования "рипнутых" моделей/текстур в 3ds max, Noesis или Blender.
Внимание: рипер не поддерживает и не будет поддерживать рип моделей с сохранением их игровых позиций как это делает 3D Ripped DX.
Примечание: Статья рассчитана на пользователей знакомых с работой в 3ds Max и не описывает такие моменты как, например, текстурирование объектов, настройка материалов и т.п.
Для конвертирования потребуются следующие инструменты:
- 3ds Max (я использую 2009 х86) должно работать на версиях 2009+
- Ninja Ripper v1.6.0 (рипер) Автор: blackninja [страница]
- GIMS Evo Importer (3ds max import script) Автор: 3Doomer [страница]
- [не обязательно] ninja_importer v1.3 (3ds max скрипт) Автор: blackninja [скачать]
- [не обязательно] Noesis v4+ (3d model viewer/converter) Автор: Rich W. [страница]
- [не обязательно] Blender v2.49b (3d modeling software) Автор: Blender Foundation[скачать]
1. Настройка рипера. Распаковываем содержимое архива в любую папку. Существует две версии рипера: для игр использующих 32-битную (в папке x86) или 64-битную (в папке x64) архитекстуру. Запускаем программу из папки, которая соответствует битности архитектуры игры. Старые игры в осно
Примечание: Современные игры (2016+) используют в основном 64-битную архитектуру в то время как старые игры работают на 64-битной архитектуре. Некоторые игры работают на OpenGL, с которым рипер не работает и работать не будет.
Все возможности рипера:
- Извлекается ВСЯ доступная информация о вершинах модели (позиция, все текстурные координаты, нормали, веса, BLENDWEIGHT, BLENDINDICES, BINORMAL, TANGENT), индексы, текстуры, шейдеры. Теоретически, можно импортировать и эту доп. информацию в 3д редактор!
- Поддержка D3D11, D3D9, D3D8 (обрабатываются не все методы/техники, но должно работать в 95% игр).
Выбираем игру которую хотим "рипать". В окне рипера жмём кнопку '...' для выбора .exe игры:
Примечание: Добавить желаемую игру в окно рипера можно так же простым перетаскиванием .exe игры из окна "эксплорера" в окно рипера.
Выбираем режим, в котором будет производиться "рип" игры. Режим зависит от того, на каком directx работает игра. Описание режимов:
- No Wrapper - режим, при котором рипер будет пытаться запустить exe приложения/игры напрямую, используя для "рипинга" только intruder.dll, если этот режим не сработает (ничего не рипается) то нужно выбрать один из режимов "Врапера"
- Intruder Inject - режим, при котором рипер будет пытаться запустить exe приложения/игры напрямую, используя для рипинга только intruder.dll, если этот режим не сработает (ничего не рипается) то нужно выбрать один из режимов "Врапера";
- Режимы "Врапера", при которых рипер скопирует d3dX.dll рипера в папку содержащую исполняемый файл приложения/игры, после этого окно рипера можно уже закрыть (не для рипа из firefox — его нужно постоянно запускать через рипер), далее можно запускать игру из любого места, скопированная рипером d3dX.dll будет автоматически "цеплятся" в игру при запуске любым способом, позволяя рипать модели. Таким образом более не нужно запускать сам рипер для этой игры. Доступны следующие режимы "Врапера":
- D3D8 Wrapper - для игр на directx8;
- D3D9 Wrapper - для игр на directx9;
- D3D11 Wrapper - для игр на directx11;
- DDRAW Wrapper - для игр на directx 6/7;
Примечание: Удалять .dll-ки из папки с игрой надо вручную (если потребуется рипать через Intruder Inject, например), настройки рипера хранятся в реестре.
Запускаем игру нажатием на кнопку Run:
2. Процесс "рипа" игры. После того как игра запущена папка _NinjaRipper будет создана рядом с запущенным .exe. В игре выбираем место, которое хотим рипнуть и нажимаем на кнопку "рипа", по умолчанию это клавиша F10. После нажатия F10 игра "подвиснет" на секунду, далее игра чуть "дёрнется" и снова зависнет на какое-то время (около 5-25 секунд). Продолжительность "рипа" зависит от "качества" игры и мощности компьютера. Во время процесса рипа игры в папке с игрой где расположен её .exe все модели в формате .rip и текстуры в формате .dds сохраняются в папке <папка с EXE игры>\_NinjaRipper\.
Нажатием на кнопку рипа текстур (по умолчанию F9) "рипаются" только текстуры и сохраняются так же в папку _NinjaRipper, в директории игры туда где расположен .exe. О завершении процесса рипа можно узнать по "отвиснувшей" игре.
Стоит так же учитывать, что в некоторых играх процесс рипа "вешает" всю игру, т.е. после завершения рипа и "отвисания" игры можно продолжить с того же места, с которого игра "зависла". Однако есть и такие игры, которые продолжают выполняться даже во время рипа и после окончания процесса "вы можете въехать в бок какому-нибудь внедорожнику, а соперники будут далеко впереди".
3. Импортирование модели в 3ds max. Существует 2 версии импортера .rip файлов в 3ds max:
- первый (далее: старый) скрипт написан самим автором рипера, имеет набор стандартных функций. Единственная сложность в его использовании это получение правильных uv-координат;
- второй (далее: новый) импортер - GIMS Evo - имеет очень обширный набор возможностей, одной из основных, по моему мнению, его возможностей является импортирование весов и генерирование костей. Я рекомендую пользоваться именно им. Новую версию для web-установки всегда можно скачать по этой ссылке.
Главное окно нового импортера выглядит так:
Процесс установки GIMS Evo:
- Распакуйте папку "scripts" в папку 3ds max с заменой файлов;
- Распакуйте папку "GIMS" с заменой файлов папку:
- если у вас Windows Vista/7/8: "<DRIVE>:\Users\<USER_NAME>\AppData\Local\"
- Windows 2K/XP: "<DRIVE>:\Documents and Settings\<USER_NAME>\Application Data\"
- Если появляются ошибки при запуске GIMS Evo, запустите этот скрипт для получения пути установки:
- dl.dropbox.com/u/18649105/GIMS/ShowEGIMSPath.ms
- Запустите 3ds max (убедившись, что ваше интернет соединение работает) и нажмите кнопку установки GIMS Evo в панели Utilities в 3ds max.
Раздел Scene:
- Кнопка Bones - выбрать вариант использования информации о весах из .rip файлов, будут ли создаваться или нет кости вместе с модификатором Skin и просчитывать ли веса на импортированную модель:
- Don't create - кости и веса не будут импортированы;
- Create at zero - кости будут созданы в центре объекта, так же Skin модификатор и веса будут добавлены на импортируемую модель;
- Create at calculated position - кости будут созданы в области своего влияния на объект, так же Skin модификатор и веса будут добавлены на импортируемую модель;
- Reuse scene bones - уже имеющиеся в сцене кости будут использовать при импортировании объектов;
- Split the mesh by skinning when possible - импортируемый объект может быть разрезан в зависимости от установленных в rip-файле весов;
- Flip Faces - инвертировать полигоны;
- Scale - масштаб объекта;
- Position - поменять XYZ позицию объекта в сцене;
- Rotation - поменять XYZ поворот объекта в сцене;
- Miror - отразить объект по XYZ;
Раздел UV coordinates:
- Flip U - инвертировать UV координаты по U;
- Flip V - инвертировать UV координаты по V;
- Offset U/V - установить сдвиг UV координат по U или V;
- Scale U/V - установить масштаб UV координат по U или V;
Раздел Texture Indices. Взгляните на индексы текстур, которые относятся (по ID) к импортируемым объектам. Например Tex_0001_0.dds имеет цифру 0 перед ".dds", что обычно определяет эту текстуру как диффузную (цветную/основную):
- Diffuse - какая текстура будет использовать в качестве диффузной карты по индексу;
- Bump - какая текстура будет использовать в качестве карты объёма по индексу;
- Specular - какая текстура будет использовать в качестве карты отражений по индексу;
Раздел Import. Этот раздел для настроек непосредственно импорта моделей:
- Mode - импортировать один меш (Single File) или группу мешей (Path, IDs);
- Engine - выбрать настройки для импорта из особого движка. Для большинства случаев нужно использовать Other engine. Однако вы можете выбрать из следующих движков: Frostbite 2, Frostbite 3, Frostbite 3.5, YETI engine. На каком движке сделана игра часто можно узнать со страницы о ней на оф. сайте или на Википедии;
- Path - путь к .rip файлам. Нажмите на иконку папки чтобы выбрать путь;
- File IDs - номер/номера меша для импорта. Формат может быть таким: "0-15, 589, 67" или просто "1" (без кавычек);
- Import - нажмите чтобы начать импорт;
Раздел Preset. В самом низу окна:
- Раскрывающийся список с названием пресета (шаблона) - можно выбрать/сохранить шаблон настроек импортера;
- Remove - удалить выбранный шаблон;
- (i) - кнопка информации об импортере.
Для того чтобы импортировать .rip модель в 3ds max выберите режим импортирования, задайте путь к файлам и нажмите на кнопку импорта. Все возможные uv координаты теперь загружаются на импортируемую модель в разные uv каналы если их несколько.
Открываем 3ds max. В меню MAXScript > Run Script... выбираем скрипт ninja_ripper_import_1.3.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 и он "падает/закрывается" с ошибкой.
Модели (иногда и текстуры) могут быть так же загружены в Blender или Noesis:
- для импорта моделей в Blender используйте этот python-скрипт (написанный Akaito);
- скрипт для импортирования в Noesis находится в архиве с NinjaRipper;
4. О текстурах. Текстурами всегда являются .dds файлы. Они автоматически загружаются в 3ds max. Стоит учесть, что каждой модели соответствует несколько текстур: например есть модель Mesh_0000.rip, ей могу соответствовать несколько текстур с именами Tex_0000_1.dds, Tex_0000_2.dds, Tex_0000_3.dds и т.д. В 3ds maxможно загрузить только одну из эти текстур. Какая текстура будет загружена выбирается в имортере функцией Texture Indices изменением цифры.
Примечание: Если вы используете программы генераторы "превью" для .dds файлов в Windows(я использую Mystic Thumbs) то при рипе игр на dx11 такие .dds не будут показывать мини-превью, всё потому-что они имеют неправильный заголовок файла, данная проблема пока не решена.
5. Результат. Результаты некоторых рипов из игр Battlefield: Bad Company 2, Battlefield 3, NFS: Run, Expendables 2: