Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 10 "Немного о графике и 3Д моделировании".

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

Теперь, когда мы знаем базовые принципы и можем построить на этой основе блокаут ( игра без графики ), можно переходить к графике.

Итак, мы хотим создать 3D персонажа, что же нам понадобится? Как можно догадаться, недостаточно просто набросать фигур в Blender. Персонаж создаётся в несколько этапов.

Этап первый - Mesh.

Сначала подготавливается оболочка персонажа, которая представляет собой полигональную сетку (или, как её принято называть, mesh).

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

После создания сетки выполняется процесс ретопологии.

Ретопология необходима для оптимизации персонажа под использование в игровом движке ( превращает high-poly в low-poly модель ).

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

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

В процессе ретопологии мы создаём правильную низкополигональную "оболочку" для модели. Затем эта оболочка отделяется от высокополигональной модели и становится оптимизированной версией сетки.

Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 10 "Немного о графике и 3Д моделировании".

Графика в любом движке работает не с полигонами ( четырехугольник ), а с трисами ( четырехугольник движком конвертируется в треугольник ), поэтому оценивать сложность модели лучше в трисах ( грубо говоря один полигон = два триса ).

Что касается низкополигональных моделей, то их размер будет соответствовать приблизительно таким параметрам и зависеть от платформы:

  • Мобильные игры - 5 000 – 20 000 трисов. Персонажи, окружение
  • ПК/Консоли - 10 000 – 50 000 трисов. Детализированные объекты
  • VR-приложения - 7 000 – 30 000 трисов. Для стабильного FPS
  • Фоновые объекты - 500 – 5 000 трисов. Деревья, камни

Этап второй - UV-развёртка.

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

Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 10 "Немного о графике и 3Д моделировании".

Этап третий - Запекание карт.

Далее выполняется запекание карт (Normal map, Ambient Occlusion и др.), что позволяет перенести детали с high-poly модели на low-poly версию. Этот этап добавляет объемности модели, создавая дополнительные тени и шероховатости.

Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 10 "Немного о графике и 3Д моделировании".

При этом недостаточно создать только одну текстуру цвета (Albedo) - необходимо подготовить несколько карт, каждая из которых отвечает за определённые свойства материала (PBR или Physically Based Rendering):

  • Albedo (Base Color) - основной цвет без теней и освещения (диффузная карта). Определяет цвет кожи, металла, ткани.
  • Normal Map - симулирует мелкие детали без увеличения полигонов (выступы, впадины). Используется для пор кожи, швов одежды, царапин.
  • Roughness Map - определяет степень матовости (0) или глянцевости (1) поверхности. Например, полированный металл vs ржавчина.
  • Metallic Map - указывает, какие области являются металлическими (1), а какие - диэлектриками (0). Применяется для металлических доспехов vs кожаных ремней.
  • Ambient Occlusion (AO) - добавляет тени в складках и местах, куда не проникает свет. Например, затемнение под воротником или в складках одежды.
  • Height Map - используется для параллакса или тесселяции (рельефа). Применяется для кирпичных стен, коры дерева.
  • Emission Map - создаёт эффект свечения (например, глаза робота, неоновые вывески). Используется для лампочек, магических эффектов.

Этап четвертый - Текстурированние.

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

Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 10 "Немного о графике и 3Д моделировании".

Как видите задача достаточно сложная, а это мы только подготовили оболочку персонажа. Если это какая-то мебель ( статика ), то ее можно уже будет загрузить и использовать в игре.

С 2D-персонажами в этом плане проще - нужно "всего лишь" нарисовать множество спрайтов ))).

Итог: прежде чем добавлять модель персонажа или какого либо объекта в игру, необходимо подумать о производительности используемой модели. Это поможет избавить себя от вопроса "Почему игра лагает, я же добавил только домик и человечка?".

Спасибо за внимание!

4
2
1 комментарий