Как достать модельки из файлов игры

Обновлено: 02.07.2024

Полное руководство по выдиранию 3D пространства из игр работающих на 6/8/9 DirectX, при помощи программы 3D Ripper DX Риппинг - cкриншот игры, но в 3D, захвачено будет всё, что видно на данный момент на экране в виде фрейма + текстуры в dds и файлы шейдеров.

3D Ripper DX - та самая прога, которая давно уже не обновлялась, но всё равно пользуется большим спросом у модостроителей. На данный момент версия 1.8.2

Что нам понадобится


Microsoft Windows XP SP3
3D Ripper DX 1.5 - 1.8.2 версий СКАЧАТЬ
Autodesk 3ds Max 2009 / 2010 / 2011
"Бесплатная" версия игры или что-бы запускалась сразу с exe без всяких лаунчеров, Steam окон и.т.п ! (DX 6/8/9) . (возможен вариант глобального мониторинга в случае со Steam).
Скрипт для 3ds max для восстановления координат текстур на модельках - UV Repair Tools.
Немного мозгов и изобретательности.
Прога TexMod (пока не описана в этом туторе)
Adobe Photoshop
XnView (или др. просмотрщик с поддержкой *.dds файлов)

Зачем нам именно XP и 3D Ripper DX разных версий?

XP нам нужна чисто из за того, что она древняя, как эта прога и они работают в единой гармонии. Да и процессы там не нагружаются дополнительными опциями.
Разные версии 3D Ripper DX - Даже на XP эта программа не всегда работает корректно, всё происходит из за того, что разные движки игр работают по разному, например некоторые игры вообще не запускаются или вылетают при нажатии захвата фрейма. Другие нормально запускаются, но у них, как ни странно, не появляется надписи, что игра готова к риппингу. Короче, очень много всяких премудростей.

Главное окно программы

Для тех, кто в танке, расписываю всё подробно:

Please select DirectX 6/8/9/ app. - Укажите путь до исполняемого exe игры
Command Line - параметры запуска игры (если они сущестуют) например -dev.
Capture key - кнопка захвата фрейма
Wireframe mode - режим wireframe (не рекомендуется использовать)
Disable texures - отключить отображение текстур (не рекомендуется использовать)
Capture all shaders / all texures - сохранение всех шейдеров / текстур которые есть в памяти, а не только используемые в фрейме.
Force windowed mode - запуск в окне (не рекомендуется использовать)
Disable shader model 3.0 - Отключение продвинутых шейдеров (не рекомендуется использовать)

Also capture to obj - захват фрейма не только в стандартном формате но и в формате OBJ (не рекомендуется использовать) Захват в формате OBJ вам ничего хорошего не даст:
1 - захват происходит чуть ли не в 3 раза дольше
2 - импорт формата OBJ занимает очень много оперативной памяти, если фрейм большой то можете получить тупо ошибку и всё.
3 - большой вес и ещё множество больших минусов которые я укажу ниже.
4 - obj не сохраняет координаты текстур.

Кнопки
Start global system monitoring - запуск проги в фоновом режиме (только для XP). Программа старается встраиваться во все 3D приложения запущенные на компе. Режим полезен для игр в которых запуск осуществляется через лаунчер, а не на прямую. Глобальный мониторинг надо запустить перед запуском самой игры !
Launch - сворачивание программы и запуск игры

Итак вот мы и добрались до самого тутора. Для начала давайте оценим вашу игру, она должна запускаться сразу с exe - самый лучший вариант. Если же уж совсем припёрло то можно попробовать рипнуть и Steam версию игры или которая запускается с лаунчера, как например GTA IV, но с здесь уже намного больше гемора. Т.к. запуск игры сразу с exe не требует разъяснения, я подробно остановлюсь на запуске Steam игры.

Нажимаем кнопку, подтверждаем, что мы не нубы и поняли, что надо выключить всё, что помешает глобальному мониторингу.

Для самой игры вы должны создать "особо благоприятную среду" т.е. отключаем всякие проги типа Fraps, скриншотилки и всё, что может внедриться в процесс игры. Далее нам надо "обезвредить" сам Steam - отключаем оверлейную панель. Для особо тупых рассказываю: в библиотеке правой кнопкой мыши щёлкаем по игре - свойства - общие - убрать галочку "Вкл. сообщество Steam в игре" - Закрыть.

Для начала ставим самую посл. версию риппера (1.8.1). Указываем папки для текстур, фреймов и шейдеров. Указываем желаемые кнопки и доп. опции. Настоятельно не рекомендую использовать насильное отключение шейдеров 3.0 или захват ещё и в OBJ из за этих функций игра скорее всего вылетит. Так-же не злоупотребляйте Wireframe mode или Disable texures.

Итак, запускаем глобальный системный мониторинг, запускаем саму игру. Ждём загрузки и в прямом смысле молимся что-бы в левом верхнем углу появилась вот такая надпись:

Конечно, появление этой надписи ещё не победа над игрой но и не полный феил. Загрузите сохранение игры или что там есть. Убедитесь что игра работает в "рабочем режиме" т.е. вы можете играть в неё и в углу висит эта надпись. Если же что-то из выше сказанного не получилось поэксперементируйте с 1.8 и 1.7 если же и эти вполне новые версии не помогут попробуйте версию 1.5 лично у меня с ней вообще ничего не запустилось корректно.

Для "бесплатных" версий игр всё намного проще - указываете exe игры и стартуете с кнопки Launch, а далее по схеме рассказаной выше. т.е. пробуем с другими версиями проги. Не забываем что старые версии поддерживают только 8 и 9 DX.

Премудрости


Перед снимком надо учитывать некоторые правила которые помогут получить максимально качественный снимок 3D пространства игры !
Встаньте строго параллельно к снимаемому объекту. Ориентируйтесь по стенам помещения, по домам, постройкам или что там ещё есть. если собираетесь рипнуть целую локацию.
Установите по возможности камеру параллельно объектам, это тоже поможет сделать более ровный снимок.
Посторайтесь что-бы снимаемая локация была полностью в поле видимости (здесь разумеется в выйгрыше те кто с широкоформатным монитором). Во многих играх окружение сразу же выгружается и некоторые объекты вы уже не увидите на снимке.
По возможности создайте несколько снимков с разных ракурсов или на других локациях игры. Это пожет при выправлении текстур и выборе лучшего варианта снимка.

Мы нажали кнопку "Сделать снимок"


Так вот, встали как надо, установили камеру и готовы нажать сделать снимок. Жмём ! В левом верхнем углу появилась панелька на которой написано что-то вроде: сейчас производится снимок, это займёт примерно 5 минут и ниже полный путь к создаваемому снимку.
Да, для снимка некоторых современных игр требуется весьма значительное время. Например когда я тестировал на NFS Hot Pursuit на каждый снимок уходило примерно по 3,5 минуты, а то и даже 5 минут !

"Переваривание" полученного снимка.

Мучались, мучались и вот у нас есть снимок в формате 3dr и пачка текстур в формате DDS. Что-же дальше делать ? А вот что: надеюсь вы сообразили как поставить плагин импорта 3dr, для полного комплекта вам ещё понадобиться фиксилка координат текстур. Кидаем uv-repair-tools.msв папку . 3ds Max 2010\Scripts\. Запускаем 3ds max, жмём "импорт" и указываем наш снимок.
С начала нам предложат указать параметры импорта:

Лучше всего тут вообще ничего не трогать и нажать ок. Но об одной полезной опции я расскажу подробнее, называется она "Recommended values".
Здесь может быть всего один рекомендуемый параметр, что даже очень хорошо - выбираем его и жмём ок. Но бывает, что рекомендуемых параметров 2, а то 4. Это происходит, если снимок таки не снимался по правилам, которые я описал выше. Из за этого придётся импортировать данный снимок столько раз, сколько есть рекомендуемых параметров.

Короче говоря импортируете снимок и смотрите что он из себя представляет. Вдруг он сплюснут по высоте или ширине, может даже вытянут по диагонали или самое смешное можно увидеть, что весь снимок в прямом смысле снимок. т.е. уже не 3D, а практически плоская поверхность. Если видите такое смело жмите reset и импортируйте снимок уже с другим рекомендуемым параметром.
Для начала выбирайте первый рек. параметр, если все не подошли то оставьте эту опцию не выбранной.

Ниже показан пример неудачного, плоского импорта:

А вот профессионально сделанный импорт:

Ну вот мы и импортировали своё творение. Удачно ? Тогда идём дальше. Постарайтесь выровнять ваш рип если он таки получился не очень строго по осям координат, помните что центр координат это как раз точка снимка. Сохраните только в формат *.max Это очень важный момент т.к. этот формат сохраняет совершенно всё включая дополнительные координаты текстур и прочую дрянь. Сохраните и сбросте 3ds max (reset). Откройте только-что сохранённый фрейм, скорее всего вам предложат указать папку с текстурами, укажите ему папку с получившимися после рипа dds файлами. Если повезёт все текстуры сразу встанут на свои места, а если нет можете увидеть или везде нормалеи место текстур или вообще кое где растянутые по кривым координатам текстуры.

Какие-же мы неудачники.
Очень подробно я разберу самый тяжёлый случай с которым мне пришлось работать. Я рипал игру Saints Row The Third. Добрая половина текстур лежит на разных UV координатах, пространство рипается очень криво, текстуры хорошего качества только на персах и оружии. Ну и самое плохое - у игры есть какие-то лоды, которые естественно то-же рипаются и в итоге получается всё дублированное да и ещё с кривыми координатами. Как же всё это фиксить ? Да не очень и сложно, после долгих поисков я нашёл скриптик для 3ds max называемый UV Repair Tools.

Фиксинг координат текстур

Разберём как-же восстанавливать координаты, координаты по описанию автора скрипта могут лежать на других UV координатах. Его скрипт как раз перенаправляет 3ds max на нужные координаты. Для примера я возьму рипнутого npc из SR3.

Слева кривые координаты сразу после импорта, а справа уже пофиксенные. Результат как говориться, на лицо.

Всё что нужно делать это просто выбрать 1 из мешей персонажа и жать в скрипте поочерёдно кнопки пока не увидите что текстуры встали на место. То-же самое проделываем с оставшимися мешами. Но скорее всего может оказаться что на 1 модели персонажа везде одинаковый канал и в последствии можно применить кнопку ко всем мешам сразу.

Важно: не нажимайте одну и ту-же кнопку 2 раза, это приведёт к вылету 3ds max
Важно: в случае, например, с sr3, есть дублированные меши, так-что придётся очень внимательно смотреть, какой меш выбран, потому-что они сливаются и можно не заметить, что текстуры выровнялись. (На скрине скрытый персонаж из Saints Row 3)

Как запустить скрипт?
Скрипт запускается очень просто: жмём MAXScript - Run Script и выбираем наш скрипт.

3D Ripper DX — уникальная утилита. Она позволяет извлечь из трехмерных игр модели персонажей, техники, оружия и даже целые локации. По понятным причинам использовать все эти ресурсы в коммерческих проектах нельзя, а вот для создания бесплатных дополнений — вполне. Сегодня мы детально разберем принципы работы 3D Ripper и научимся извлекать из игр трехмерные объекты.

Оно вертится!

Для захвата 3D-сцен нам потребуется, во-первых, сам 3D Ripper DX (для захвата всей геометрии, текстур и шейдеров, отрендеренных в текущем кадре), а во-вторых, D3DX9_29.dll — файл библиотеки для DirectX, необходимый для работы 3D-риппера. Все перечисленные файлы вы можете взять с нашего диска из раздела «Игрострой».

3D Ripper работает по следующему принципу. При запуске программы необходимо указать путь к exe-файлу игры, из которой нужно извлечь ресурсы, и настроить ряд параметров захвата. После этого игра грузится не напрямую, а через 3D Ripper.

Даже при наличии мощной машины 3D-риппер повесит запущенную игру на несколько секунд, а то и минут. За этот промежуток времени он собирает необходимые данные (геометрия уровня, шейдеры, текстуры, наложенные на объекты).

3D для всех

Запустите 3D Ripper. На экране появится окно, в котором необходимо настроить ряд параметров. В поле под строкой Please Select DirectX 9 application to analize укажите путь к любой установленной игре, использующей возможности DirectX девятой версии. Мы для примера использовали Call of Duty 2.

Захваченная при помощи риппера сцена в 3DS Max.

Теперь нужно назначить горячие клавиши на различные действия утилиты. Параметр поля Capture key отвечает за клавишу захвата сцены, в пределах которой находится игрок. По умолчанию на данное действие назначена клавиша F12. Дополнительно назначьте клавишу на пункт Wireframe mode key, данная опция позволит увидеть внутреннее устройство игровой локации — множество полигонов или треугольников, из которых состоят все объекты. Назначив клавишу на действие Disable texture key, вы сможете включать/отключать все игровые текстуры.

Теперь разберем предназначение флажков напротив поля Capture key. Если вы поставите галку в пункте Capture all shaders, то риппер при захвате сцены вытянет из игры все шейдеры. Хотите захватить все текстуры, использованные в локации? Ставьте галку напротив пункта Capture all textures. Если вам нужно запустить игру в оконном режиме, то установите флажок напротив опции Force windowed mode.

Последний пункт — Disable shader model 3.0 — по умолчанию отключен, лучше его не активировать, иначе программа будет часто вылетать в Windows. При желании вы можете изменить пути хранения сцен, текстур (кнопки Frames (*.3DR) output directory, Textures (*.DDS) output directory и Shaders (*.VSH, *.PSH) output directory).

Атрибут Camera FOV отвечает за обзор камеры. Чем больше значение, тем больше объектов будет в захваченной сцене. По умолчанию значение данного параметра ровно 85.

C настройкой риппера разобрались. Жмите кнопку Launch, чтобы запустить Call of Duty 2 в режиме захвата. Вы увидите, что в левом верхнем углу игры высветится надпись Ready to Capture. Начните какую-либо миссию в CoD 2, отыщите наиболее подходящую для захвата сцены локацию и нажмите F12. 3D Ripper сохранит все извлеченные файлы на винчестер в заданные вами директории.

Выйдите из игры и запустите 3DS Max. Выберите пункт меню File/Import и в появившемся окне в поле Тип файлов задайте параметр 3DR Import (*.3DR). Затем укажите путь к захваченной 3D-сцене, например, C:\Documents and Settings\User\Мои Документы \3DReaperDX\Frames\frame006b27f2.3dr. Кликните по кнопке Ok.

В появившемся меню импорта сцены, не изменяя никаких параметров, снова нажмите на Оk. Подождите, пока «Макс» загрузит захваченный 3D-кадр. На слабых машинах этот процесс может затянуться на несколько часов: крайне желательно, чтобы оперативной памяти было не менее 1 Гб (в этом случае средних размеров сцена загружается за 2-3 минуты).

Описанным методом вы можете захватывать сцены из любой игры, поддерживающей DirectX 9.0, после этого разбирать их в «Максе» на составляющие и использовать при создании модов.


Когда речь идёт о программном обеспечении, термин «взлом» зачастую ассоциируют с пиратством и нарушением авторских прав. Данная статья не об этом; напротив, я решительно не одобряю любые действия, которые прямо или косвенно могут навредить другим разработчикам. Тем не менее, эта статья всё же является практическим руководством по взлому. Используя инструменты и методы о которых далее пойдёт речь, вы сможете проверить защиту собственной Unity игры и узнаете, как обезопасить её от взлома и кражи ресурсов.

В основе взлома лежит знание: необходимо понимать особенности компиляции Unity-проекта, чтобы его взломать. Прочитав статью, вы узнаете, каким образом Unity компилирует ресурсы игры и как извлечь из них исходные материалы: текстуры, шейдеры, 3D-модели и скрипты. Эти навыки будут полезны не только для анализа безопасности проекта, но также для его продвинутой отладки. В связи с закрытостью исходного кода, Unity часто работает как «черный ящик» и порой единственный способ понять, что именно в нём происходит — это изучение скомпилированной версии скриптов. Кроме прочего, декомпиляция чужой игры может стать серьёзным подспорьем в поиске её секретов и «пасхальных яиц». Например, именно таким образом было найдено решение финальной головоломки в игре FEZ.


Рассмотрим для примера игру, собранную под ОС Windows и загруженную через Steam. Чтобы добраться до директории, в которой находятся нужные нам ресурсы, откроем окно свойств игры в библиотеке Steam и в закладке «Local files» нажмём «Browse local files…».


Когда Unity компилирует проект под Windows, ресурсы всегда упаковываются по схожей схеме: исполняемый файл (например, Game.exe ) будет находится в корне директории игры, а по соседству расположится директория, содержащая все игровые ресурсы — Game_Data .

Большинство ресурсов Unity-проекта упаковываются в файлы проприетарного формата с расширениями .assets и .resources . Наиболее популярный на сегодняшний день инструмент для просмотра таких файлов и извлечения из них ресурсов — Unity Assets Explorer.


Графический интерфейс программы не отличается удобством, а также она страдает от нескольких критических багов. Не взирая на это, программа вполне способна извлечь большинство текстур и шейдеров из игры. Полученные в результате текстуры будут иметь формат DDS, который можно «прочитать» с помощью Windows Texture Viewer.

С шейдерами ситуация обстоит сложнее: они извлекаются в уже скомпилированным виде и, насколько мне известно, решений для их автоматической трансляции в удобочитаемый формат не существует. Тем не менее, это обстоятельство не мешает импортировать и использовать полученные шейдеры в другом Unity-проекте. Не забывайте, однако, что подобная «кража» нарушает авторские права и является актом пиратства.

Трёхмерные модели в типовой Unity-сборке «разбросаны» по различным ресурсам, а некоторые из них и вовсе могут генерироваться во время игры. Вместо копания в файлах, существует интересная альтернатива — получить данные о геометрии прямиком из памяти графического ускорителя. Когда игра запущена, вся информация о текстурах и моделях, видимых на экране, находится в памяти видеокарты. С помощью утилиты 3D Ripper DX можно извлечь всю эту информацию и сохранить в формате, понятном 3D-редакторам (например, 3D Studio Max). Учтите, что программа не самая простая в обращении — возможно, придётся обратиться к документации.


PlayerPrefs — это класс из стандартной библиотеки Unity, который позволяет сохранять данные в долговременную память устройства. Он часто используется разработчиками для хранения различных настроек, достижений, прогресса игрока и другой информации о состоянии игры. На ОС Windows эти данные сохраняются в системном реестре по следующему пути: HKEY_CURRENT_USER\Software\[company name]\[game name] .


Помешать пользователю редактировать значения в системном реестре мы не в силах. А вот проверить, изменялись ли эти значения без нашего ведома — вполне реально. В этом нам помогут хеш-функции: сравнив контрольные суммы хранимых данных, мы сможем убедиться, что никто и ничто, кроме нашего кода эти данные не изменяло.

Приведенный выше класс — упрощенный пример реализации, работающий со строковыми переменными. Для инициализации ему необходимо передать секретный ключ и список PlayerPrefs-ключей, значения которых должны быть защищены:

Затем его можно использовать следующим образом:

При каждом вызове метода Save , на основе значений всех параметров, ключи которых были переданы классу при инициализации, вычисляется и сохраняется контрольная сумма. Используя метод HasBeenEdited мы затем можем проверить, изменялись ли защищенные параметры без нашего ведома.

Для Windows-сборок Unity компилирует и сохраняет исходный код всех игровых скриптов в директорию Managed . Интересуют нас следующие библиотеки: Assembly-CSharp.dll , Assembly-CSharp-firstpass.dll и Assembly-UnityScript.dll .



Данных подход особенно эффективен для наших целей: Unity очень скупо оптимизирует исходный код игровых скриптов, практически не изменяя его структуру, а также не скрывает названия переменных. Это позволяет с легкостью читать и понимать декомпилированый материал.

Раз Unity не заботится о сохранности нашего кода — сделаем это сами. Благо, существует утилита, готовая автоматически зашифровать плоды нашего интеллектуального труда: Unity 3D Obfuscator.


И хотя программа отлично справляется со своими обязанностями, многие классы, адресуемые извне родной библиотеки, всё же не могут быть зашифрованы без риска нарушения связанности — будьте осторожны!

Cheat Engine — широко известная программа для взлома игр. Она находит ту область оперативной памяти, которая принадлежит процессу запущенной игры и позволяет произвольно её изменять.


Эта программа пользуется тем фактом, что разработчики игр очень редко защищают значения переменных. Рассмотрим следующий пример: в некой игре у нас есть 100 патронов; используя Cheat Engine, можно выполнить поиск участков памяти, которые хранят значение «100». Затем мы делаем выстрел — запас патронов составляет 99 единиц. Снова сканируем память, но теперь ищем значение «99». После нескольких подобных итераций можно с легкостью обнаружить расположение большинства переменных игры и произвольно их изменять.

Cheat Engine столь эффективна от того, что значения переменных хранятся в своём изначальном виде, без какой-либо защиты. Серьёзно усложнить жизнь «читерам» довольно просто: нужно лишь немного изменить способ работы с переменными. Создадим структуру SafeFloat , которая послужит нам безопасной заменой стандартного float :

Использовать нашу новую структуру можно следующим образом:

Если вы выводите значения переменных на экран, хакеры всё ещё смогут перехватить и поменять их, но это не повлияет на действительные значения, хранящиеся в памяти и использующиеся в логике игры.

К сожалению, существует не так уж много способов защитить игру от взлома. Будучи установленной на пользовательское устройство, она фактически раскрывает все ваши текстуры, модели и исходный код. Если кто-то захочет декомпилировать игру и украсть ресурсы — это лишь вопрос времени.

Невзирая на это, существуют действенные методы, которые позволят серьёзно усложнить жизнь злоумышленникам. Это не значит, что нужно вдаваться в панику, шифровать весь исходный код и защищать каждую переменную, но по крайней мере задумайтесь, какие ресурсы вашего проекта действительно важны и что вы можете сделать для их защиты.

Экспорт моделей из других игр при помощи Ninja Ripper






В статье подробно описан процесс "рипа" моделей, текстур и шейдеров из игр использующих в качестве API directx версий 6, 7, 8, 9, 10, 11 (как 32 так и 64 битных версий) и импортирования "рипнутых" моделей/текстур в 3ds max, Noesis или Blender.

Внимание: рипер не поддерживает и не будет поддерживать рип моделей с сохранением их игровых позиций как это делает 3D Ripped DX.

gamer-lab.com

Примечание: Статья рассчитана на пользователей знакомых с работой в 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% игр).

gamer-lab.com

  • Target (DX8, DX9, DX11 application) (выбор приложения/игры для рипа):
    • Exe - поле для ввода прямого пути для исполняемого файла приложения/игры;
    • Arg - поле для ввода дополнительных параметров запуска для исполняемого файла;
    • Dir - поле для ввода прямого пути к папке содержащего исполняемый файл (подставляется автоматически после выбора .exe, не обязательно изменять);
    • D3D8 Wrapper - для игр на directx8;
    • D3D9 Wrapper - для игр на directx9;
    • D3D11 Wrapper - для игр на directx11;
    • DDRAW Wrapper - для игр на directx 6/7;

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

    Примечание: Добавить желаемую игру в окно рипера можно так же простым перетаскиванием .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\.

      gamer-lab.com

      Нажатием на кнопку рипа текстур (по умолчанию F9) "рипаются" только текстуры и сохраняются так же в папку _NinjaRipper, в директории игры туда где расположен .exe. О завершении процесса рипа можно узнать по "отвиснувшей" игре.
      Стоит так же учитывать, что в некоторых играх процесс рипа "вешает" всю игру, т.е. после завершения рипа и "отвисания" игры можно продолжить с того же места, с которого игра "зависла". Однако есть и такие игры, которые продолжают выполняться даже во время рипа и после окончания процесса "вы можете въехать в бок какому-нибудь внедорожнику, а соперники будут далеко впереди".

      3. Импортирование модели в 3ds max. Существует 2 версии импортера .rip файлов в 3ds max:

      • первый (далее: старый) скрипт написан самим автором рипера, имеет набор стандартных функций. Единственная сложность в его использовании это получение правильных uv-координат;
      • второй (далее: новый) импортер - GIMS Evo - имеет очень обширный набор возможностей, одной из основных, по моему мнению, его возможностей является импортирование весов и генерирование костей. Я рекомендую пользоваться именно им. Новую версию для web-установки всегда можно скачать по этой ссылке.

      Главное окно нового импортера выглядит так:

      gamer-lab.com

      Процесс установки GIMS Evo:

      Раздел 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, откроется окно:

      gamer-lab.com

      Описание функций импортера:

      Для импорта модели жмём кнопку "Обзор":

      gamer-lab.com

      Выбираем .rip файл, и жмём "Открыть". Модель загрузится в 3ds max. Если результат вас не устроил измените режим Vertex Layout импорта с Auto на Manual, откроются дополнительные настройки для импорта:

      gamer-lab.com

      Приложу так же картинку для наглядного понимания что за цифры и за что они отвечают (цвета/зоны на картинке ниже соответствуют цветам на картинке выше):

      gamer-lab.com

      На этой картинке показан шаблон данных .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), но никогда не заходят в зону "вершин". Значения эти нужно менять простым перебором/подставлением. На картинке ниже — пример.

      gamer-lab.com

      Таким образом выбрав модель, настроив процесс импорта (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:

      Читайте также: