Что можно доставать из Unity? 3D модели, PDF, XLS, CAD?
Существует редактор персонажей или предметов, Сделанный на Unity, то есть запускаем игру, и создаем какого нибудь персонажа предоставленными инструментами. Или какую-то конструкцию. Можем ли мы Экспортировать эту модель в «какой-то» формат прямо из игры? Будь то .max .obj .dwg ? То есть перенос модели из Unity в 3dMax . Более развернутая форма вопроса: Я хочу построить редактор для каких-то типичных моделей. Допустим я занимаюсь проектировкой заборов, или окон, Входные данные у меня ширина и высота забора или окна, беру я значит и рисую в AutoCad модель окна и вганяю ее в размер, ставлю два линейных размера и формирую чертежи. Можно ли на движке Unity построить простенький редактор, каких-то типовых конструкций? И что меня больше всего интересует реально ли вынуть оттуда 3d модели нарисованные в нем же? Можно ли в нем какой-то PDF формировать?
Отслеживать
задан 16 авг 2021 в 18:01
Дмитрий Киров Дмитрий Киров
Как достать модели из игры на 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. У нас появляется вот такое окно.
Настраиваем. Вверху указываем путь к игре, из которой будем дергать модель. (я выбрал orcs must die). Ставим галочки как на скриншоте. Можно поставить также Force windowed mode, если хотите, чтобы игра запустилась в оконном режиме. Внизу три пути указывают, куда будет сохраняться модель, текстуры и тени. Оставляем по умолчанию, чтоб потом не запутаться.
5) Приступаем к извлечению модели из игры. С молитвами и надеждой жмем на Launch. Запускается игра. В левом углу у нас должна присутствовать желтая надпись. Вот такая.
Мы находим нужную модель в игре и жмем F12. При нажатии в левом углу ненадолго появится красная надпись, значит все по плану, модель сохранилась. Теперь можно выходить из игры. Лично я собирался вытащить модель арбалета, но в данном случае буду вытаскивать арбалет вместе с персонажем, чтоб было нагляднее.
6) Теперь наша 3D модель персонажа выдернута из игры. Запускаем 3ds max. Нажимаем File – Import и находим нашу сохраненную модель в \Documents\3DReaperDX\Frames. Открываем ее и видим окошко, в котором нам следует выбрать Recommended Values, в противном случае модель может сплющиться.
Нажимаем ок и в результате перед нами предстает нечто подобное.
В большинстве случаев тут вообще творится хаос, так как программа, помимо нужной нам модели, выдергивает все подряд. Как правило, все, что есть на уровне. Но это не беда. Мы нажимаем на любое окошко и колесиком мышки приближаем. В основном, при приближении, мы уже можем различить нашу модель. Мы выделяем ее, нажимаем CTRL + I, а затем DELETE. Остается только нужная нам модель. При желании, вы можете удалить ненужные элементы и вручную, это тоже быстро. Вот что осталось у меня.
Теперь мы экспортируем модель из игры, нажав на File — Export и сохраняем в укромное местечко (на ваш выбор), с расширением 3ds. Кстати, если вам не нужны текстуры, то есть подойдет просто белая модель, то сохраняете ее в расширении obj. и сразу можете открывать в pepakura designer.
7. Теперь нам нужно наложить текстуры. Мы идем в \Documents\3DReaperDX\Textures и копируем все файлы оттуда в наше укромное местечко, в котором мы сохраняли модель в формате 3ds.
7.1 Теперь запускаем Deep Exploration. В левом окне, там, где папки, находим нашу модель (она в том самом укромном местечке). И нажимаем на название модели в формате 3ds. Должно быть что-то наподобие такого.
Модель может быть прозрачной, но это ничего страшного, нам главное здесь текстуры. Теперь нажимаем на File – Save as и сохраняем с расширением obj.
8. Теперь заходим в Pepakura Designer и открываем нашу импортированную модель (файл с расширением obj). Если вся модель черная, текстуры не отображаются, то в именах папок на пути к файлу имеются русские буквы. Надо чтоб файл obj с bmp — шными текстурами имел путь только из анлийских названий, ничего русского. Тогда все нормально отобразится. Теперь можем шаманить, разворачивать, вертеть, крутить — в общем делать все что душе угодно с вашей моделью уже в пепакуре.
Когда вы закончите шаманить с вашей моделью, нажмете сохранить, и она уже сохранится в привычном нам формате 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 открываю, всё корректно отображается, но после калибровки ориентации модели текстуры напрочь пропадают, остается один белый каркас. С ним можно работать, но текстуры очень нужны в развертке. Если калибровку не делать, то текстуры остаются, но вращать модель становится просто ужасно.Подскажите, пожалуйста, решение проблемы=) 10
3
finger1610 (3 comments) 15.11.2016 в 19:50
Случайно нашел решение: баг самой Pepakura Designer. При начале калибровки ориентации модели откатиться в самое начало калибровки и текстуры встают на место=) 7
3
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.
И я не понимаю что мне делать.
При открытии скаченных моделей такая ошибка не выскакивает. Только на созданных самой. 9
5
Sergeich (10 comments) 30.11.2016 в 17:08
Ничего не пойму, все программы требуют ключи и пароли,где их взять?
Воу, горячий коммент, что думаете: 73
15
Егорыч (1 comments) 04.11.2021 в 22:39
чел, если открыть архив, то в описании виден пароль: ripper 4
0
Иван (16 comments) 30.11.2021 в 19:46
Спасибо за хороший обзор! 1
0
Юный Лорд (2 comments) 19.12.2021 в 17:17
А если я хочу вытащить модель из Nintendo Wii игры, открытой через эмулятор на ПК, у меня получится по вашей схеме? Если нет, то жаль… 0
0
Papercraft (1447 comments) 19.12.2021 в 21:49
К сожалению, через эмулятор не получится 1
1
Кики (1 comments) 21.02.2022 в 15:05
Вопрос: игра в стиме. Не все игры имеют лаунчер на компьютере, а ярлыки ссылаются на стим. Тем не менее, я нашла лаунчер-файл в папках, который прекрасно запускает игру. Однако рипер отказывается с ним работать. В чем проблема? 5
1
Импорт 3D-моделей в Unity и подводные камни
В мире компьютерной графики существует множество форматов представления 3D-моделей. Некоторые из них позиционируются как универсальные, другие — как оптимизированные под конкретные задачи или платформы. В любой сфере мечтают работать с универсальным форматом, но реальность говорит нам «нет». Более того, из-за такого зоопарка получается порочный круг: разработчики «универсальных» инструментов придумывают свои внутренние форматы для обобщения предыдущих, увеличивая популяцию и плодя средства преобразования форматов. Так появляется проблема потери или искажения данных при конвертации. Проблема стара как мир (мир IT, конечно), и она не обошла стороной импорт моделей в Unity.
В этой статье мы расскажем о некоторых трудностях, с которыми приходится сталкиваться при работе с моделями в Unity (особенности функционирования ModelImporter, разница представлений 3D-объектов и др.), а также о том, какие инструменты мы создали, чтобы эти трудности преодолеть.
Особенности работы ModelImporter
Напомним, что для API видеокарт минимальный и единственный трехмерный примитив — это треугольник, в то время как геометрия в FBX, например, может быть представлена в виде четырехугольников. Современные 3D-пакеты для создания моделей, как правило, допускают различные уровни абстракции, но и там рендер результата происходит посредством треугольников.
При этом многие инструменты заточены на работу именно с четырехугольниками, что подталкивает 3D-художников использовать этот примитив как основной. В таких случаях в ТЗ часто требуется триангулировать модель перед внедрением. Если триангуляцию не сделали, соответствующий модуль Unity в стандартном режиме выполняет ее автоматически при добавлении файла. Из-за этого появляются ошибки, поскольку алгоритмы триангуляции в разных пакетах реализованы по-разному. При выборе диагонали для разбиения четырехугольника возникает неоднозначность, отсюда большинство проблем, которые можно разделить на две группы.
Первая связана с корректностью отображения формы модели. Так, форма непланарного четырехугольника напрямую зависит от выбора диагонали.
Сюзанна, триангулированная в Blender (Quad Method: Beauty) и в Unity (автоматически при импорте)
Кроме того, алгоритм запекания карты нормалей использует данные о разбиении, из-за чего разница в триангуляции может порождать артефакты в виде креста на блике.
Самокат здорового человека и самокат курильщика
Проблемы второй группы встречаются в текстурной развертке. Например, у нас есть четырехугольник с достаточно тупым для возникновения ошибки углом. При предварительном просмотре в 3D-пакете он разбивается одной из диагоналей на два вполне себе складных треугольника.
Исходный полигон
Полигон, триангулированный в Blender
Однако после импорта в проект обнаруживается, что этот четырехугольник разбит другой диагональю и что один из треугольников либо вообще вырожден, либо близок к тому.
Полигон в Unity с треугольником, близким к вырожденному (правый треугольник практически неотличим от отрезка)
Причиной проблем, связанных с вырожденностью полигонов, являются погрешности в вычислениях с плавающей запятой, а также особенности пиксельной интерполяции при рендеринге. С такими треугольниками происходит черт-те что: они дергаются, каждый кадр меняют цвет. Крайне малая величина поперечного сечения создает сложности при обработке света, из-за чего части динамических объектов могут мерцать. Да и в недетерминированности запекания карты освещения тоже нет ничего хорошего.
Я 3D-пакет, я так вижу
В 3D-моделировании часто возникает разница между фактическим количеством вершин и их количеством в 3D-пакете. Суть проблемы заключается в информации, которая требуется для обработки видеокартой. Структура данных для вершины предопределена и включает в себя позицию, нормаль, касательную, координаты текстурной развертки на каждый канал и цвет. То есть в одну вершину две нормали не запихнуть.
Для некоторых художников же не всегда очевидно, что вершина определяется не только своей позицией. Моделлеры прекрасно знают понятия Hard/Soft Edges и UV Seams, но не все осознают, каким образом они реализованы программно. Дополнительно сбивают с толку 3D-пакеты, которые в стандартном режиме показывают количество вершин как количество уникальных позиций.
Так, обычный примитив Cube геометрически представим 8 вершинами. Однако чтобы корректно передать отражение света от каждой грани и правильно наложить текстуру, в каждом углу куба необходимо по 3 вершины с одинаковой позицией, но разными нормалями и текстурными координатами, поскольку в каждом из углов сходится по 3 ребра. Этому моменту посвятили небольшой блок документации. Там же можно посмотреть примеры.
Метрики куба в Blender
Метрики куба в Unity
Хватит это терпеть!
Столкнувшись с этими и подобными проблемами, мы решили создать инструмент анализа и валидации моделей при импорте в проект Unity. Иначе говоря, кастомный валидатор, который на запрос «Ешь!» ответит: «Не буду! Переделывай», — или выплюнет наборы предупреждений и значений различных параметров, оповещая о том, что ему что-то невкусно.
Для анализа и проверки мы разработали следующий функционал:
- подсчет количества уникальных позиций вершин, раскрашенных вершин, Hard Edges, UV Seams;
- расчет Axis-Aligned Bounding Box (AABB) и его центра;
- определение выхода значений координат UV-развертки за диапазон 0.0–1.0;
- определение наложений в текстурной развертке;
- проверка текстурной развертки на достаточность заданного пиксельного отступа при заданном разрешении текстуры.
Подсчеты количества уникальных позиций вершин, Hard Edges, UV Seams и раскрашенных вершин — необходимы для проверки соответствия задуманной художником модели той, что была импортирована в Unity. Этот функционал также позволяет следить за соблюдением требований к оптимизации модели (например, чтобы количество вершин не превышало определенное значение). Из-за все той же особенности 3D-пакетов, которые показывают по факту количество уникальных позиций, бывают случаи, когда метрика числа вершин в редакторе моделей удовлетворяет этому ограничению, однако после внесения файла в проект может оказаться, что это не так.
Вычисление AABB и его центра — позволяет определить смещение модели относительно начала ее собственной системы координат. Это необходимо для предсказуемого позиционирования ассетов, которые инициализируются в сцене уже во время работы приложения. Так, AABB здания по-хорошему должен иметь minY = 0, а какой-нибудь люстры, которая крепится к потолку — maxY = 0.
Выход координат вершин UV-развертки за диапазон 0.0–1.0 — в большинстве случаев (например, если текстура должна тайлиться на модели) предусмотрен. Часто такой подход используется для представления в сцене множества низкодетализированных мелких объектов (растительности) и/или находящихся вдалеке, а также замощения больших однородных объектов (зданий). В случае тайлинга значениям координат конкретного UV-канала просто обрезают целую часть на уровне шейдера, если Wrap Mode текстуры установлен в Repeat.
Представьте теперь, что вы уложили текстуру в атлас (и накрыли одеялком :3). В шейдер будут приходить уже преобразованные координаты, соответствующие атласу (x * масштаб + смещение). Никакой целой части на этот раз вероятнее всего уже не будет и обрезать будет нечего, а модель залезет на чужую текстуру (одеялко оказалось маленьким). Эта проблема решается двумя способами.
Первый предполагает, что вы заранее обрежете целую часть у координат развертки. В этом случае появляется вероятность взаимоналожения полигонов, о чем мы поговорим ниже.
Второй основывается на том, что тайлинг текстур по своей сути — это метод оптимизации. Вам же никто не запрещает увеличить размер и просэмплировать нужный кусок на всю модель. Однако таким образом полезное пространство атласа будет использовано неэффективно.
Наложения в текстурной развертке — тоже чаще всего не случайны: они нужны, чтобы эффективно использовать площади текстуры. Бывает, что ошибку совершает новичок, старший товарищ это видит, произносит крепкое словцо и новичок больше так не делает. Но бывает, что наложение настолько мелкое и находится в настолько неожиданном месте, что и старший товарищ может его не заметить.
В опытном коллективе незамеченные на базовой развертке ошибки попадают в проект чуть чаще, чем никогда. Другое дело, когда меняются условия использования уже готового контента.
Пример. Мы работали с набором моделей для динамических объектов в игре. Поскольку не было задачи запечь для них свет, в UV-развертке допускались наложения.
Пример базовой UV-развертки с наложениями (показаны красным)
Однако затем мы решили не использовать эти модели как динамические, а расставлять их в качестве статичного декора на уровне. Для оптимизации, как известно, освещение статических объектов в сцене запекают в специальный атлас. Отдельного UV2-канала для карты освещения у этих моделей не было, а качество работы автоматического генератора в Unity нас не устраивало, поэтому мы решили как можно чаще использовать базовую текстурную развертку для запекания.
Здесь и возникли явные проблемы с корректностью освещения. Очевидно, что лучи, попадающие какой-нибудь статуе в глаз, не должны создавать блики на пятой точке на затылке.
Некорректно запеченное освещение модели (слева) и исправленное (справа)
Unity при формировании карты освещения в первую очередь пытается использовать UV2-канал. Если он пустой, то используется основной UV, если и этот пуст, то извините, нате вам исключение. Запечь модели в карту освещения без предварительно подготовленного UV2 в Unity можно двумя способами.
В качестве первого Unity предлагает автоматическую генерацию UV2 на основе геометрии модели. Это быстрее, чем делать вручную, к тому же данный инструмент можно настраивать с помощью нескольких параметров. Но даже несмотря на это, итоговое наложение светотени часто неудовлетворительно для высокодетализированных объектов из-за швов и затеканий в неположенных местах, к тому же упаковка частей такой развертки не самая эффективная.
Второй способ — использовать базовую UV-развертку для запекания. Очень даже привлекательный вариант, поскольку при работе с одной текстурной разверткой меньше вероятность совершить ошибку, чем при работе с двумя. По этой причине мы стараемся минимизировать количество моделей, в базовой UV которых присутствуют наложения. Созданный инструментарий помогает нам это осуществлять.
Проверка текстурной развертки на достаточность заданного пиксельного отступа при заданном разрешении текстуры — более точная валидация UV, основанная на растеризации. Подробнее об этом методе будет рассказано в следующей статье серии.
Подведем итог. Конечно, практически невозможно отследить все нюансы: иногда приходится мириться с несовершенством результата, чтобы выполнить задачу в срок. Однако выявление даже части таких недочетов позволяет ускорить разработку проекта и повысить его качество.
- Блог компании Plarium
- Работа с 3D-графикой
- Разработка игр
- Unity
Программа для извлечения моделей из игры на движке юнити, для юнити 3D
Ищу такую программу, которая может мне из онлайн игры, написанной на движке юнити, вытащить модели персонажей и оружия для Юнити3D. ПОказалась задача простой пока не столкнулся с некоторыми программами, которые просто не видят таковые файлы. Игра скачана простым клиентом и точно знаю, что там где то файлы эти и лежат. Не подскажете наличие таковых программ?
Голосование за лучший ответ
Не совсем простая задача из разряда геймхакинга, тут надо копать в сторону устройства движка, смотреть как он работает с игравыими ресурсами.
Также разрабы часто любят паковать ресурсы самописными или платными пакерами/шифровщиками.
Есть специальные программы расчитанные на множество игр
(извлекатели ресурсов/resurce extractor), но они работают только в примитивных ситуациях, также могут помочь декомпиляторы C#, для вскрытия игрового кода, из него можно узнать как игра взаимодействует с ресурсами, откуда берёт, как обрабатывает.
Вот есть довольно неплохая статья на хабре:
https://habr.com/ru/post/266345/
Специально для игр написанных на Unity не знаю, но на modgames имеется программа Ninja ripper, которая предназначена цитирую — «для извлечения 3D моделей (мешей), текстур из игр».
Так как тема опубликована в 2015 году, я очень сомневаюсь, что стоит качать именно от туда. Но хотя бы можно прочесть описание и инструкцию по использованию.