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 лет;
- Rip Hotkeys — в этом разделе можно поменять кнопки для рипа разных ресурсов:
- Кнопка 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 каналы если их несколько.
Описание функций импортера:
- 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:
151 thoughts on “Ho to use Ninja Ripper”
Исправлюсь: (не досмотрел)
в ячейках Scale: ставим 0.000244
тоесть должно получится
Scale:U 0.000244
Scale:V 0.000244
谢谢你,但是似乎很久没有更新了?
Hi, i read your blog occasionally and i own a similar one
and i was just curious if you get a lot of spam remarks?
If so how do you prevent it, any plugin or anything you can recommend?
I get so much lately it’s driving me mad so any assistance is very
much appreciated.
I’m using ‘reCaptcha by BestWebSoft’
Heya i’m for the first time here. I came across this board and I find It truly useful &
it helped me out much. I hope to give something back and help others like you aided me.
Ну что могу сказать… софтина работает. НО! Происходит «отзеркаливание» текстур» и все надписи летят к чертям. Текстуры рипаются перевернутыми и зеркальными. Крайне туго разобраться какая текстура какому мешу принадлежит — нумерация идет «от балды» и номер меша никак не связан с номером текстуры. Все это я считаю серьезной недоработкой.
Владимир, рипер задумывался как универсальный. К сожалению игры разработаны не универсально – разработчики придумывают совершенно невообразимые способы вывода графических ресурсов на экран монитора. Невозможно поддержать все эти способы в рипере, даже если бы его разрабатывали несколько разработчиков на зарплате. Поэтому мы имеем в итоге инструмент, который позволяет делать то, чего не позволяют делать никто. А полученные ресурсы нужно уже руками докручивать до приемлемого состояния. Кстати, у нас на дискорд сервере есть раздел посвещённый рипингу: https://discord.gg/MhPXEwjruR