Размер
3D Моделирование для игр. Некоторые вопросы и заблуждения
Play

3D Моделирование для игр. Некоторые вопросы и заблуждения

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

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

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

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

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

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

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

Слева окно юви координат, используется цветная текстура для удобства работы над разверткой. Любая манипуляция вершин слева приводит к смещениям текстуры по модели:

Второе заблуждение. Выражение "я под текстуры улетел" или "он в текстурах застрял" - абсурд, но нет времени и желания объяснять абсолютно всем, что сказанное ими не соответствует реалиям. Персонажи, машины, динамическое окружение - все это имеет дополнительную модель (collision, collider) отвечающую за столкновения с другими коллайдерами. Часто можно заметить в играх что персонаж упирается в невидимую стену или наоборот проходит ее, значит имеются несоответствия коллизии с рендер мешем. Хотя в любом случае, суть этой фразы уже всем понятна и нет смысла выражать ее иначе.

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

Средний полигонаж - тут все относительно, это может зависеть от стилистики игры, от того как часто и как близко будет виден предмет для игрока. Персонажи, они больше всего заслуживают внимания, среднее количество трисов на их моделях разнится от 13k до сотни тысяч, к примеру игра Assassin's Creed 3: Бенджамин Франклин-18k, Ли Чарльз-26k, Коннор-28k, Дезмонд-15k, Хэйтем-20k ( тысяч трисов). Как видите есть разница и иногда большая, например от того какая у них одежда и внимание к лицевой анимации в кат сценах, к примеру у Дезмонда нет никаких плащей или одежды что могла бы плавно колыхаться при движении персонажа, потому и хватило ему 15 тыс.

Джоэл. Главный герой игры “the last of us” 40 000 трисов, лицо и руки - основные места плотности сетки ибо нуждаются в качественной анимации.

Что касается объектов окружения, оружия, то там уже уже более высокая разница.

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

Текстура - разглядывая пиксели на модели вы на самом деле смотрите не на одну конкретную текстуру (если это не старенькая игрушка), а на материал, который создается с использованием нескольких текстур, вроде Base Color, Normal Map и прочих, характерных для PBR - physically based rendering (физически корректный рендеринг). PBR это довольно сложная тема для краткого описания, потому постараюсь не нудить: Используется почти во всех (99%) современных играх с реалистичной графикой. На одной модельке используется особый набор текстурных карт, состоящий как минимум из четырех, Base color - придает основные цвета модели, Roughness - карта отвечает за микро поверхность материала, придавая шероховатость или глянцевость, Metalness - карта металлических свойств, Normal - создает фейковые неровности на совершенно ровном полигоне, весь текстурный сет называют материалом. Это далеко не весь список а лишь основной, вот один из примеров PBR материала:

Всю игру можно сделать в 3ds max - Да, встречались мне такие люди, по какой то причине в их голове процесс разработки укладывается лишь один, когда то и где то услышанный софт по 3D. Для разработки полноценного персонажа порою хватает двух программ, но не для всех, некоторые владеют более пятью программами связанными с 3D и им проще работать, потому как есть моменты которые легче сделать там или в другом месте, как например замоделить в blender3d, развернуть в UVlayout, затекстурить в Substance Painter, отрендерить в Marmoset toolbag - это кстати то чем владею на данный момент я, довольно скромный список. И это только создание модели, дальше ее нужно импортировать и настроить в игровом движке, если это персонаж, то сюда можно вставить еще пару программ, например скульптить в Zbrush и анимировать в Maya, все это можно сделать и в том же blender3d, там даже есть свой игровой движок, при желании можно вообще не выходить оттуда, но как я уже сказал - некоторые процессы проще и быстрее в другом софте.

Я написал достаточно много, но не описал я еще больше. Скриншоты как мои так и с сайта с Artstation - кстати там можно увидеть полно примеров 2d, 3d как игровых так и рендеров (ссылку найдете в гугле). Спасибо за внимание

📎📎📎📎📎📎📎📎📎📎