CG in Games tosyk's blog

22Окт/12113

Ho to use Ninja Ripper

Русский / English

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

[Обновлено 2017 Февраль 05: Добавлен рип из браузера Chrome]

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

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

  • Target (DX8, DX9, DX11 application) (выбор приложения/игры для рипа):
    • Exe - поле для ввода прямого пути для исполняемого файла приложения/игры;
    • Arg - поле для ввода дополнительных параметров запуска для исполняемого файла;
    • Dir - поле для ввода прямого пути к папке содержащего исполняемый файл (подставляется автоматически после выбора .exe, не обязательно изменять);
  • 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 - кнопка для запуска приложения/игры;
  • Output Directory (директория для сохранения рипнутых моделей):
    • Dir - поле для ввода исходящей папки (автоматически подставляется), эту папку можно выбрать вручную, не забудьте поставить галку в Don't change the path;
    • Browse - кнопка для открытия папки выбранного исполняемого файла;
    • Don't change the path - при активировании этой функции выбор исполняемого файла не будет переписывать исходящую папку;
  • Кнопка Settings (настройки):
    • Rip Hotkeys - в этом разделе можно поменять кнопки для рипа разных ресурсов:
      • All - рипает все модели и текстуры;
      • Textures - рипает только текстуры;
      • Forced - рипает модели и текстуры пока не истечёт таймер (по умолчанию 3 секунды), т.е. по сути кнопка рипа нажимается несколько раз;
      • Альтернативно можно использовать кнопки Alt, Shift или Ctrl в комбинации с хоткеями;
    • Save Shaders (for experts) - отметьте для рипа шейдеров (в некоторых случаях игра может запускаться очень долго или не запускаться вообще);
    • Forсed Rip Interval [X] second - таймер для функции Forced;
    • Save DirectDraw Surfaces (DX1-DX7) - рипать текстуры или спрайты из игр 95-99 лет;
  • Кнопка About/Donate - если вам нравится эта программа и вы бы хотели дальнейшего развития пожалуйста поддержите разработчиков!
  • Кнопка Exit - закрывает рипер.

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

Комментарии (113) Пинги (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

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