[Перевод] Моделируем 3D-персонажа для игры при помощи Midjourney

image


На примере любопытного небольшого прототипа я захотел проверить, сколько труда потребуется при использовании ИИ для создания максимально возможного количества графики 2,5D-игры в жанре point and click.

Было понятно, что искусственный интеллект без проблем справится с задниками, поскольку игра, фактически, остаётся по большей мере в 2D, но с персонажами ситуация чуть более сложная. Мне понадобится крайне быстрый конвейер работы, позволяющий использовать данные захвата движения, поэтому создание анимаций не окажется узким местом. Я должен был найти способ перенести сгенерированную ИИ графику в форму, которая приемлема для захвата движения.

Мне показалось, что лучше всего будет сгенерировать концепты персонажей при помощи ИИ, а затем смоделировать их в 3D.

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

Создание промпта


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

image.png


cyberpunk point and click adventure game character model sheet turnaround –v 4 –ar 3:2

Первый результат оказался очень многообещающим. Естественно, он мне не подходил, потому что был чёрно-белым, но такими и рисуют обычно листы моделей. Я попытаюсь не использовать в качестве референсов работы живых (или мёртвых) художников. Однако, работая с ИИ, невозможно отказаться от влияния множества разных художников. Поэтому мне приходилось лишь надеяться, что стиль будет очень размытым и не окажется слишком похожим на чьи-то конкретные работы.

image-2.png


cyberpunk point and click adventure game character model sheet turnaround full color –v 4 –ar 3:2

Вторая попытка тоже была не блестящей. Однако это уже шаг в нужном направлении.

После ряда экспериментов я получил промпт, который создавал графику, которую я мог использовать в качестве основы для перехода к 3D:

image-13.png


image-12.png


image-11.png


image-10.png


image-9.png


image-8.png


image-7.png


image-6.png


image-5.png


image-4.png


image-3.png


cyberpunk point and click adventure game character, full body, model sheet turnaround, full color, two thirds wiew, front::4 view and back view –v 4 –ar 3:2

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

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

Моделирование


Я выбрал созданное ИИ изображение с хорошим видом спереди и сбоку, но с проблемным видом сзади в три четверти. Мне придётся решить эту проблему и посмотреть, как она повлияет на результат. Можно ли вообще извлечь из этой графики текстуры для готовой модели?

Character_01_Turnaround_front.png


Character_01_Turnaround_side.png


Character_01_Turnaround_back-side.png


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

modo_j66EXpnDAa.png


modo_3S2POnZDn7.png


Чтобы решить эту проблему, я создал карты морфинга (morph map) для каждой проекции, сделав так, чтобы вид спереди, сбоку и сзади максимально близко соответствовали мешу.

modo_2WEmonbbak.png


Передняя проекция

modo_8GajTecf4Y.png


Боковая проекция

modo_Y8s2gLytW9.png


Задняя проекция в три четверти

Далее мне нужно было создать старую добрую UV-развёртку меша. Это долгий и монотонный процесс, но его нужно сделать правильно, чтобы упростить смешение текстур в Photoshop. После создания UV настало время спроецировать все изображения на UV при помощи соответствующих карт морфинга.

Character_01_front.jpeg


Передняя проекция

Character_01_side.jpeg


Боковая проекция

Character_01_back-side.jpeg


Задняя проекция в три четверти

Character_01_UVcomposite.jpg


Готовые скомбинированные текстуры с небольшими правками
Готовая модель

Модель завершена и готова к риггингу, для которого я использовал Mixamo. Раньше я не пользовался инструментами автоматического риггинга, но ради духа эффективности захотел проверить, позволят ли они мне ускорить процесс. Mixamo неплохо справился с риггингом персонажа, но мне нужно было слегка его подправить, и в особенности бороду.

Фоновое изображение


С задником всё было намного проще, поскольку его можно использовать как 2D-изображение, а не 3D-модель

JussiK_cyberpunk_point_and_click_adventu


cyberpunk point and click adventure game screenshot marketplace exterior –v 4 –ar 3:2

Несмотря на то, что изображение двухмерное, чтобы 3D-персонаж хорошо с ним сочетался, необходимо было проделать кое-какую работу. Во-первых, нужно было получить данные о камере с изображения. Я использовал бесплатный инструмент под названием fSpy для реверс-инжиниринга данных камеры.

image-14.png


Изображение в fSpy

У fSpy есть плагин импорта для Blender, поэтому очень легко было перенести изображение и камеру в Blender для моделирования приблизительного описания локации.

image-15.png


Локация в Blender

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

В Blender есть отличный инструмент для генерации UV из проекции камеры, поэтому он идеально подошёл для этого этапа, хотя мне и пришлось изучать его с нуля, ведь для меня он казался совершенно непривычным.

Соединяем всё вместе


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

Подробнее о смешении 3D и 2D можно прочитать здесь.

Заключение


Я потратил на создание 3D-ресурсов и скриптов Unity этого прототипа 18 часов. 12 часов на моделирование/UV/морфинг/текстуры/риггинг персонажа, 3 часа на камеру и меш локации, а остальное на скриптинг игры, не учитывая промпты ИИ.

По моим оценкам, ИИ сэкономил мне не менее двух дней на работу с персонажем и не менее трёх на работу с локацией.


Готовый результат ни в коем случае нельзя считать совершенным. Близкие кадры персонажа неидеальны. С локациями сложно проводить художественное руководство и они могут быть очень случайными. Но если вы смиритесь с недостатками ИИ и найдёте способ их обойти, то вполне можно создать полную игру, используя ИИ как своего помощника. Это совершенно точно позволяет разрабатывать игры, которые невозможно было бы сделать из-за ограничений бюджета или времени!

© Habrahabr.ru