CG in Games tosyk's blog

22Окт/12105

How to use Ninja Ripper

Русский / English

Официальная страница поддержки на cgig.ru/forum.

В статье подробно описан процесс "рипа" моделей и текстур из игр использующих в качестве 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% игр).

Показать описание функций рипера »

  • Target (DX8, DX9, DX11 application) (выбор приложения/игры для рипа):
    • Exe - поле для ввода прямого пути для исполняемого файла приложения/игры
    • Arg - поле для ввода дополнительных параметров запуска для исполняемого файла
    • Dir - поле для ввода прямого пути к папке содержащего исполняемый файл (подставляется автоматически после выбора .exe, не нужно изменять)
  • No Wrapper - режим, при котором рипер будет пытаться запустить exe приложения/игры напрямую, используя для рипинга только intruder.dll, если этот режим не сработает (ничего не рипается) то нужно выбрать один из режимов "Врапера"!
  • Режимы "Врапера", при которых рипер скопирует d3dX.dll рипера в папку содержащую исполняемый файл приложения/игры, после этого окно рипера можно уже закрыть, далее можно запускать игру из любого места, скопированная рипером d3dX.dll будет автоматически "цеплятся" в игру при запуске любым способом, позволяя рипать модели. Таким образом более не нужно запускать сам рипер для этой игры.
    • D3D8 Wrapper - для игр на directx8
    • D3D9 Wrapper - для игр на directx9
    • D3D11 Wrapper - для игр на directx11

    Примечание: удалять .dll из папки с игрой надо вручную (если это потребуется), настройки рипера отныне хранятся в реестре!

  • RUN - кнопка для запуска приложения/игры
  • Output Directory (директория для сохранения рипнутых моделей):
    • Dir - поле для ввода исходящей папки (автоматически подставляется), эту папку можно выбрать вручную, не забудьте поставить галку в Don't overwrite by EXE
    • Browse - кнопка для открытия папки выбранного исполняемого файла
    • Don't overwrite by EXE - при активировании этой функции выбор исполняемого файла не будет переписывать исходящую папку
  • Settings (настройки):
    • RIP - выбор кнопки, нажатием на которую будет производится рип
    • Forced to save (Textures) - выбор кнопки для форсированного сохранения только текстур

Выбираем игру которую хотим "рипать". В окне рипера жмём кнопку для выбора .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:

Комментарии (105) Пинги (0)
  1. Ditta мне удалось справился с проблемой чёрного экрана, при попытке извлечь модели из игры ninja ripper-ом, методом запуска игры в оконном режиме!

    I was able to deal with the problem of black screen when I try to remove the model from the game ninja ripper’s, by starting the game in windowed mode!

  2. Ditta мне удалось справился с проблемой чёрного экрана, при попытке извлечь модели из игры ninja ripper-ом, методом запуска игры в оконном режиме!

    I was able to deal with the problem of black screen when I try to remove the model from the game with ninja ripper’s, by starting the game in windowed mode!

  3. Обратился к одному программисту с сайта http://www.scriptspot.com/3ds-max/scripts/duplicate-geometry-remover с просьбой написать скрипт, сортирующий на сцене одинаковые объекты, которые NinjaRipper захватил из игры и извлёк на сцену!
    Скрипт можно открыть текстовым редактором (notepad++) скопировать и вставить в скриптер 3ds max-а и нажать ctrl+e для активации скрипта с последующей автоматической сортировкой одинаковых объектов на сцене.

    I turned to one programmer site http://www.scriptspot.com/3ds-max/scripts/duplicate-geometry-remover to write the script on stage sorting identical objects that NinjaRipper captured from the game and drew on stage!
    The script can be opened with a text editor (notepad ++) copy and paste into scripter 3ds max-a and press ctrl + e to activate the script followed by automatic sorting identical objects in the scene.

  4. ass (Россия Татарстан Нижнекамск), классно, только вот скорее всего в копиях объекта другие развёртки UV и не понятно какую модель удалит скрипт.

  5. Вот пичаль, вроде прогу обновили да прокачали, а текстуры как были чёрные и без альфа канала – так и остались… Неужели нельзя сделать по человечески ?

  6. Простой способ отсортировать повторяющиеся объекты – это скачать любой файл дубликат файндер и удалить файлы до загрузки в макс. http://www.hardcoded.net/dupeguru/ – например, этот.

    To remove all duplicate geometry just use file duplicate finder and delete them before loading into Max.

  7. Просьба к автору сделать возможность сохранения сцены целиком с точными позициями объектов на ней.

  8. Grinya, дубликаты моделей часто содержат нужную информацию.

  9. «Grinya, дубликаты моделей часто содержат нужную информацию.»

    Tosyk, ого, даже предположить такого не мог. Спасибо за инфу! Тем не менее, я отвечал на вопрос как избавиться от дубликатов…

    Скажите, если знаете, а как сохранить координаты моделей на сцене(не как сейчас все в нуле) или как заэкспортить всю сцену с сохраненной иерархией. Например, как в 3dx ripper?!

  10. Grinya, никак не сохранить «координаты моделей на сцене».

  11. Tosyk, знаете ли софт способный захватывать сцену, кроме 3dxripper? Есть ли исходники ninja ripper?

  12. Grinya, другого софта не знаю. исходники вроде где-то были. нужно у автора спрашивать.

  13. Люди добрые…, помогите рипнуть Skyforge…
    Я на вас молиться буду…!

  14. I don’t have 3ds max.

    Do you have a way to convert .rip to .obj 3d models?

    I can pay bitcoin if someone writes a utility.

  15. T Y, you can download stable version of ninja ripper from here:
    http://cgig.ru/ninjaripper/
    then noesis from here:
    http://richwhitehouse.com/index.php?content=inc_projects.php

    after this you can use fmt_ninjaripper_rip_1.18.py + Noesis to convert model you want into obj.

  16. Hey, i have some problem with Ninja Ripper.
    2 days prior, it worked okay with MGS V, but today, i can’t poperly launch the game with ripper enabled. I think some of Steam updates might be involved.
    Please i need it to work!

  17. George, without detail explanation I ain’t be able to help you.

  18. Tosyk, i’ve duplicated my question on xentax ninja-ripper thread, we can proceed there (and in russian if its allowed xD)


Leave a comment

(required)

Нет обратных ссылок на эту запись.