Working with 3D-graphics
July 2014 16

Создание игрового персонажа

From Sandbox


В данной статье описывается процесс создания персонажа для игрового движка. Статья в первую очередь адресована тем, кто интересуется процессом разработки next gen моделей, а также всем, кто хочет заглянуть за кулисы современного игродела. Персонажа я делал для портфолио, на персонажей переключился совсем недавно, можно сказать, что это первый доведенный до ума персонаж. Поскольку данная работа — мой личный проект, то я установил ограничение треугольников в 20 000, текстуры в 2048*2048, работа планировалась под PBR.

Pipeline


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

  1. Словесное описание
  2. Концепт
  3. Моделирование/скульпт общих форм высокополигональной модели (HiPoly)
  4. Ретопология HiPoly модели (создание чистовой геометрии HiPoly для детализации)
  5. Детализация HiPoly модели
  6. Ретопология HiPoly модели (создание игровой лоуполи (LowPoly), которая и идет непосредственно в движок)
  7. Развертка LowPoly (создание текстурных координат)
  8. Запекание карт: нормали, ambient occlusion, color map (перенос информации с HiPoly на LowPoly)
  9. Создание текстур: Diffuse, Specular, Gloss, Normal
  10. Рендер в движке
  11. Риг и скин персонажа (оснастка скелета и привязка к костям сетки)
  12. Анимация


Концепт


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



Scultping


Но все равно, отказываться от идеи реализации я не стал, только решил, что некоторые детали немного переработаю, не буду полностью повторять концепт. Первым делом, я решил вылепить модель целиком одним куском в ZBrush. ZBrush — (браш, зебра, зибраш) это замечательная программа, которая позволяет «лепить модель», что качественно отличается от других программ трехмерной графики, где мы воздействуем на модель через вершины, ребра и полигоны. Здесь же у нас есть кисть с различными свойствами и с помощью планшета можно совершать довольно тонкие операции, подобно скульптору или художнику по глине. Использование браша позволило мне на начальном этапе отсечь ошибки с основными массами и пропорциями, с простой моделью в браше я мог очень вольно менять пропорции и искать варианты детализации. Оказалось, скульптить хардсурфейсы (так называются неорганические объекты в моделировании) оказалось непросто.


Хоть модель выходила корявенькая, идея воплощалась, а дело двигалось дальше.


Несколько итераций поиска, и была достигнута форма, которая меня удовлетворила.

Ретопология HiPoly модели



Когда мне показалось, что модель готова к ретопологии я перешел в другую программу для создания чистовой геометрии для скульптинга — Topogun и 3ds Max. Суть ретопологии заключается в том, что поверх одной модели строится сетка другой. Ретопологию позволяют делать многие программы трехмерной графики тот же ZBrush, 3dsMax. Однако ретопология там очень неудобна (хотя некоторые ретопят в браше) и малофункциональна. Topogun — программа созданная для ретопологии и имеет много преимуществ перед редакторами-комбайнами. Есть и недостатки, после десятка часов работы в ней я придумал ряд улучшений, но кому до них есть дело :) Важный недостаток: отсутствие нормального автобэкапа и частые аварийные завершения Topogun. Особенностью новой топологии было то, что она готовилась под сглаживание (Turbosmooth), поэтому там почти нет треугольников, старался использовать квады (квадратные полигоны).


Пример новой сетки рядом со старой.

В максе я исправил все косяки и сделал геометрию чистой. Ретопология был долгая и утомительная, т.к. каждую деталь я экспортировал из браша, затем ретопил отдельно в Topogun, затем переносил в 3dsmax, правил ее там и импортировал обратно в Zbrush. Часть модели была сделана прямо в максе (например, наколенники).

В конечном итоге модель была практически полностью заретоплена в новую, чистую сетку и загружена снова в Zbrush.


Так выглядит ретопленный меш внутри Zbrush.

Финальная детализация


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


В конечном итоге модель выглядела так.

Ретопология, создание LowPoly


Настало время сделать сетку для использования в реалтайм рендерах (игровых движках). Снова Топоган, теперь работа шла полностью в нем, в максе исправлял лишь некоторые косяки геометрии. Работа была для портфолио, поэтому на треугольники я не скупился, хотя и знаю, что много где можно было сэкономить. На этом этапе я уже пробовал запекать Normal map, чтобы посмотреть, адекватно ли переносятся детали. Именно на этом этапе я понял, что с Topogun'ом нам больше не по пути и уже в следующем проекте отказался от него в пользу 3dCoat. Но это уже другая история…


Так выглядит новая сетка.

LowPoly модель собрана в максе. Теперь время UV Unwrap'a.


Cоздание текстурных координат


До сих пор не было никакой нужды в текстурных координатах. Однако, после подготовки LowPoly модели нужно создать правильные UV координаты, чтобы запечь карты и чтобы было возможно затекстурить модель. UV я делал в 3dsMax, считаю довольно удобным встроенный редактор. Раньше пользовался сторонними программами, но когда в должной мере освоил редактор UV в 3dsMax, оказалось, он довольно мощный…

Правильная развертка гарантирует простое и корректное текстурирование, снятие карт и может повлиять на качество текстур.


Так выглядит раскладка кусков UV.

Запекание карт


Суть запекания карт (в данном случае) заключается в переносе информации с HiPoly модели на текстуру LowPoly. Я запекал с помощью программы xNormal — прекрасная программа, намного лучше справляется с запеканием, чем программы-комбайны. Я запек карту нормалей (tangent space normal map) (информацию о рельефе поверхности, которая добавляет модели фейковую детализацию), ambient occlusion (карта самозатенения), карту cavity получил из ambient occlusion, также получил object space normal map с помощью утилиты xNormal из tangent space normal map.


Так выглядит модель в движке с normal map и ambient occlusion. Движок Marmoset Toolbag. Тут еще присутствуют ошибки запекания, которые были исправлены в фотошопе.

Создание текстур


Теперь, когда подготовлены карты, которые можно было получить с помощью переноса информации нужно готовить карты диффуза, спекуляра и глосснеса. Раньше обычно хватало diffuse, normal и spec карт, сейчас PBR позволяет создавать эффекты глянцевитости, а не только информации о силе отражения. Существует прекрасный плагин к Photoshop, который упрощает создание и редактирование всех этих карт — dDo. Это потрясающая программа, по сути позволяющая управлять сразу несколькими параметрами карт через маски. Потребовалась подготовительная работа, чтобы я мог работать с этим плагином, к слову, в своем пайплайне я использовал его впервые. Плагин позволяет параметрически добавлять различные эффекты поверхностей, такие как потертости, пятна и грязь, поэтому он оказался очень подходящим для этой работы. Сгенерировав основные детали текстур я доработал ее вручную в фотошопе.

Разрешение текстур, с которыми я работал было 4096*4096, фотошоповский файл быстро вырос до 6 гигабайт. Я снова порадовался, что у меня довольно быстрый компьютер :)
В конце концов, несмотря на то, что текстуру я переделывал несколько раз (т.к. фотошоп несколько раз убил файл) текстуры были созданы.



Render



И, наконец, финальный рендер! Хотя по сути, это предпросмотр текстур, в настоящий, взрослый (UDK, Unity3d, CryEngine) движок я модель не загружал. Для каждого движка (а также сеттинга, локации и индвидуального цветового решения игры) скорее всего потребовалось провести свой тюнинг текстур.







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

Собственно, на этом все. Благодарю за просмотр, задавайте вопросы в комментариях, может что-то будет интересно.

P.S. Это моя первая статья на Хабре, поэтому если я что-то сделал не так, сообщите мне.

Также хочу сразу отметить: по поводу реалистичности доспехов вопросы к концепт артисту, также не забывайте, что арт-составляющая зачастую важнее функционала и реалистичности, хотя в идеале, безусловно, это должно сочетаться.
+83
153.4k 456
Comments 47