Что такое low poly графика
Как создаются 3D модели для игр – то, что всегда было с вами, но чего вы не замечали
Здравствуйте. Недавно я прошёл онлайн-курс по созданию 3D моделей (чтобы не выглядело рекламой, упущу какой именно) и открыл для себя некоторые вещи, которые не сказать, что перевернули мои представления об играх, но заставили взглянуть на игровые модели совершенно иначе. Этими вещами я и хотел бы поделиться с вами. Это не будет сухой технической экскурсией по всему процессу создания моделей (хоть мы и пройдём через весь процесс), а скорее рассказ с упором на факты, которые, быть может, позволят вам, как и мне, взглянуть на игры немного по-другому.
Например, почему для создания одной модели художник вынужден делать три, почему иногда в папке с игрой вы можете обнаружить содранную кожу ваших любимых персонажей и что трилогия «Властелин Колец» подарила каждой современной игре.
Драфт
Двинемся по порядку, с самого начала цикла создания модели. На самом деле драфт является не столько первым этапом, сколько подготовкой к будущей работе. Драфт для 3D художника — то же самое, что набросок для обыкновенного художника. Только если на листе бумаги будущий рисунок обозначается грубыми мазкам и штрихами, то модель конструируется из примитивов (кубов, цилиндров, прямоугольников) с целью поймать силуэт объекта, его габариты и пропорции.
Иногда на этапе драфта может прорабатываться цветовая схема объекта. А иногда работа на этапе драфта и заканчивается. В таких случаях драфт может быть самодостаточным произведением, когда художник хочет воплотить определённую идею, но не хочет возиться со всеми остальными техническими этапами.
Кстати, есть такой замечательный сайт Sketchfab. Если вам когда-либо нравилось просматривать в интернете красивые картинки или фото, здесь вы можете открыть для себя то же самое, но уже в сфере 3D. Там различные художники публикуют не только драфты, но и более комплексные вещи. Как вам, например, 2D картина, созданная в 3D, но при этом с любого ракурса выглядящая как 2D картина?
Прогуливаясь по этому сайту, можно получить большое эстетическое удовольствие, даже если вы не заинтересованы в 3D.
Low-Poly & High-Poly
Это, собственно, второй и третий этапы создания модели, которые очень трудно рассматривать по отдельности. И они же отвечают на вопрос, почему 3D художник должен создавать 2 модели, чтобы создать одну (не считая того, что он уже до этого создал драфт).
Наверняка многие из вас слышали такое понятие, как «лоу-поли графика». Чаще всего оно применяется к различным инди-играм с простенькой угловатой графикой.
И в своё время эта ассоциация поставила меня в тупик, потому что я никак не мог понять, почему художники применяют эти слова в отношении вполне реалистичных моделей.
Дело в том, что почти все высокодетализированные модели, которые вы встречаете в играх, они — не настоящие. Круглые плавные формы на вашем клинке, следы снарядов на вашем танке, болты на вашем роботе, морщины на вашем персонаже — ничего этого на модели нет, это визуальный обман. Просто современные технологии (в большинстве своём) не способны отрисовывать настолько детализированные объекты в реальном времени. Поэтому художник должен создать две его версии: ту, что будет выглядеть реалистично и содержать в себе все мельчайшие детали (High-Poly модель) и его упрощенную версию, которую сможет потянуть игра (Low-Poly модель).
Разница в количестве полигонов, мерило детализации модели, между этими двумя версиями может быть колоссальной. Low-Poly модель может состоять из тысячи или ста тысяч полигонов, а её High-Poly версия может исчисляться миллионами.
Хотя по факту это одна и та же модель, просто с разной детализацией. То, что эти две версии должны быть одинаковых габаритов и идеально накладываться одна на другую, является одним из главных источников головной боли у художников. А то, по каким правилам Low-Poly модель оптимизируется для ваших платформ, это вообще отдельная песня. Наблюдение за тем, как моделлер манипулирует 3D сеткой, избавляясь от каждого лишнего полигона, порой может иметь гипнотический эффект.
По итогу у художника на руках есть две модели: Low-Poly и High-Poly. Вторая никогда не попадёт в игру, и встаёт задача перенести визуальную информацию с высокодетализированной модели на оптимизированную. Но перед этим предстоит ещё один этап.
UV развёртка
Знаете, одна из моих травм детства связана с тем, как я заглянул внутрь папки Half-Life 2 и обнаружил там содранную и разложенную кожу Аликс.
Вы только посмотрите на её пустые глазницы… бррр. В дальнейшем я ещё не раз натыкался в директориях игр на освежёванных героев и каждый раз жалел, что туда залез.
Так что же там делает этот подарочек от Кожаного Лица? Это результат процесса под названием «UV развёртка». Он нужен для отрисовки текстур на моделях. Дело в том, что 3D программы понятия не имеют, что делать с 3D моделями в плане текстур. Они абсолютно не понимают, как работать с поверхностями 3D объекта, учитывая, что текстуры — это 2D картинки, накладываемые поверх модели.
Процесс UV развёртки заключается в том, чтобы разрезать и разложить вашу 3D модель, как картон, в 2D плоскость. Это как собрать оригами наоборот — разложить фигурку в чистый лист. Как охотники освежёвывают медведя и расправляют его шкуру у себя в гостиной. Получается, такой вот, 2D медведь. В результате этих манипуляций художник имеет на руках огромное полотно, где каждая плоскость каждой детали расправлена и разложена по определённым правилам.
То же самое относится и к живым персонажам. Даже зная эту информацию, иногда, когда я захожу в программу для текстурирования и вижу среди материалов «золото» и «дерево» материал «человеческое лицо», чувствую себя примерно так:
Если вас интересует, почему процесс называется именно UV-развёртка, ответ прост: так обозначаются два направления 2D пространства — V (вверх-вниз) и U (право-лево). Результаты UV развёртки позволят в будущем текстурировать модель, а также перейти к следующему этапу.
Запечка
Запечка, или «Bake» — это и есть та технология, которую изобрели во время съёмок «Властелина Колец». Если коротко и не вдаваясь в детали, эта процедура позволяет художнику спроецировать внешний вид высокодетализированной модели на оптимизированную. Это могут быть как красивые скруглённые формы, так и целые детали, например, какие-нибудь болты.
Как уже было сказано, это позволяет значительно сократить кол-во полигонов. Казалось бы, зачем это нужно киношникам? У них и так есть в распоряжении суперкомпьютеры и возможность рендерить один кадр несколько дней, так? А если кадры нужно будет переделать? Если на экране не один пещерный тролль, а целая армия орков? Представляете, насколько эта технология упросила жизнь создателям «Властелина Колец»? Настолько, что продолжает играть важнейшую роль в создании графики и по сей день.
Этот этап является святым причастием модели, т. к. если что-то где-то было сделано неправильно, это обязательно всплывёт артефактами именно здесь. Ну а после этого остаётся последний этап.
Текстуры
Эта тема настолько объёмна, что здесь даже нечего сказать. Скажу только то, что современные технологии позволяют творить настоящие чудеса. Например, автоматически создавать материалы с физически корректными значениями — нажал одну кнопку, и твой объект стал золотым, блестит и переливается как настоящий. Нажал ещё одну кнопку, и он покрылся потёртостями на углах. Ещё одну — появились царапины. Процедурная генерация текстур — это вообще то, что взорвало мне мозг. Я-то думал, что такие вещи, как ржавчина или пыль в углублениях модели рисуются вручную. Но нет, оказалось, что такие процессы сегодня можно довести практически до автоматизма. А когда создают автоматические «умные» материалы, это вообще песня — когда один и тот же материал подстраивается под совершенно разные объекты, самостоятельно определяя, где у него углы, которые нужно затереть, а где углубления, которые нужно запылить и т. д.
Заключение
Как вы уже могли понять, создание игровых моделей — дело не самое простое. Даже с современными возможностями, такими как умные материалы, создание одного танка может затянуться на месяцы, даже если работать над ним будут несколько человек.
Недавно анонсировали Unreal Engine 5 и заявили, что он будет способен работать сразу с High-Poly моделями, минуя этапы Low-Poly, UV и запечки. Представляете, насколько это упростит художникам задачу и насколько больше позволит сосредоточиться не на технической, а на художественной части? Так что некст-ген может прийти не со стороны новых консолей, а со стороны движков.
Все эти знания позволили мне по-новому взглянуть на модели в играх, задумываться даже над тем, как создавались банальные контейнеры в Death Stranding. Когда вышла игра The Medium, а следом и мнение о ней в одном душевном подкасте, я испытал величайшее возмущение при нападках на графическую составляющую игры. Вы посмотрите на любой предмет окружения из игры, приглядитесь, с каким вниманием к мелочам они созданы. А ведь таких предметов на уровне может быть десятки и сотни.
Что касается меня, за полгода обучения практически с нуля я достиг результата, который вы можете наблюдать ниже. Оставлю ссылку на ArtStation на полную версию работы, там снимки с разных ракурсов, скриншоты из Unreal Engine и др. Если будет интересно, перейдите, поразглядывайте — мне будет приятно).
Немного о Game LowPoly
Здравствуйте, уважаемые читатели Render.ru. Меня зовут Олег, моего коллегу соавтора зовут Владимир, и я являюсь Game Low-Poly моделлером. В данной статье мне бы хотелось бы познакомить вас с азами создания игровых моделей.
Данная статья будет в первую очередь полезна начинающим, но будет интересна и ветеранам индустрии.
Преамбула
Данная статья вынашивалась мною достаточно давно.
В последнее время очень большое число людей направило свой взор в сторону игровых моделей, но, к сожалению, обладая замечательными навыками в создании Hi-poly и Mid-poly моделей, многие совершенно не имеют представления о Low-poly. Как итог, модели получаются хоть и красивыми, но совершенно негодными для дальнейшего использования.
Часто от начинающих игровых художников можно услышать фразу: « Модель делалась для себя, над оптимизацией не задумывался», она является в кроне неверной.
Построение Low-poly модели начинается именно с определения, а зачем же она собственно нам нужна?
В данной статье я хотел бы рассказать именно о различных направлений, в которых используются игровые модели, и о их весьма специфичных требованиях.
Терминология
Грань (Edge, прим. перевод: Грань) – линия, ограниченная двумя вертексами. Содержит координаты образующих ее вертексов, и собственные координаты, являющиеся суммой координат вертексов.
Примечание: К сожалению, современные методы отрисовки не предполагают использование полигонов состоящих из более чем из трех вертексов. Такие полигоны триангулируются игровым движком, и уже в последствии обрабатываются видеокартой, именно по этой причине рекомендуется самостоятельно триангулировать сетку. Существуют и другие способы отрисовки, но, к сожалению, они не универсальны для различного компьютерного железа, по этой причине сейчас не используются.
Игровые разделы
Соответственно из всего сонма жанров мы можем выделить для себя всего три направления, наиболее характерно отличающиеся по положению камеры:
Состав текстур: Normal Map с Ambient Occlusion в альфа канале, Specular, Diffuse map. Разрешение немного нестандартное: у тела 3840х3840, у головы 1920х1920, у каски, объеденной с намордником 1920х1920, маска 960х960, система повреждений 960х960, глаза 512х512.
Детально: Голова 7.164, Волосы 6.054, Торс 5.851, Кисти рук 2.664, Ноги 2.549, Башмаки 1.758, челюсть 547, резинка для волос 359, рюкзак 2.693, ресницы 426, лакрима 558, глаза 912.
Состав текстур: Normal Map, Specular, Diffuse map и Ambient Occlusion для лица. Разрешение классическое: у тела 1024х1024, у головы 1024х1024, волосы 1024х512, ноги 1024х1024, челюсть и руки 512х512, башмаки 512х512, рюкзак 512х512, глаза 256х256, лакрима 128х128.
Игровые планы
Разобравшись с глобальным положением камеры, и определив ее типичные использования в играх, мы с вами выделили для себя три основных направления. Но и в самой игре расстояние от камеры до различных объектов может сильно отличаться.
Условно, игровое пространство можно разбить на четыре плана.
Из-за того что игрок постоянно наблюдает модели данного плана, для них допускается плотная сетка. Но есть одна маленькая особенность, и скрывается она в различных группах материалов для таких моделей.
Итак, рассмотрим классический случай.
Дано: модель пистолета, револьверного типа, с общим числом треугольников 6.810. В постоянной видимости у игрока только часть наружного меша, если выделить ее, то мы получим всего лишь 3.060 треугольников, остальную часть модели игрок увидеть не может. Что бы не загружать всю модель в память, а подгружать нужные элементы поэтапно, игровая модель подготавливается с учетом нанесения на нее двух и более материалов: материал группа для постоянно видимого участка (на картинке желтым), и материал группа для участка видимого только во время анимации (на картинке красным).
Соответственно, на краткий миг анимации перезарядки и появляется на экране ранее скрытый объект. Это позволяет значительно сэкономить постоянные затраты памяти.
2. Анимируемые объекты второго плана, а именно: персонажи, и противники.
В данном разделе кроются модели монстров, неигровых персонажей, крупных анимированных объектов играющих важную роль в повествовании. Сетка для таких объектов в разы менее плотная чем для объектов первого плана.
Как вы уже могли заметить, сетка не равномерна для всей модели, наиболее плотными участками являются: лицо, волосы, и кисти рук, участки сгибов (локтевые участки, колени, плечи, тазобедренный участок). Связано это в первую очередь с большим числом костей используемых для анимации данных частей тела.
Сетка для анимируемых органических моделей, а так же механических с изгибаемыми элементам преимущественно выполнена кольцами из квадратных полигонов (впоследствии триангулированных). Выполняют сетку именно так, для компенсации сжатий и растяжений сетки (проявляющейся в сжатии, растяжении и перегибах текстуры).
3. Интерактивные объекты.
4. Элементы локации:
В современных играх предполагается построение уровня из заранее подготовленных моделей (Unreal Engine, Unity). Для левел дизайнера подготавливается набор моделей, состоящий из различных панелей, крупноблочных объектов, плитки и многого другого, размещаемого непосредственно на уровне. Все эти объекты должны быть максимально оптимизированы, ибо являются наиболее многочисленными.
Необходимо отметить, что современные игровые движки могут отрисовывать миллионы треугольников, но сильно ограничены по числу активных объектов. Так в Unreal Engine проявляются первые признаки заторможенности при всего 1000 объектах на экране, при этом не имеет значение степень детализации данных объектов. Именно по этой причине, после построения уровня в редакторе, его необходимо поэлементно укрупнить в различные объекты, не забывая про разделение на материал группы.
На изображении ниже приведен пример игрового уровня с высокой плотностью сетки. Как вы можете заметить, элемент уровня имеет цилиндрическую форму, что приводит к значительному увеличению полигонажа относительно стандартных уровней.
Численность объектов
Частые ошибки при создании игровых моделей
Мы с вами рассмотрели на что следует обращать внимание и как классифицировать вашу игровую модель. Разобрали основные требования к игровым моделям, а теперь мне бы хотелось вам рассказать об основных ошибках, допускаемых как профессионалами, так и новичками.
1. Сохранение не формообразующих высоту вертексов.
Данная ошибка является самой грубой и наиболее распространенной у новичков. На модели допускается сохранять только вертексы создающие основную форму модели, в крайних случаях возможно сохранение защитных бордеров (дополнительный лупс препятствующий искажению нормалей), а так же лупсов обеспечивающих симметрию развертки, но необходимо трезво оценивать их необходимость.
2. Несоразмерность детализации.
Как уже ранее говорилось, плотность сетки должна напрямую зависеть от возможности приблизить камеру к объекту.
На изображении ниже можно увидеть яркий пример несоответствия размеров кнопки и платы. плата предназначенная для установки в дверную кнопку выполнена из 1020 треугольников, при условии что теоретически на экране может занимать максимум 128х256 пикселей. Подобная плотность сетки недопустима.
Стоит так же отметить, что не следует делать сетку плотной на сложно доступных для обозрения участках.
3. Утечка нормалей
На изображении представлены различные сочетания Smooth-group, положений крышки Low-poly модели относительно Hi-poly.
1) Hi-poly модель, с которой и запекается карта нормалей.
2) Простая Low-poly, с одной Smooth-group, крышка в уровне Hi-poly. На данной модели при фронтальном расположении камеры мы наблюдаем заметное искажение кольца и фаски, при наклонной камере дефекты становятся незаметными. Подобный тип игровой содели следует применять для малых объектов и при условии расположения камеры под углом.
3) Простая Low-poly, с одной Smooth-group, крышка ниже Hi-poly. Проблемы аналогичны п. 2. дополнительно подчеркивается вредная фаска.
4) Простая Low-poly, с двумя Smooth-group, крышка в уровне Hi-poly. На данной модели при фронтальном расположении камеры мы не наблюдаем никаких искажений, при наклонной камере проявляются грани модели. Подобный тип игровой модели следует применять для малых объектов и при условии расположения камеры фронтально.
5) Простая Low-poly, с двумя Smooth-group, крышка ниже Hi-poly. Проблемы аналогичны п. 2. дополнительно теряется фаска.
6) Более сложная Low-poly с фаской и с одной Smooth-group. На данной модели любом положении камеры мы наблюдаем остаточные незначительные эффекты искажения. Подобный тип игровой модели следует применять для крупных объектов.
Методику построения лоуполи модели и выбора Smooth-group следует принимать в зависимости от положения игровой камеры. Если мы чаще наблюдаем объект фронтально, то лучше использовать случаи № 4, 7.
Если мы наблюдаем объект чаще под углом, то лучше использовать случай № 2.
Если объект обозревается игроком со всех сторон, то наиболее адекватным будет являться случай №6.
4. Оптимальность сетки
На изображении ниже представлены два цилиндра с одинаковым числом треугольников.
5. Лишняя геометрия
Не следует допускать появления легко сводимой в карту нормалей геометрии на модели. Лучше свободные вертексы направить на улучшение других форм модели.
Интересные Факты
1.Вершинный Shader.
В игровых моделях, полигонаж считается в треугольниках, но данный расчет не отображает реальной картины.
Каждый 3D художник в своей жизни хотя бы раз пользовался Smooth-group (для Blender модификатор edge split). Особенностью применения данных функций, является умножение числа вертексов для создания Smooth поверхностей. Так же следует отметить, что Shaderы отрабатывают не по треугольникам, а именно по вершинам, что приводит к большей сложности вычислений на моделях, состоящих из большего числа Smooth-group.
Именно поэтому рекомендуется создавать игровые модели в одной Smooth-group, прибегая к разделению только в редких случаях.
Полностью отказаться от использования множественных Smooth-group к сожалению невозможно, ибо это приведет к резкому росту активного полигонажа модели. Каждый раз при подготовке Игровой модели, следует взвешивать, что лучше использовать: защитные бордеры (дополнительный лупс по периметру опасной зоны), либо Smooth-group.
2. Развертка модели
Одним из критериев качества модели является степень заполнения разверткой текстурного пространства.
Разворачивать модели рекомендуется с минимально необходимым числом швов, по все той же причине порождения дополнительных вертексов, и появлении текстурных швов на модели.
С появлением таких редакторов как Substsnce painter, практически исчезло требование по удобочитаемости развертки.
Стоит повторить классику: всегда проверяйте соразмерность различных элементов развертки. Два кусочка незначительно отличающихся по разрешению, но находящиеся вплотную к друг другу сильно портят визуальное восприятие модели.
3. Требования движка.
При разработке модели необходимо учитывать так же специфические требования движка.
К примеру, у Unreal Engine отличается Tangent space, что приводит к некорректной работе карты нормалей: проявляются швы, перекручиваются нормали. Соответственно в моделях приходится закладывать дополнительные защитные бордеры, препятствующие проявлению дефектов.
И еще один пример из далекого 2004 г. Одна из самых технологичных игр того времени, DooM 3 обладала крайне специфичным Tangent space, и нормали было возможно запечь только в нем самом (за исключением плоских).
Подобные особенности характерны для всех движков без исключения. Просто так их все описать невозможно, необходимо детально изучить движок под который вы работаете.
«Меньше — значит больше»: краткий туториал по работе в технике лоуполи Статьи редакции
Инди-разработчик Коул Читтим на своём YouTube-канале опубликовал короткий туториал, в котором рассказал о процессе работы в технике лоуполи, а также дал несколько советов для новичков.
По мнению Коула, чтобы сделать лоуполи-модель достаточно открыть 3D-редактор, например, Blender, и создать куб — далее, используя инструмент extrude, его можно превратить почти в любой нужный объект. Конечно, для этого понадобится референс, на который можно опираться при определении формы модели.
Коул советует сохранять максимальную простоту геометрии и не скруглять грани объекта. Если же модель состоит из слишком большого количества полигонов, то можно использовать модификатор Decimate в Blender.
При разукрашивании объекта стоит создать цветовую палитру и придерживаться её на протяжении всей своей работы. Также разработчик отметил, что можно значительно сократить нагрузку на GPU, если использовать только один материал.
Когда объект готов, можно заняться его стилизацией. Например, сделать так, чтобы все полигоны модели были одинаково освещены. Стилизация во многом зависит от цели разработчика: при желании он может сделать так, чтобы цвет имитировал освещение, или же, наоборот, чтобы объект был полностью плоским.
При этом можно совмещать эти техники. Например, в игре Коула Tiny Dino главный герой плоский, а окружение объёмное.
I’m excited to announce my next game coming very soon, Tiny Dino!
Protect your Dino friends from extinction by manipulating the planet.
🌎
По мнению Коула, лоуполи-стилистика ограничивает разработчиков, потому что не даёт возможности реалистично изобразить большинство объектов. Тем не менее задача моделлеров заключается в том, чтобы в условиях таких ограничений создавать узнаваемые объекты. Жёсткие границы вынуждают применять креативный подход и выходить за привычные рамки.
Коул призывает к тому, чтобы разработчики не совмещали в одной сцене объекты разной степени проработки и качества — это разрушит единство и целостность игры. Также он советует использовать ограниченное количество цветов. Например, применять генераторы цветовых палитр или готовые палитры, чтобы подобрать набор, в котором все цвета будут сочетаться друг с другом.
По мнению Коула, ограничения зачастую приводят к отличным результатам. Например, даже на основе двух цветов можно создать привлекательный визуальный стиль.
Но такие правила и ограничения можно нарушать, если для этого есть веский повод и конкретная причина. Коул советует смотреть на удачные примеры чужих работ и анализировать их — это поможет понять, как работают разные вещи, а затем применить это в своих играх.
Такой же подход нужно использовать и в своей работе, чтобы объяснять каждое своё действие — именно подобная степень осознанности поможет понимать, когда можно нарушать правила, а когда для этого нет оснований.
Например, в собственном проекте Коула, Jelly Brawl, всё окружение и сами герои имеют предельно простую геометрию, чего нельзя сказать о боксёрских перчатках и пилах, у которых есть полноценно работающее освещение. Но для этого есть веская причина: эти препятствия влияют на геймплей и могут решить исход поединка, поэтому они должны привлекать внимание игрока, чтобы он мог их избежать.