Перейти к содержимому

Как достать модели из игры на unity

  • автор:

Что можно доставать из Unity? 3D модели, PDF, XLS, CAD?

Существует редактор персонажей или предметов, Сделанный на Unity, то есть запускаем игру, и создаем какого нибудь персонажа предоставленными инструментами. Или какую-то конструкцию. Можем ли мы Экспортировать эту модель в «какой-то» формат прямо из игры? Будь то .max .obj .dwg ? То есть перенос модели из Unity в 3dMax . Более развернутая форма вопроса: Я хочу построить редактор для каких-то типичных моделей. Допустим я занимаюсь проектировкой заборов, или окон, Входные данные у меня ширина и высота забора или окна, беру я значит и рисую в AutoCad модель окна и вганяю ее в размер, ставлю два линейных размера и формирую чертежи. Можно ли на движке Unity построить простенький редактор, каких-то типовых конструкций? И что меня больше всего интересует реально ли вынуть оттуда 3d модели нарисованные в нем же? Можно ли в нем какой-то PDF формировать?

Отслеживать

задан 16 авг 2021 в 18:01

Дмитрий Киров Дмитрий Киров

Программа для извлечения моделей из игры на движке юнити, для юнити 3D

Ищу такую программу, которая может мне из онлайн игры, написанной на движке юнити, вытащить модели персонажей и оружия для Юнити3D. ПОказалась задача простой пока не столкнулся с некоторыми программами, которые просто не видят таковые файлы. Игра скачана простым клиентом и точно знаю, что там где то файлы эти и лежат. Не подскажете наличие таковых программ?

Голосование за лучший ответ

Не совсем простая задача из разряда геймхакинга, тут надо копать в сторону устройства движка, смотреть как он работает с игравыими ресурсами.
Также разрабы часто любят паковать ресурсы самописными или платными пакерами/шифровщиками.
Есть специальные программы расчитанные на множество игр
(извлекатели ресурсов/resurce extractor), но они работают только в примитивных ситуациях, также могут помочь декомпиляторы C#, для вскрытия игрового кода, из него можно узнать как игра взаимодействует с ресурсами, откуда берёт, как обрабатывает.
Вот есть довольно неплохая статья на хабре:
https://habr.com/ru/post/266345/

Специально для игр написанных на Unity не знаю, но на modgames имеется программа Ninja ripper, которая предназначена цитирую — «для извлечения 3D моделей (мешей), текстур из игр».

Так как тема опубликована в 2015 году, я очень сомневаюсь, что стоит качать именно от туда. Но хотя бы можно прочесть описание и инструкцию по использованию.

Как достать модели из игры на unity

1) Итак, первым делом нам необходимо скачать 3ds max. У меня лично завалялась седьмая версия, но вы можете скачать любую с 5 по 9 и с 2009 года по 2011 (требует программа по вытаскиванию моделей). Надеюсь, гуглом умеете пользоваться. Прежде чем переходить ко второму шагу, установите 3ds max. P.s. если кто-то каким-то чудом не нашёл 3ds max, то можете скачать по ссылке тот, на котором проводился весь этот опыт — https://yadi.sk/d/onuRny8UiDJ4B

2) Второе дело тоже нехитрое – нужно скачать и установить 3D Ripper DX. Именно с помощью него мы будем вытаскивать модели из игр. Найти его довольно несложно, ведь скачать его можно бесплатно прямо с сайта разработчика — http://www.deep-shadows.com/hax/3DRipperDX.htm#Download. Устанавливаем его.

3) Третьим квестом для вас будет найти программу Deep Exploration. Лично у меня все с ней получилось только на версии 3.5.10.1242. Так и вводим в гугле – «Deep Exploration 3.5.10.1242», с первой строчки скачиваем, устанавливаем. Эта программа нам понадобится для интегрирования текстур. Если вы не нашли, я скинул вам свою версию на яндекс диск — https://yadi.sk/d/KhT-eEBti48LM . Там установка и кейген. Итак, все три квеста выполнены, получаем level up и идем дальше.

4) Запускаем программу 3D Ripper DX. У нас появляется вот такое окно.

настройка 3D Ripper DX

Настраиваем. Вверху указываем путь к игре, из которой будем дергать модель. (я выбрал orcs must die). Ставим галочки как на скриншоте. Можно поставить также Force windowed mode, если хотите, чтобы игра запустилась в оконном режиме. Внизу три пути указывают, куда будет сохраняться модель, текстуры и тени. Оставляем по умолчанию, чтоб потом не запутаться.

5) Приступаем к извлечению модели из игры. С молитвами и надеждой жмем на Launch. Запускается игра. В левом углу у нас должна присутствовать желтая надпись. Вот такая.

ready to capture

Мы находим нужную модель в игре и жмем F12. При нажатии в левом углу ненадолго появится красная надпись, значит все по плану, модель сохранилась. Теперь можно выходить из игры. Лично я собирался вытащить модель арбалета, но в данном случае буду вытаскивать арбалет вместе с персонажем, чтоб было нагляднее.

фрагмент игры для выдергивания

6) Теперь наша 3D модель персонажа выдернута из игры. Запускаем 3ds max. Нажимаем File – Import и находим нашу сохраненную модель в \Documents\3DReaperDX\Frames. Открываем ее и видим окошко, в котором нам следует выбрать Recommended Values, в противном случае модель может сплющиться.

настройка 3ds max

Нажимаем ок и в результате перед нами предстает нечто подобное.

модель в 3ds max

В большинстве случаев тут вообще творится хаос, так как программа, помимо нужной нам модели, выдергивает все подряд. Как правило, все, что есть на уровне. Но это не беда. Мы нажимаем на любое окошко и колесиком мышки приближаем. В основном, при приближении, мы уже можем различить нашу модель. Мы выделяем ее, нажимаем CTRL + I, а затем DELETE. Остается только нужная нам модель. При желании, вы можете удалить ненужные элементы и вручную, это тоже быстро. Вот что осталось у меня.

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

Теперь мы экспортируем модель из игры, нажав на File — Export и сохраняем в укромное местечко (на ваш выбор), с расширением 3ds. Кстати, если вам не нужны текстуры, то есть подойдет просто белая модель, то сохраняете ее в расширении obj. и сразу можете открывать в pepakura designer.

7. Теперь нам нужно наложить текстуры. Мы идем в \Documents\3DReaperDX\Textures и копируем все файлы оттуда в наше укромное местечко, в котором мы сохраняли модель в формате 3ds.

7.1 Теперь запускаем Deep Exploration. В левом окне, там, где папки, находим нашу модель (она в том самом укромном местечке). И нажимаем на название модели в формате 3ds. Должно быть что-то наподобие такого.

3d модели персонажей из игр

Модель может быть прозрачной, но это ничего страшного, нам главное здесь текстуры. Теперь нажимаем на File – Save as и сохраняем с расширением obj.

8. Теперь заходим в Pepakura Designer и открываем нашу импортированную модель (файл с расширением obj). Если вся модель черная, текстуры не отображаются, то в именах папок на пути к файлу имеются русские буквы. Надо чтоб файл obj с bmp — шными текстурами имел путь только из анлийских названий, ничего русского. Тогда все нормально отобразится. Теперь можем шаманить, разворачивать, вертеть, крутить — в общем делать все что душе угодно с вашей моделью уже в пепакуре.

3d модели из игр

Когда вы закончите шаманить с вашей моделью, нажмете сохранить, и она уже сохранится в привычном нам формате pdo. Вот так вот можно вытаскивать модели из игр. Сложно только сначала, потом рука набивается. А вот и отдельно модель арбалета в пепакуре.

достаем модель из игры

З.ы. бывает так, что модель как-то криво отображается, попробуйте изменить угол при захвате в игре. Вся эта эпопея тестировалась на Windows 7 64 bit.

157 коммент.

finger1610 (3 comments) 15.11.2016 в 19:46

Здравствуйте, столкнулся с такой проблемкой при наложении текстур на готовую модель. Вытащил модель из игры через 3D Ripper (сохранял через .obj), через Blender (3Dx Max слишком тяжелая и много всякого, но не об этом), убрал лишние детали, сохранил в формате .3ds, запустил Deep Exp. все текстуры отображаются корректно, сохраняю с тем же названием в формате .obj, в Pepakura Desiner открываю, всё корректно отображается, но после калибровки ориентации модели текстуры напрочь пропадают, остается один белый каркас. С ним можно работать, но текстуры очень нужны в развертке. Если калибровку не делать, то текстуры остаются, но вращать модель становится просто ужасно.Подскажите, пожалуйста, решение проблемы=) Thumb up10 Thumb down3

finger1610 (3 comments) 15.11.2016 в 19:50

Случайно нашел решение: баг самой Pepakura Designer. При начале калибровки ориентации модели откатиться в самое начало калибровки и текстуры встают на место=) Thumb up7 Thumb down3

nata (6 comments) 29.11.2016 в 22:34

Здравствуйте. Всё вытащила, преобразовала и сохранила. Получились файлы obj, mtl и несколько файлов в формате bmp. Пытаюсь открыть файл obj PepakuraDesigner_3.1.7, потом Pepakura Designer 4, но мне выдаёт ошибку от Microsoft Visual C++:
Runtime Error!
Program: C:\Program …
R6002
— floating point support not loaded.
И я не понимаю что мне делать.
При открытии скаченных моделей такая ошибка не выскакивает. Только на созданных самой. Thumb up9 Thumb down5

Sergeich (10 comments) 30.11.2016 в 17:08
Ничего не пойму, все программы требуют ключи и пароли,где их взять?

Воу, горячий коммент, что думаете: Thumb up73 Thumb down15

Егорыч (1 comments) 04.11.2021 в 22:39

чел, если открыть архив, то в описании виден пароль: ripper Thumb up4 Thumb down0

Иван (16 comments) 30.11.2021 в 19:46

Спасибо за хороший обзор! Thumb up1 Thumb down0

Юный Лорд (2 comments) 19.12.2021 в 17:17

А если я хочу вытащить модель из Nintendo Wii игры, открытой через эмулятор на ПК, у меня получится по вашей схеме? Если нет, то жаль… Thumb up0 Thumb down0

Papercraft (1447 comments) 19.12.2021 в 21:49

К сожалению, через эмулятор не получится Thumb up1 Thumb down1

Кики (1 comments) 21.02.2022 в 15:05

Вопрос: игра в стиме. Не все игры имеют лаунчер на компьютере, а ярлыки ссылаются на стим. Тем не менее, я нашла лаунчер-файл в папках, который прекрасно запускает игру. Однако рипер отказывается с ним работать. В чем проблема? Thumb up5 Thumb down1

Как вытащить ассеты из игры на Unity

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

  1. Законно использовать файлы из игр можно только в некоммерческих целях! [1] .
  2. Каждая игра уникальна. Разработчики используют разные плагины и способы хранения информации, поэтому способы из блога подходят не для всех игр!
  3. Unity постоянно обновляется, а вот инструменты для извлечения ассетов могут быть заброшены авторами. Как следствие, старые программы могут не работать на новых играх, а новые на старых.
  4. Мне часто задают вопрос: «можно ли указанными способами заменить изображения или перевести игру на другой язык?». Имеющийся опыт говорит, что заменить изображения в игре с помощью программ очень легко. А вот перевести игру обычно нельзя, если сами разработчики не добавили эту возможность.
  • 1 Инструменты
  • 2 Быстрое извлечение ассетов
  • 3 Изображения
  • 4 Звуки
  • 5 Шрифты
  • 6 Диалоги и другие текстовые файлы
    • 6.1 Вариант №1 — папка с игрой
    • 6.2 Вариант №2 — текстовые файлы
    • 6.3 Вариант №3 — Articy:draft 3
    • 6.4 Вариант №4 — I2 Localization
    • 7.1 Вариант №1 — папка с игрой
    • 7.2 Вариант №2 — файлы MonoBehaviour

    Инструменты [ ]

    • не обновляется
    • экспортирует MonoBehaviour в формате json
    • обновляется
    • рекомендую выставить Group By Asset Type в настройке Bundled Assets Export Mode
    • экспортирует MonoBehaviour в формате yaml
    • обновляется
    • улучшенная версия UABE
    • рекомендуется использовать только для модификаций
    • не обновляется
    • игры с большим количеством музыки и звуков часто сжимают их в формат bank. Только эта программа может извлечь их оттуда

    Быстрое извлечение ассетов [ ]

    Запустите программу AssetStudio либо AssetRipper. Новичкам рекомендую использовать AssetStudio, потому что кроме ассетов он дополнительно ничего не экспортирует.

    1. Debug → снимаем галочку Show error message (это придётся делать при каждом запуске программы)
    2. FileLoad Folder.
    3. Открываем папку, где установлена игра, а затем папку с постфиксом _Data (например, LibraryOfRuina_Data).
    4. Filter Type → выбираем нужные ассеты. Если каких-то ассетов нет, не пугайтесь и пока не обращайте внимания:
      • AudioClip — звуки, музыка,
      • Font — шрифты,
      • TextAsset — диалоги, описания и другие тексты,
      • Texture2D (не путать со Sprite) — Изображения.
    5. ExportFiltered Assets.
    6. Выбираем папку, куда будут выгружены ассеты. Например, если вы выберете «Рабочий стол», то структура файлов будет такая:
      • Рабочий стол:
        • Название игры (например, LibraryOfRuina):
          • AudioClip,
          • Font,
          • TextAsset,
          • Texture2D.

    Изображения [ ]

    Среди файлов могут быть дубликаты с припиской #301, #4241 и т.д. Чтобы не раздражали, можно удалить их батником:

    1. Создаём текстовый файл с названием «___УДАЛЕНИЕ ДУБЛИКАТОВ».
    2. Записываем в него строку: del /f /q «%cd%\* #*.png» .
    3. Меняем расширение файла на .bat.
    4. Переносим файл в папку с изображениями и кликаем по нему два раза.

    Этот батник можно использовать повторно сколько угодно раз.

    Обычно названия изображений редко совпадают с названиями в игре. Искать среди тысячи спрайтов нужный в таком виде неудобно. Поэтому теперь придётся вручную отсортировать их все по разным папкам.

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

    • Characters,
    • Items:
      • Armor,
      • Weapons,
      • Artefacts,

      Если игра обновилась, то новые изображения можно легко отделить следующим способом:

      1. Создаём папку и копируем в неё все старые изображения.
      2. Экспортируем изображения из новой версии игры во вторую папку.
      3. Содержимое первой папки копируем во вторую с заменой.
      4. Если всё сделано правильно, все старые файлы выделятся. Нажимаем ⇧ Shift + Delete .
      5. Удаляем файлы-дубликаты с припиской типа #424531.

      Звуки [ ]

      В случае небольших игр все звуки можно достать с помощью AssetStudio.

      В более крупных проектах звуки обычно хранятся в формате .bank:

      1. Открываем папку название_игры_DataStreamingAssets. Смотрим, есть ли файлы формата .bank.
      2. Если есть, качаем Fmod Bank Tools.
      3. Запускаем программу.
      4. В настройках выбираем нужный формат (по умолчанию экспортируется в .waw).
        • .wav: весит много. В сумме все файлы могут весить 10 ГБ и больше,
        • .mp3 (рекомендуется): весит в разы меньше, но качество звука незначительно хуже.
      5. Указываем папку StreamingAssets и папку экспорта.
      6. Экспортируем. В одном .bank-файле обычно лежит сразу группа звуков. Программа автоматически создаст папки для каждой.

      Шрифты [ ]

      Многие игры используют шрифты типа TextMesh Pro. Это когда шрифт по сути состоит из спрайтов. Я не нашёл способов преобразовать его в обычный шрифт или хотя бы использовать в фотошопе. Если у вас есть информация как это сделать, свяжитесь со мной на сервере Discord.

      Диалоги и другие текстовые файлы [ ]

      Аналогично звукам, тексты разработчики организуют огромным количеством вариантов.

      Важно! Текстовые файлы могут быть очень большими, поэтому открывать их следует только в простых текстовых редакторах (Блокнот, Notepad++ и т.п.).

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

      Вариант №1 — папка с игрой [ ]

      Бывает, что создатели просто создают отдельную папку с файлами формата .xml. Попробуйте поискать её.

      Вариант №2 — текстовые файлы [ ]

      В AssetStudioGUI во вкладке Filter Type может быть ассет типа TextAsset (если его нет, переходите к следующему варианту). Выбираете его, не забыв снять галочку с других типов, и экспортируете файлы.

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

      Вариант №3 — Articy:draft 3 [ ]

      Если диалоговая система в игре создана с помощью Articy:draft 3, то, скорее всего, подойдёт этот способ (к таким играм относится Disco Elysium):

      1. Открываем ассеты игры через AssetStudioGUI
      2. Нажимаем на вкладку Filter TypeMonoBehaviour
      3. Сортируем ассеты по размеру файла
      4. Экспортируем файлы DialoguesLockitRussian и GeneralLockitRussian (возможны другие названия)
      5. Открываем файлы в текстовом редакторе

      Файл будет выглядеть примерно так:

      < "m_GameObject": < "m_FileID": 0, "m_PathID": 0 >, "m_Enabled": 1, "m_Script": < "m_FileID": 0, "m_PathID": -7816424887579163056 >, "m_Name": "DialoguesLockitRussian", "mSource": < "UserAgreesToHaveItOnTheScene": 0, "UserAgreesToHaveItInsideThePluginsFolder": 0, "GoogleLiveSyncIsUptoDate": 1, "mTerms": [ < "Term": "Alternate1/0x010000060001344E", "TermType": 0, "Languages": [ "«Пока это все, что я могу сказать, торговка книгами». [Уйти.]" ], "Flags": [ 0 ], "Languages_Touch": [] >, < "Term": "Alternate1/0x01000006000149B2", "TermType": 0, "Languages": [ "Кроме того, есть еще церковь. Ты смотришь на поднимающуюся к небу колокольню — смотришь на восток и вспоминаешь, что там ты уже искал. И не нашел ни следа Руби." ], "Flags": [ 0 ], "Languages_Touch": [] >, < "Term": "Alternate1/0x01000006000149C0", "TermType": 0, "Languages": [ "Что в этом сложного? Тебе сказали, что она где-то к северу от деревни, а ты находишься на полуострове. На запад отсюда расположились криптозоологи. Если присоединишься к ним, получишь отличный предлог, чтобы исследовать это место." ], "Flags": [ 0 ], "Languages_Touch": [] >. ], "CaseInsensitiveTerms": 0, "OnMissingTranslation": 1, "mTerm_AppName": "", "mLanguages": [ < "Name": "Russian", "Code": "ru", "Flags": 0 >], "IgnoreDeviceLanguage": 0, "_AllowUnloadingLanguages": 0, "Google_WebServiceURL": "", "Google_SpreadsheetKey": "", "Google_SpreadsheetName": "", "Google_LastUpdatedVersion": "", "GoogleUpdateFrequency": 3, "GoogleInEditorCheckFrequency": 2, "GoogleUpdateSynchronization": 1, "GoogleUpdateDelay": 0.0, "Assets": [] > >

      Чтобы повысить читаемость и снизить вес файла, необходимо убрать всё лишнее. Замечаем, что многие участки повторяются. Последовательно выделяем участки и заменяем их на пробелы функцией Заменить все:

      , "TermType": 0, "Languages": [
      ], "Flags": [ 0 ], "Languages_Touch": [] >, 
      
      "Term":

      Затем убираем лишние куски в начале и в конце файла. В итоге должно получиться вот так:

      "Alternate1/0x010000060001344E", "«Пока это все, что я могу сказать, торговка книгами». [Уйти.]" "Alternate1/0x01000006000149B2", "Кроме того, есть еще церковь. Ты смотришь на поднимающуюся к небу колокольню — смотришь на восток и вспоминаешь, что там ты уже искал. И не нашел ни следа Руби." "Alternate1/0x01000006000149C0", "Что в этом сложного? Тебе сказали, что она где-то к северу от деревни, а ты находишься на полуострове. На запад отсюда расположились криптозоологи. Если присоединишься к ним, получишь отличный предлог, чтобы исследовать это место." .

      Вариант №4 — I2 Localization [ ]

      Если диалоговая система в игре создана с помощью плагина I2 Localization, то, скорее всего, подойдёт этот способ (к таким играм относится Hell is Others):

      1. Открываем ассеты игры через AssetStudioGUI
      2. Нажимаем на вкладку Filter TypeMonoBehaviour
      3. Сортируем ассеты по размеру файла
      4. Находим файл I2Languages, выделяем, нажимаем на вкладку ExportRawSelected assets
      5. Открываем получившийся файл в Notepad++
      6. Видим, что все нелатинские символы имеют неправильную кодировку. Нажимаем на вкладку КодировкиКодировкиКириллицаWindows-1251 , а затем КодировкиПреобразовать в UTF-8 . Сохраняем
      7. Открываем файл I2Languages.dat.bak, меняем кодировку на UTF-8. Теперь символы должны отображаться верно. Выделяем весь текст ( Ctrl + A ), копируем в текстовый файл

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

      Характеристики объектов [ ]

      Это тема, пожалуй, самая сложная. Она требует усидчивости и вдумчивости, если никто до вас этим ещё не занимался. А ещё желательно знание языков программирования.

      Вариант №1 — папка с игрой [ ]

      Мало вероятно, но создатели могут просто создать отдельную папку с файлами характеристик. Попробуйте поискать её.

      Вариант №2 — файлы MonoBehaviour [ ]

      Ассеты Unity 1

      Немного теории (возможно я опишу что-то некорректно, но суть вы должны уловить): особенность Unity заключается в том, что большинство скриптов для объектов делаются с добавлением класса MonoBehaviour. В этот класс можно добавлять различные переменные, в том числе и игровые характеристики объекта.

      Например, для персонажа игрока можно создать скрипт, в который будут вписаны его ХП, выносливость, скорость передвижения и т.д. (см. изображение) Аналогично работают предметы, враги и NPC.

      Часто, чтобы упростить код, в эти переменные могут записываться другие скрипты чисто с переменными для каждого отдельного объекта (т.н. ScriptableObject). Например, скрипт «Weapon : MonoBehaviour» может содержать поле «Data», в который можно засунуть скрипт «WeaponData : ScriptableObject» с параметрами урона, количества патронов и др. Таким образом, чтобы сделать пистолет, дробовик и снайперскую винтовку, разработчику достаточно просто поменять значения характеристик и сохранить получившийся объект в качестве префаба.

      Теперь, зная это, мы понимаем, что чтобы получить параметры, нам нужно вытащить из игры ассеты типа MonoBehaviour и структурировать их в удобоваримый вид. Для этого подойдёт уже знакомый AssetStudioGUI.

      Далее рассмотрим процесс на конкретном примере: игре Hell is Others.

      Можно ли достать что-то ещё? [ ]

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

      Примечания [ ]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *