Работа над ошибками в 3D. Интермеццо

Здравствуйте!


Часть 1

Часть 2

Часть 3

Часть 4

Часть 5.1


Сегодня, как некоторые уже смогли догадаться, мы снова обойдем практические знания стороной. Я прошу прощения у всех, кто подписался на меня (а я был очень удивлен популярности темы) и обещаю вам уже завтра исправиться, выложив новый пост, продолжающий тему Smooth groups. В нем я наглядно покажу, как запекаются различные варианты групп сглаживания, как группы сглаживания тесно связаны с UV, а также исправлю ошибку, которую по неосторожности допустил в информации про тангенты, желая все максимально упростить.


Но сегодня о другом.


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


И, раз уж мой ликбез посвящен "ошибкам в 3D", то обойти эту "ошибку" я попросту не имею права. Ибо в ней на мой взгляд заключается истинная проблема. И без решения этой проблемы все остальное окажется попросту бесполезным.


Итак, начнем по порядку:


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


И да, и нет. Во-первых, оптимизация стремится в первую очередь не ухудшить качество, а избавиться от лишнего. Если вертекс/эдж/полигон не привносят ничего в форму, не нужны для упрощения бейка или опоры для адекватной триангуляции (возможно этот вопрос мы затронем), то спрашивается, что он вообще делает на модели? Убрать лишнее - это первостепенная задача любого художника. С давних пор существует правило: идеально - это когда нет ничего лишнего.


Однако, довольно часто приходится именно что "ухудшать" модель.


- Как часто игрок будет видеть в игре этот объект? Два раза? Как часто этот объект будет находиться прямо перед камерой? Никогда? В таком случае выделить на него 10к треугольников - офигенный вариант! - Именно так сказал... ни один арт директор или тим лид, находящийся в своем уме.


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


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


2. Современное железо может потянуть овердохералион полигонов в кадре, так зачем тогда что-то оптимизировать?


По последним данным, собранным с форумов CS:GO, Warface и популярного паблика ВК "Дивайсы настоясчих поцонтрэ", PC среднестатистического пользователя на сегодняшний день представляет из себя машинку, собранную на базе последнего поколения i7, две GF 1080Ti, сдобренный 64 ГБ оперативы и приправленный SSD на терабайтничек. Это, конечно, только в том случае, если вы не нищеброд, который вынужден превозмогать, имея в комплекте всего одну 1080Ti (искренне жаль этих людей).


А теперь серьезно. Даже самый мощный PC в состоянии потянуть работу с 20-40 млн полигонов. Заметьте - работу. Самый простой шейдинг, никаких текстур, никакого сглаживания, никаких анимаций. Просто возможность хоть как-то взаимодействовать с объектом. И назвать эту работу комфортной язык уж точно не повернется. Можно и больше. Но это будет уже просто вывод на экран статичной картинки, а любая попытка взаимодействовать с данным объектом может привести в лучшем случае к необходимости прибегнуть к кнопке Reset.


Целевыми платформами, под которые обычно выделяют технические бюджеты, являются консоли текущего или будущего поколения. Никто не будет делать игру, которую потянет только самый мощный ПК (если вы конечно не Crytek, пусть земля им будет пухом). И заметьте, консоли на порядок слабее топовых ПК, да и большинство игр на них идут всего лишь в 30 кадрах в секунду.


Еще одним важным замечанием будет то, что разработка игр - это командный вид спорта. Игра не состоит из одних только полигонов. Это код, анимации, текстуры, материалы, интерфейс, ИИ, звук и многое-многое другое. И абсолютно все это жрет ресурсы консоли или ПК. И если вы делаете модель для игры, то вы всегда должны помнить о том, что кроме вашей модели в игре будет еще огромное множество всего, что очень бы не хотело, чтобы все мощности ушли на ваш "детализированный чеснок". Идеальной должна стать игра, а не ваша модель. И вам каждый день работы над игрой придется жертвовать чем-то. Большая часть команды - это не Кодзимы, это не Ньюэлы или Вавры. Это люди, чьих имен никто не знает, это люди которые делают чеснок или кружки. Велика вероятность того, что конкретно их модели игрок вообще не увидит.


Железо сделало огромный шаг. Это так. Но давайте взглянем на то, на что реально уходят мощности:

Работа над ошибками в 3D. Интермеццо 3D, Gamedev, Длиннопост
Работа над ошибками в 3D. Интермеццо 3D, Gamedev, Длиннопост

Да, сетка стала плотнее, но обратите внимание на плотность объектов, на небо, на растительность, на освещение. Детали, мелочи, которые создают атмосферу в игре. Именно эта мелочевка создает ощущение живого мира. И каждый сэкономленный полигон может в итоге позволить авторам игры добавить в мир еще один объект, который придаст живости и повлияет на итоговое впечатление игрока. Разве не стоит ради этого немного ужаться при моделировании чеснока?


3. Зачем запариваться? Сэкономить 2 полигона, но потратить кучу времени.


Запариваться затем, что в этом и заключается ваша работа. По поводу времени. Во-первых, время, потраченное на оптимизацию, изначально учитывается при составлении графиков и бюджетов. Во-вторых, опытный художник отличается тем, что он делает все гораздо быстрее начинающего. В-третьих, подумайте. ААА игры разрабатываются командами, состоящими из 500, а порой и 1000+ человек. И разрабатываются они по несколько лет. И стоят сотни миллионов долларов. Если вы думаете, что все это время они катаются верхом на проститутках по двойным сплошным из кокаина, а за месяц до релиза сидят и "не запариваются", то вы, мягко говоря, заблуждаетесь. Даже на самый небольшой ассет для игры у опытного художника может уйти несколько рабочих дней, а то и недель. Говоря "небольшой", я имею в виду именно что небольшой. Клумбу, лестницу, фонарь. И, уверяю вас, что занимаются они именно тем, что запариваются. И стараются выдать не просто качественный результат, а результат, который позволит игре стать такой, какой ее задумали. Красивой, атмосферной, детализированной.


Если вы придете на собеседование (если!) в Naughty Dog, Ubisoft, EA и скажете им, что запариваться не надо, ведь современное железо - огонь, да и полигонаж не вызывает серьезных просадок ФПС (честно, вы тестили не на самом топовом железе), то в лучшем случае с вами вежливо попрощаются.


Знаете кто не запаривается?

Работа над ошибками в 3D. Интермеццо 3D, Gamedev, Длиннопост

Тут хоть миллиард полигонов пусть будет. Запариваться тут смысла нет. Если это результат, к которому вы стремитесь - вперед. Не запаривайтесь.


Ну, и напоследок, вполне серьезное предложение, которое поможет вам осознать, что современные игры не используют какие-то убердетализированные модели. Возьмите любую игру, которую вы считаете эталоном графических технологий и поиграйте в нее. Но не так как это делают обычные игроки. А как профессионалы. Внимательно рассмотрите мелкие объекты, на которые вы не обращали внимания. Присмотритесь к швам, к текстурам. Поглазейте на дома, на вывески, на трубы. Я думаю, что уже буквально через пять минут такой "игры" вы перестанете думать, что возможности современного железа безграничны. Не будет у вас мыслей о том, что запариваться не стоит. И станете вы на шаг ближе к профессиональному дзен.


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


Удачи вам всем. До новых встреч.

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"