
На примере любопытного небольшого прототипа я захотел проверить, сколько труда потребуется при использовании ИИ для создания максимально возможного количества графики 2,5D-игры в жанре point and click.
Было понятно, что искусственный интеллект без проблем справится с задниками, поскольку игра, фактически, остаётся по большей мере в 2D, но с персонажами ситуация чуть более сложная. Мне понадобится крайне быстрый конвейер работы, позволяющий использовать данные захвата движения, поэтому создание анимаций не окажется узким местом. Я должен был найти способ перенести сгенерированную ИИ графику в форму, которая приемлема для захвата движения.
Мне показалось, что лучше всего будет сгенерировать концепты персонажей при помощи ИИ, а затем смоделировать их в 3D.
Я работаю в игровой индустрии уже более двадцати лет, и в основном занимаюсь моделированием персонажей и фонов. Поэтому будет интересно проверить, позволит ли ИИ мне работать быстрее. И насколько?
Я планировал использовать персонажей только для общих планов камеры, так что возможное низкое качество или ошибочные детали не будут особой проблемой. Впрочем, технологии ИИ совершили долгий путь, и целостность артов стала намного выше, чем всего несколько месяцев назад.
Создание промпта
Я начал с того, что приказал ИИ (в данном прототипе это Midjourney, но чаще я пользуюсь Stable Diffusion) создать лист модели с изображениями персонажа под разными углами. Похожие листы используются в студиях анимации. Для моего проекта это будет хорошей опорной точкой.

cyberpunk point and click adventure game character model sheet turnaround –v 4 –ar 3:2
Первый результат оказался очень многообещающим. Естественно, он мне не подходил, потому что был чёрно-белым, но такими и рисуют обычно листы моделей. Я попытаюсь не использовать в качестве референсов работы живых (или мёртвых) художников. Однако, работая с ИИ, невозможно отказаться от влияния множества разных художников. Поэтому мне приходилось лишь надеяться, что стиль будет очень размытым и не окажется слишком похожим на чьи-то конкретные работы.

cyberpunk point and click adventure game character model sheet turnaround full color –v 4 –ar 3:2
Вторая попытка тоже была не блестящей. Однако это уже шаг в нужном направлении.
После ряда экспериментов я получил промпт, который создавал графику, которую я мог использовать в качестве основы для перехода к 3D:











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
Изображения имели на удивление хорошую согласованность под разными углами. Они вполне применимы для моделирования и проецирования текстур. Однако возникла серьёзная проблема: изображения имели разные ракурсы и часто генерировались под странными углами. Но у меня были мысли о том, как преодолеть эти проблемы.
Так как эти изображения созданы ИИ, никто не может заявить на них авторские права. Таков «контракт», который вы подписываете, работая с ИИ в настоящий момент. Их свободно может использовать кто угодно, поскольку воссоздать эти изображения крайне просто. По крайней мере, такое впечатление у меня сложилось об ИИ-графике.
Моделирование
Я выбрал созданное ИИ изображение с хорошим видом спереди и сбоку, но с проблемным видом сзади в три четверти. Мне придётся решить эту проблему и посмотреть, как она повлияет на результат. Можно ли вообще извлечь из этой графики текстуры для готовой модели?



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


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

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

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

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

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

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

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

Готовые скомбинированные текстуры с небольшими правками
Готовая модель
Модель завершена и готова к риггингу, для которого я использовал Mixamo. Раньше я не пользовался инструментами автоматического риггинга, но ради духа эффективности захотел проверить, позволят ли они мне ускорить процесс. Mixamo неплохо справился с риггингом персонажа, но мне нужно было слегка его подправить, и в особенности бороду.
Фоновое изображение
С задником всё было намного проще, поскольку его можно использовать как 2D-изображение, а не 3D-модель.

cyberpunk point and click adventure game screenshot marketplace exterior –v 4 –ar 3:2
Несмотря на то, что изображение двухмерное, чтобы 3D-персонаж хорошо с ним сочетался, необходимо было проделать кое-какую работу. Во-первых, нужно было получить данные о камере с изображения. Я использовал бесплатный инструмент под названием fSpy для реверс-инжиниринга данных камеры.

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

Локация в Blender
3D-версия локации необходима, чтобы изображение соответствовало изменению ракурса персонажа и чтобы он мог проходить за объектами. Также она полезна для расстановки освещения в 3D-пространстве и создания теней относительно местоположения персонажа.
В Blender есть отличный инструмент для генерации UV из проекции камеры, поэтому он идеально подошёл для этого этапа, хотя мне и пришлось изучать его с нуля, ведь для меня он казался совершенно непривычным.
Соединяем всё вместе
Получив все фрагменты пазла, осталось лишь собрать их. Для этого я использовал Unity. Я создал простой аниматор для движения персонажа, изменил масштаб 3D-локации, чтобы он совпадал с масштабом персонажа, и добавил соответствующее сцене освещение, чтобы персонаж не сильно выделялся на её фоне.
Подробнее о смешении 3D и 2D можно прочитать здесь.
Заключение
Я потратил на создание 3D-ресурсов и скриптов Unity этого прототипа 18 часов. 12 часов на моделирование/UV/морфинг/текстуры/риггинг персонажа, 3 часа на камеру и меш локации, а остальное на скриптинг игры, не учитывая промпты ИИ.
По моим оценкам, ИИ сэкономил мне не менее двух дней на работу с персонажем и не менее трёх на работу с локацией.
Готовый результат ни в коем случае нельзя считать совершенным. Близкие кадры персонажа неидеальны. С локациями сложно проводить художественное руководство и они могут быть очень случайными. Но если вы смиритесь с недостатками ИИ и найдёте способ их обойти, то вполне можно создать полную игру, используя ИИ как своего помощника. Это совершенно точно позволяет разрабатывать игры, которые невозможно было бы сделать из-за ограничений бюджета или времени!
Автор:
PatientZero