Создание 3Д моделей при помощи нейросетей. 3Ds Max + tydiffusion

В статье рассказано как получить такие модели при помощи нейросетей:

Статья является результатом личных экспериментов, и помощи 3д сообщества. Огромное спасибо всем причастным.

Увеличение интереса к генерации контролируемого 3д увеличилось связи с выходом tydiffusion - расширения для 3ds max, позволяющее просто использовать нейросеть stable diffusion внутри программы, и с вменяемым интерфейсом. Это ключевой фактор. Всё, что сложнее 2 минут на освоение - не усваивается любителями, и продолжающими.

Я провел серию экспериментов, для понимания, как это решение может быть использовано в реальных задачах. Меня, в первую очередь, интересует генерация моделей в полуавтоматическом режиме. Это позволит быстро генерировать декор/детали в интерьерных задачах, драфт модели для композиций в медиа проектах, и "3д задники" для продуктовых задач (маркетплейсы, производственники)

Софт который необходим для работы с данным решением: 3ds max (2019-2025) и бесплатный плагин tydiffusion (существует и платная версия, но для личного пользования за глаза и бесплатной).

Установка tydiffusion производится путем перетаскивания вашей версии плагина в папку plugins в 3ds max:

При первом запуске необходимо установить все необходимые компоненты для работы плагина. Внимание! Компоненты легко могут занимать 20-30 Гб (и докачиваться в процессе освоения), так что выберите диск с нужным количеством места. Установка, и ее опции доступны в левой вкладке внутри плагина:

Внимание. Удостоверьтесь что для скачивания доп. модулей (Модели, LoRA, CtrlNet) выбраны диски с достаточным количеством места. Там 2,5,8 Гб за элемент это норма.

Процесс установки легко может занять часы (в основном это скачивание данных), так что запаситесь терпением.

В этой статье я не вижу смысла расписывать все вкладки и возможности tydiffusion. Моя цель показать именно генерацию контролируемого 3д. Но если коротко - tydiffusion позволяет обращаться к возможностям stable diffusion непосредственно из среды 3ds max. Доступен весь функционал данной нейросети, и доп. модулей.

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

Первый пример - сложенное полотенце. Делаем геометрию:

Затем применяем к геометрии модификатор tydiffusiontexgen - это самая важная часть процесса.

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

Внутри модификатора нам доступны несколько видов развертки объекта (Можно так же использовать и свою развертку, что позволит контролировать швы при сложных генерациях)

При помощи кнопок создания точек для проецирования, мы создаем несколько таких точек, желательно с взаимным перекрытием процентов на 30% (обычно это 6-8 точек по радиусу вокруг объекта). 

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

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

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

Модель после генерации я обычно копирую при помощи edit - snapshot. После этого модель можно использовать так, как вам нужно. Текстуру, полученную сохранением (см. картинку ниже) можно использовать в любом удобном движке, с материалами которые вам привычны.

Сами текстуры вызывают вопросики, но если вы будете использовать свою развертку при проецировании, то можно даже говорить о возможности редактирования текстур. Для той части модели что не была "покрыта" при проецировании, текстуры будут наложены максимально криво.

Понятно, что для улучшения результатов нужно генерировать пакет вспомогательных текстур, например, через pixplant

Что имеем в сухом остатке? Возможность получения 3д моделей для средних и дальних планов, декора, деталей и проч. Генерация реально занимает секунды в разрешении 512/1024, а этого вполне хватит для рутины.

Безусловно, способ имеет много ограничений и нюансов. Но это уже полноценный подход для поточного производства моделей, или, его ускорения. Лично для себя я вижу огромные горизонты в связке с лепкой в zbrush, или дорисовывания в Substance painter.

Но и без этого, для тех у кого совсем туго с моделлингом и материалами, получать подобные модели - подарок. Особенно, если мы говорим о генерации под ракурс, где прожекторов модет быть 2-3, чисто под половинку модели. 

Например, сделать на кухню вазочку с яблоками займет 2-3 минуты.

Или драфт ассета, для понимания цветов или композиции. 

Причем, стилевые или цветовые вариации полностью под вашим контролем.

Надеюсь данная статья поможет кому-то увидеть практическое применение нейросетей в своей работе, а не только "баловства" без результата.

Всем благ.

Комментарии (27)

+3
TechChromer
По тонкому льду ходим. Сразу после Paz'a выпускать пост о том, как текстурировать с помощью нейросети)
Статья огонь, может в будущем это действительно будет упрощать работу))
+1
paz
Все правильно, по тонкому льду! Меня боялся даже сам Флинт!)
Ну, а если серьезно. Пробовали, делали... ну поиграться можно. Для стоков это пока не подходит. Можно не напрягаться, просто доп. инструмент для каких-то юниорских проектов. Но я пока в своих работах применения найти не могу. Посмотрим лет через 5. О чем говорить, если даже скаттер на основе нейронки пока не подвезли нормальный для пипла. Казалось бы просто распределение...
Я не знаю куда разрабы форестпака смотрят.
Хотя я вот недавно делал ролик, перса сгенерил, анимацию сделал. Нужно выложить. Для пластилинового мира самое оно..

Вот мне сейчас нужны люди конца 19, начала 20 века. Есть одна идея. Городские жители, чтоб анимация, риг был. И? Одно расстройство с этой вашей нейронкой...
0
paz
По поводу моего недавнего видео, я тему нейронки не затронул в Substance 3D Sampler. Туда нейронку уже подвезли, но нужна лицензия для этого.
+6
Yehat
"Первый пример - сложенное полотенце. Делаем геометрию."

Э, так не пойдёт! Пусть сама делает.

Статью бы переименовать: не "Создание 3Д моделей при помощи нейросетей." а "Текстурирование готовых моделей при помощи нейросетей".
Я то зашёл сюда, думал всё, приплыли.
0
olegen
За моделью генерится рисунок того что написал в промте,а сама модель никак не изменяется.Хотя несколько дней назад все получалось.В чем может быть причина?
0
Medonozza
Уточню. Модель выбрана? И еще проверь что контроль идет по геометрии, мб перещелкнул
0
olegen
Модель выбрана.И как понять что контроль по геометрии?
0
Medonozza
На подвкладке ControlNET в Generate проверь галку напротив Depth, и чтобы там контролирующая модель была корректная
0
olegen
Проверял,что с нажатой галкой что нет один результат.Не пойму в чем дело,на прошлой неделе все работало.
0
Medonozza
Гадать по тексту долгая затея. Сбрось в tydiffusion настройки генерации по кнопке снизу. Ну и по классике, сделай новую сцену с простым запросом. Это позволит понять в чем проблема.
0
olegen
Попробую вечером.На кубиках.
0
olegen
C cовершенно новой сценой вышло.Со старой с идентичными настройками нет почему то.Какой то глюк.
0
olegen
Запустить запустил,но на каждый прожектор программа рендерит свою картинку мало связанную с соседними.Если например яблоко,то с каждой стороны рендерится по ножке на которой висит яблоко и границы вообще никак не дружат.Вопрос как вы решили эту проблему?
0
Medonozza
Перекрытием прожекторов, выбором характерных ракурсов, настройкой маски инпейнта
0
46165957
Во вьюпорте вверху, кнопки отображения результата.
Display mode > move result to background и там же Result (projected) - поиграйте с галочками
-1
chernov_renders
пока нейронка выглядит как кал
+1
cherkio
тут просто пример ,ну мягко говоря не фонтан.
0
ck_petya
А ссылку на "фонтан" вы естественно скинете?
0
46165957
Так речь то не о нейронке, а о плаге, который автоматизирует то, что раньше приходилось делать ручками...
Подбирайте нужную модель, подкидывайте нужные лоры и генерите не кал.. в чем проблема то?
+1
sofiakholina
Спасибо за статью!) Интересно было поглядеть как оно работает)

"Это позволит быстро генерировать декор/детали в интерьерных задачах, драфт модели для композиций в медиа проектах, и "3д задники" для продуктовых задач (маркетплейсы, производственники)"

- вот это вы очень точно подметили! И это супер сработает думаю. Сама с такими задачами сталкивалась и не всегда бэк в виде фото подходит) А здесь такой некий гибрид, само то
0
klizma2000
"Можно так же использовать и свою развертку" -при использовании своей развертки модификатор TyDiffusionTexGen рандомно размещает острова развертки. Там три алгоритма- EOBBP XATLAS и Pack Existing. Первые два -создается новая авторазвертка. Последний- сохраняет существующую развертку, но рандомно размещает острова развертки. Были в одном положении острова-стали в другом. Размеры островов не изменяет, просто располагает их рандомно. Решения этому вопросу так и не нашел, просто использую новую развертку которая создалась в модификаторе TyDiffusionTexGen .
0
Medonozza
Я тоже не нашел. Использую ту что он генерит.
0
klizma2000
у меня та же проблема что выше писали- на каждый ракурс генерится картинка мало связаная с соседними. Можете скинуть файлом свои настройки в XML?
0
Medonozza
Если файл сохранился - скину в ЛС
0
monah62rus
Вы ставили на чистую?? Просто у меня стоит уже комфи и чет второй раз заряжать дупелет на десяток гигов такое себе меропирятие, можно как то поставить на уже существующий?!
0
Medonozza
Ставил на чистую
0
Free19_2
Подскажите плиз!! Каждый раз когда пытаюсь сохранить сгенерированную картинку макс вылетает с ошибкой "An error has occured and the application will now ciose"