MAKING OF ZEV OZ9C Hyper-comp.
О себе.
Приветствую всех любителей компьютерной графики!
Кратко о себе... Зовут меня Егор, родом из Ростова-на-Дону. Первое знакомство с компьютерной графикой произошло в 2015 году, а конкретно с GameDEV индустрией в начале 2017 года, после чего пришло осознание, что это именно то, чем я хочу заниматься. Главные мои увлечения это моя работа и спорт, то чем я горю и в чем стараюсь становиться лучше с каждым днем. На данный момент работаю на фрилансе на позиции Художника по оружию и элементам окружения, пилю личные проекты и постепенно совершенствую свои навыки.
Вступление
Идея о создании пистолета пришла весьма спонтанно, я решил, что в моем портфолио не хватает Глока, но делать Глок в его стоковой комплектации было бы слишком скучно и по итогу банально, т.к. Artstation, да и вообще интернет забит такого рода работами. Поэтому я начал поиски интересного кастома и в итоге наткнулся на ZEV OZ9C, мне он понравился и я приступил к его созданию.
Сразу хочу извиниться за то, что статья получилась в некоторых моментах сумбурной и достаточно увесистой по объему, но я старался максимально полно раскрыть тот подход в работе, которому я следую.
Еще хочу внести ясность в повествование и обратить ваше внимание на то, что я не стал подробно описывать все технические этапы разработки и постарался тезисно обозначить самые важные и по моему мнению фундаментальные принципы, которым следую лично. Даже без учета технических нюансов статья получилась относительно большой, поэтому я не стал раздувать ее до космических масштабов и погружать вас в омут скуки и уныния. Я постарался сделать информацию максимально насыщенной и полезной с практической точки зрения и надеюсь, что мне это удалось хотя бы от части.
Всё описанное в статье - лишь взгляд со своей колокольни на то, как мне кажется должно быть и как я подхожу к работе. Все те тезисы которые я постарался раскрыть основаны лишь на моем, сугубо личном, опыте и знаниях полученных за время моего пребывания в индустрии. Я ни в коем случае не претендую на истинность в последней инстанции, но надеюсь, что вы сможете найти для себя что-то полезное в моем полете мысли :)
Процесс создания
Используемые программы: Blender, ZBrush, RizomUV, Substance Painter, Marmoset toolbag, PureRef.
Сбор референсов и анализ функционала
Первым и пожалуй самым важным этапом на пути создания любого игрового объекта (будь то оружие, персонаж или пропс) является сбор референсов. Референсы - это фундамент, который поможет вам быть более уверенным в том, что вы делаете на всех этапах создания ассета, которые мы рассмотрим далее.
Для меня сбор референсов - это своего рода знакомство с предметом работы, способ дать своему мозгу привыкнуть к образу создаваемого оружия и наполнить его таким количеством информации, чтобы в процессе работы у нас возникало как можно меньше вопросов.
Итак, для сбора референсов я использую такие инструменты, как Google поиск и Pinterest.
В качестве рефборда используется замечательная программа под названием PureRef. Программа с широким функционалом, в которой нет ничего лишнего что могло бы отвлекать вас от работы.
Когда задача определена я иду в поисковик Google и начинаю собирать максимальное количество референсов, с целью пополнения визуальной библиотеки, которая в последствии станет для нас опорой в создании ассета...
После того как я собрал рефы из категории "картинки", я начинаю углубленный поиск, перехожу на сайты производителя, магазинов, форумы, где обсуждаются интересующие нас образцы оружия и забираю все оттуда. Иногда бывает так, что некоторые сайты не открываются с вашего IP, в таких случаях я советую поставить одно из браузерных расширений VPN, которое поможет вам решить возникшую проблему. Благодаря VPN я часто натыкался на зарубежные форумы которые не работают на территории стран СНГ, но хранят в себе огромное количество фотографий с таких ракурсов, которые стандартными способами поиска найти невозможно.
Следующим инструментом, который поможет нам обогатить наши визуальные архивы будет Pinterest. Его алгоритмы поиска существенно отличаются от Гугловских, что может сыграть нам на руку.
В поле поиска я вбиваю комбинации слов и ищу то, что мне нужно...
В данном конкретном случае поиск не дал особых результатов, но причиной этого является исключительно небольшая популярность данной модификации Глока. С другими образцами оружия картина более ясная и информации в сотни раз больше. Чем популярнее оружие, тем больше референсов.
Следующим, очень эффективным способом собрать дополнительное количество рефов будут видеоролики (обзоры, демонстрации, сборка-разборка оружия и т.п.)
Благодаря видеоматериалам можно разглядеть объект с экстремальных ракурсов и увидеть те детали, которых нет в поисковиках.
Не менее важным этапом я считаю сбор информации о размерах оружия. Особенно важными эти данные будут при создании рабочего проекта. Если в личном проекте на многие моменты мы можем закрыть глаза, то в работе это не допускается.
Итак, в первую очередь нам нужно определить габариты самого оружия, для этого можно перейти на сайт производителя и найти эту информацию там, или же обратиться к Википедии.
Чаще всего достаточно ввести в поисковике " название оружия + dimentions" и вы увидите результат.
Так же нам важно узнать габариты патрона под конкретное оружие, это также позволит задать корректные размеры.
После того как референсы собраны а размеры определены я перехожу к анализу функционала. Это не обязательно должно быть оружие, это может быть любой объект от ящика и лампы до танка или гаубицы. Важно понимать как именно функционирует объект, если есть это понимание, то процесс работы упрощается в несколько раз. Анализировать функционал я предлагаю при помощи видеороликов, gif картинок и такой замечательной программы как World of Guns: Gun Disassembly.
Если ты понимаешь КАК что-то работает, ты лучше понимаешь КАК это сделать.
Существуют противоречивые мнения касательно того, сколько же нужно собирать референсов? Кто-то говорит что нужно собирать столько сколько реально будешь использовать, другие говорят о том, что мало не бывает и нужно собирать все что найдешь. Я же, в свою очередь, считаю, что нужно по максимуму раскачать свою визуальную библиотеку, дать ей столько пищи, чтобы она не нуждалась в дополнительной информации. На стадии сбора референсов нам важно закрыть как можно больше белых пятен, тех мест в которых для нас присутствует элемент неопределенности.
Но в тоже время, я за то чтобы в ваших референсах, как и в папках и в самом проекте присутствовал порядок. Именно поэтому я разделяю собранные рефы на логические блоки, дабы не бегать взглядом по рефборду и не тратить на поиск нужной мне информации несколько минут, я просто сразу смотрю туда куда нужно...
Итак, рефы собраны, проанализированы и расположены в логичном порядке. Теперь можно перейти к этапу Блокаута.
Blockout
Следующая стадия - это Блокаут (он же GrayBox, он же ProxyMesh), основной целью которой является построение чернового варианта оружия с максимально корректными пропорциями.
Первым делом я создаю так называемый FRAME - это простой куб, которому задаются размеры найденные нами на этапе сбора референсов. FRAME позволит нам соблюдать корректные размеры оружия и не выходить за их пределы.
После этого, ориентируясь на те данные которые у меня есть, я начинаю строить геометрию с максимально близкими к оригиналу пропорциями.
Построение я начинаю с создания патрона, магазина под него и ствола оружия. Такой подход позволит нам точнее попасть в пропорции...
Вокруг этих базовых форм я начинаю наращивать объем (детализировать) опираясь на имеющиеся у меня референсы. Я постоянно сравнивая соотношение размеров деталей к общей форме и общей формы к деталям, правильно ли все расположено.
Советую постоянно держать референсы перед глазами, чтобы проверять корректность результата. В идеале иметь второй монитор.
Очень важно придерживаться логики и идти от общего к частному, от больших форм к деталям. Создали большие формы, проверили пропорции и если вы уверены что все корректно, то можно двигаться дальше. Такой подход позволит вам сэкономить массу времени, которое очень важно при работе как над личными так и над рабочими проектами.
Важно понимать, что на этапе Блокаута сетка для нас не играет никакой роли, именно поэтому мы можем смело использовать булины не боясь испортить топологию.
В итоге я получаю в меру детализированный Блокаут, который дает мне общее представление о том как будет выглядеть оружие...
Важно понимать, что на этапе Блокаута сетка для нас не играет никакой роли, именно поэтому мы можем смело использовать булины не боясь испортить топологию.
HighPoly
На стадии Хайполи нашей главной задачей является получение максимально правдоподобной и детализированной модели, со сглаженными фасками и плавными переходами.
Первым делом я создаю базу под Хайполи. Точно повторяя контуры ранее созданного Блокаута, я создаю меш учитывая будущую ЛоуПоли, то есть корректно подбираю кол-во граней для цилиндров и плавных форм. Такой подход поможет нам избежать лишних трат времени на этапе создания ЛоуПоли.
После этого я выбираю грани по углу в 30 градусов (операция select sharp edges в Blender) и накидываю кризы (операция edge crease в Blender). Это позволит нам оставить сглаживание углов в нулевой позиции, но в то же время подразделить плавные поверхности и цилиндры. Далее накидываю модификатор Sub-D (Subdivision surface) и добавляю поддержки там где это нужно...
После чего мы получаем сглаженную модель с острыми углами, которые без труда можно сгладить в Zbrush и не тратить время на создание полигональных фасок вручную...
Далее я создаю дополнительные элементы которые мне понадобятся для детализации оружия в Zbrush.
Импортируем меш в Zbrush и пересчитываем ему сетку при помощи Dynamesh (сетка должна быть достаточно плотной) Потом, при помощи операций add и subtract мы добиваемся нужного результата. После чего, используя ползунок polish crisp edges во вкладке deformation, сглаживаем острые углы.
В конце, для более быстрого и удобного экспорта я делаю decimate и вывожу меш обратно в 3D пакет. По итогу у нас получается готовая, сглаженная и детализированная модель.
Для полноценной картины осталось добавить логотипы, мелкую фактуру и гравировки, но это мы сделаем на этапе текстурирования.
LowPoly
Стадия ЛоуПоли подразумевает максимальную оптимизацию ассета для наиболее качественной интеграции в игровой движок.
Как вы помните, я создавал базу для ХайПоли с учетом оптимизации для ЛоуПоли, это было нужно для того, чтобы мы могли просто скопировать уже существующую базу и оптимизировать ее, не затрачивая время на ретопологию и создание пушки с нуля.
Собственно это я и делаю. Копирую ХайПоли базу на отдельный слой, выделив весь меш снимаю с него ранее установленные ограничители сглаживания (кризы) и приступаю к оптимизации.
Я не буду расписывать весь процесс целиком, т.к. это может продлиться очень долго и быстро вам наскучить, но есть ряд моментов которые нужно учитывать в процессе оптимизации.
В первую очередь это силуэт и плавные формы, очень важно добавить больше сегментов в тех местах где геометрия выглядит угловато. Если этого не сделать, то мало того что могут возникнуть проблемы на этапе запечки в виде волнистых артефактов, это также сильно повлияет на правдоподобность восприятия модели игроком/зрителем.
В следующем примере вы можете увидеть, что на базе под ХайПоли (слева) сегментов не достаточно, в отличие от ЛоуПоли (справа). Проанализировав силуэт, а эта форма является силуэтообразующей, я понял что если я не добавлю дополнительных сегментов в этом месте, это негативно отразится на восприятии модели.
Старайтесь по максимуму оптимизировать поликаунт на плоскостях и не бойтесь потратить лишний полигональный бюджет на плавные и цилиндрические формы, это обязательно даст свои плоды.
Удаляйте те полигоны которые не видны игроку. Всевозможные прилегающие полигоны или задние стенки объектов. Это поможет сэкономить общий поликаунт и получить лучший тексель на этапе UV развертки.
Следующим моментом который я хотел бы осветить, является относительность поликаунта к масштабу объекта. Подобное правило работает в основном на больших ассета (танк, машина, самолет, корабль и т.п.) но его нужно держать в голове и при работе над крупногабаритным оружием.
Чем меньше цилиндр, тем меньше сегментов. Другими словами мы не должны допускать ситуацию, при которой у клепок на танке будет столько же сегментов сколько на стволе.
Так же стоит думать о том, что будет попадать в поле зрение игрока а что нет, где можно сэкономить, а где наоборот делать с запасом. Всегда ставьте себя на место игрока и анализируйте объект с его точки зрения. В оружии это не менее важно, какую пушку вы бы не делали, всегда проверяйте как она будет смотреться с позиции игрока (FPV - first person view) и если вы видите угловатости которые бросаются в глаза, смело добавляйте сегментов.
Триангуляция. Каждый движок триангулирует модель в соответствии со своими алгоритмами, а поскольку предсказать как именно движок это сделает мы не можем, приходится делать это самим. Обращайте пристальное внимание на Н-гоны в вашей модели. Многие программы имею функционал который может показать вам где у вас расположены Н-гоны и затем вы должны их триангулировать таким образом, чтобы шейдинг был адекватным и не происходило наложения полигонов. В триангуляции Квадов нет такой строгой необходимости, т.к. шанс того что они триангулируются с ошибкой минимален.
Старайтесь не отбивать геометрией слишком маленькие детали чтобы не тратить на них лишний бюджет, они прекрасно запекутся в карты нормалей. Как вы можете увидеть на примере, ХайПоли имеет детализацию на спусковом крючке, в отличие от ЛоуПоли, на которой просто плоский полигон...
Подводя итог по ЛоуПоли, я бы хотел сделать очень важное уточнение. Есть существенная пропасть между личными и рабочими проектами. Большинство моментов, которые мы учитываем и постоянно держим в голове при оптимизации модели важны в основном при создании рабочего проекта (на фрилансе или в студии). В личном проекте мы можем позволить себе отбить геометрией каждый болтик, что не всегда допустимо в реальной работе. Помните, что Портфолио это в первую очередь про подачу, и ее ничто не должно портить. При работе над личными проектами для портфолио нет строгих требований в плане оптимизации, именно поэтому я и писал ранее, что не нужно бояться добавлять лишних сегментов, лучше вы добавите больше чем надо (без фанатизма конечно) и все будет выглядеть плавно, чем будете трястись за каждый полигон и в итоге потеряете в подаче.
UV mapping
Многим людям не нравится возиться с разверткой, и я их понимаю, я сам не большой фанат этого, чисто технического этапа в пайплайне. Люди недооценивают его значимость, стараясь побыстрее его проскочить, но так делать не рекомендуется по ряду причин. Качество запечки карт необходимых для текстурирования напрямую зависит от того на сколько вы вложились в развертку. И самое главное, качество финальных текстур тесно связано с качеством созданной развертки.
Если вы делаете развертку для рабочего проекта, то требования к ней могут быть самыми разными. В случае же с личным проектом, просто стоит обращать внимание на несколько основных моментов.
Выравнивание шеллов. Каждый UV шелл, который поддается выпрямлению нужно выпрямить и расположить либо вертикально, либо горизонтально. В компьютерной графике существует такое понятие как aliasing - это своего рода лесенка, которую вы часто можете видеть в играх на низких настройках графики. В работе с UV мы должны постараться нивелировать этот эффект путем горизонтального или вертикального расположения и выравнивания uv островков.
На примере ниже вы можете видеть как проявляется этот эффект. И чем ниже разрешение текстуры, тем более явным он становится.
Следующий важный нюанс помогающий выиграть в плане качества ваших текстур - это texel density. Если кратко Тексель - это величина, которая является отношением размера текстуры к габаритам 3d модели. Измеряется Тексель в пикселях на метр/сантиметр.
Для того чтобы применить это знание на практике, нам нужно понимать, что чем меньше мы делаем какой-либо островок на ЮВ, тем больше места мы получаем для всех остальных шеллов. За счет этого собственно и увеличивается площадь занимаемая шеллами, а следовательно и качество текстур у нас становится выше.
На примере вы можете видеть, что во внутренней части рукоятки имеется достаточно большой шелл, который занимает много места. Плюс в том, что этот участок модели практически никогда не попадает в поле зрение игрока, а значит, мы может этим воспользоваться и уменьшить его относительно всех остальных элементов на UV. Пропорции уменьшения могут быть очень разными, но отталкиваться нужно от уровня видимости элемента. Условно 10-15% для средней видимости, 25-30% для плохо видимых и 50 и более процентов для относительно не видимых участков. Опять же смотрите на модель с позиции игрока и думайте, что он видит постоянно, что видит плохо, а что вообще не попадается ему на глаза и исходя из этого уменьшайте шеллы.
В довершение стоит рассказать о нюансах паковки UV. В отличие от рабочего проекта у нас нет строгих требований к паковке, поэтому мы можем сыграть на такой вещи как padding (отступ от внешней границы шелла). Если в рабочем проекте он чаще всего должен соответствовать разрешению текстуры (16px для 4k; 8px для 2k; 4px для 1k и т.д. ), то в лично проекте мы можем отойти от строгих значений и сделать padding 10-12px для 4k. Что позволит нам выиграть лишнее пространство на UV. Саму паковку можно осуществлять как в ручную, так и автоматически. На сегодняшний день, при правильных настройках, автопакинг может выдавать весьма годный результат. Лично я сначала пакую автоматически, потом, там, где это нужно довожу руками.
После того как мы закончили с UV разверткой, можно перейти к бейку.
Prepare & bake
Прежде чем приступить непосредственно к запечке, нам необходимо подготовить подготовить ХайПоли и ЛоуПоли.
Есть 2 основных способа запекать карты: Первый - это разнесение модели на элементы (explode) и второй - это нейминг отдельных элементов. Все это нужно для того, чтобы исключить возможность пересечения геометрии и некорректной запечки одних элементов на другие. Нейминг или explode позволяет сделать своего рода изоляцию для исключения возможных артефактов.
Я пользуюсь в основном неймингом, т.к. считаю этот метод наиболее оптимальным и практичным лично для себя.
Все что нам нужно сделать - это дать уникальные имена одинаковым элементам как на ХайПоли так и на ЛоуПоли и добавить префикс _low (для LowPoly) и _high (для HighPoly).
Например: (Barrel_low : Barrel_high); (Trigger_low : Trigger_high)
Так же, советую перед бейком проверить ХайПоли и ЛоуПоли на соответствие, они должны идеально прилегать друг к другу. Не должно быть разницы в размерах или расположении.
Если с этим все в порядке, то вы увидите своеобразный эффект наложения и пересечения, как на примере ниже...
После того как вы закончили подготовку можно переходить непосредственно к запечке. Основными инструментами для бейка на сегодняшний день являются Substance Painter и Marmoset Toolbag. Выбор инструмента зависит исключительно от ваших предпочтений, но я бейкаю в 95% случаев именно в Marmoset Toolbag, т.к. эта программа имеет гибкий функционал и позволяет налету редактировать ориентацию нормалей, что является несравненным преимуществом.
Сетап для бейка выглядит следующим образом...
Далее, я по стандарту выставляю нужные мне настройки, а именно глубину цвета 16bit и максимальное число проходов (samples) после чего бейкаю карты.
Там где это нужно я использую инструмент Paint skew, за который я и люблю Marmoset и который позволяет налету редактировать нормали. Это нужно в тех местах, где у вас видно явное отклонение запекаемых деталей (distortion effect). Подобный дефект возникает из-за того, что ЛоуПоли использует направление своих усредненных нормалей для поиска и переноса деталей с ХайПоли.
На выходе мы получаем все необходимые нам карты, которые будем использованы в процессе текстурирования.... (Normal, Object normal, Ambient occlusion, Curvature)
После того как карты запечены, а дефекты отсутствуют можно перейти к созданию текстур.
Texturing
Лично для меня эта стадия является наиболее интересной и творческой. На текстурирование я стараюсь выделять как можно больше времени, потому что я, как наверное и многие, очень люблю возиться с текстурами.
Этот этап настолько объемный и информационно обширный, что достоин отдельной увесистой статьи, от нюансов детального анализа референсов до работы с цветовыми комбинациями и точками фокуса. Но дабы не уходить в дебри и не заставлять вас читать многостраничный талмуд, я выделю ключевые моменты, которые, по моему мнению, имеют первостепенное значение в создании текстур.
Первым делом я добавляю все те мелкие элементы которые нужны для полноценной картины нашего оружия (гравировка, фактура и т.п.)...
Делаю реимпорт карты нормалей и приступаю к текстурированию. Как вариант вы можете подцеплять созданные детали при помощи якорей (anchor point). Каким образом поступить, решать вам.
Первый императив, который нужно заложить у себя на подкорке - это правило "От простого к сложному" Ошибка большинства новичков том, что они сразу хватаются за всевозможные генераторы и гранж мапы не подумав об основе своих текстур. Текстуры должны выглядеть интересно не только в конце, но и в самом начале, включая подборку цвета, разбиение по тону продумывание базовых материалов и т.п.
База. Я всегда начинаю работу с базы. Развожу элементы оружия или пропса по цвету и тону, для того, чтобы объект не выглядел однотонным и уже на ранней стадии был интересным. Тут важно соблюдать баланс и правило чередования, не стоит сильно перебарщивать и делать элементы нарочито разными по тональности, такой подход может наоборот все испортить. Может показаться, что такая незначительная разница в тоне не играет существенной роли и не имеет особого смысла, но это не так. Человеческий мозг эволюционно так устроен, что первым делом распознает тон, а потом уже цвет. (это древний механизм защиты, который позволял различать хищников в темноте). Подобные сигналы у современного человека считываются мозгом на подсознательном уровне. Именно поэтому нам важно, с самого начала, делать упор на разнообразие и интерес в нашей модели.
Базовое разбиение и материалы выглядит следующим образом...
Далее я занимаюсь тем же самым, но уже на уровне отдельных материалов, делаю материалы (в зависимости от требований) более разнообразными по цвету и тону. Как вы уже поняли, первое время я работаю исключительно на уровне цвета, внося нюансные корректировки и пробуя уйму вариантов в попытках сделать цвет интересным. На данном этапе Рафнеса (шероховатости), фактуры и других каналов для меня просто не существует. Я работаю только в рамках цвета и тона.
Старайтесь постоянно переключаться между каналом цвета (base color) и превью материала. В идеале стоит настроить импорт-экспорт между Substance Painter и игровым движком (или Мармосетом) для того чтобы полноценно воспринимать то, как ваша модель будет выглядеть в условиях того или иного освещения и обработке движка.
Итог работы с цветом вы можете видеть ниже. Как вы можете заметить многие нюансы которые я добавляю в канал цвета едва заметны на превью, но это дает свой эффект...
Далее я вытягиваю AO и Curvature, тем самым задавая объем. То есть, мы затемняем углубления и высветляем выпуклости и углы. Плюс я создаю градиенты в логично обусловленных местах, градиенты добавят разнообразия и будут играть в плюс к восприятию пистолета как реалистичного оружия...
После этого я перехожу к работе над фактурой и рафнесом. Я перебираю огромное количество гранж карт, смешиваю их друг с другом, пропускаю через генераторы и смотрю какой это оказывает эффект. Это отнимает огромное количество времени, но при работе над личным проектом я стараюсь особо не спешить, у меня нет строгого эстимейта (сроки на разработку проекта), благодаря чему можно уделить больше внимания текстурам в целом.
В рафнесе, основное правило, которого я придерживаюсь это точки контраста и разбиение, как мы раньше разбивали цвет по тону, так же и рафнес стараемся немного развести в стороны. Я сам раньше допускал эту ошибку и в финале карта рафнес выглядела очень плоско. На выходе мы получаем в меру контрастную и разнообразную карту шероховатости...
В конце я перехожу к углубленному анализу референсов и думаю над тем, что можно еще добавить, а что следует убрать. В основном в конце я добавляю царапины, сколы на краях, всевозможные пятна, подтеки, облупленную или стертую краску, грязь и пыль (в зависимости от изношенности), наклейки и надписи (если они смотрятся органично) и прочее. В общем все то, что по моему мнению поможет оживить модель...
Итоговая картина по текстурам выглядит так...
И старайтесь вносить разнообразие по цвету и шероховатости на плоскостях, чтобы глазу человека было за что зацепиться. Это не всегда обязательно в рабочих проектах (как и многие из тех креативных моментов которые мы добавляем в личных проектах), но в личном я считаю важно обращать внимание на подобные нюансы...
Вообще в работе с текстурами (как, наверное, и в остальном) понимание приходит с опытом. Сколько чего добавить, где и что убрать. Если и добавлять пыль, то какую и сколько, чтобы это не выглядело нарочито и не бросалось в глаза. Если добавлять отпечатки пальцев, то где их расположить и какого они должны быть размера. Где должны быть градиенты, а где это будет неуместно и так далее. Все эти и подобные вопросы не поддаются строгой алгоритмизации и тут всегда будут промахи. У меня их тоже не мало :) Я люблю приводить пример с вождением автомобиля, как бы идеально вы не знали теорию, как бы хорошо вы не просчитали каждый свой шаг и как бы не были уверены, что сможете с первого раза сесть и поехать, если вы делаете это впервые, вас с огромной вероятностью ждет неудача, потому что мало знать теорию, машину нужно чувствовать, ощущать ее габариты и уметь ловить сцепление, а этого теория дать не может. Так и в компьютерной графике, многие вещи, пройдя сотни и тысячи часов практики, начинаешь выполнять на интуитивном уровне. Решения начинают приходить сами собой.
Render & presentation
Рендер и презентация - это тема, не менее обширная чем работа с текстурами, здесь есть много нюансов и подводных камней. Поэтому, чтобы не уходить в дебри теории освещения и технических нюансов, я отмечу наиболее важные аспекты визуальной подачи своих моделей, которые я учитываю на этом этапе.
В первую очередь я загружаю в Marmoset финальную версию ЛоуПоли и текстуры, после чего делаю базовый сетап в сцене, тем самым подготавливая почву для освещения.
Настройки рендера под финальную картинку я выставляю сразу, чтобы видеть результат работы со светом и понимать как изображение будет выглядеть в итоговом варианте. Так как Marmoset имеет широкий функционал, мы можем очень просто переключаться между режимами предпросмотра: Draft quality и Full quality.
На этапе постановки света я перехожу в режим Draft (черновой вариант) и начинаю работу. Есть множество разнообразных схем освещения и с опытом у вас выработается свой подход, но есть базовые правила которые могут помочь на начальном этапе работы со светом. Наверное многие слышали о 3х точечной схеме освещения, это ни в коем случае не панацея, это лишь базовая схема помогающая сформировать объем представляемого объекта. Выглядит эта схема следующим образом...
На просторах интернета вы можете встретить множество вариантов наименований этих ключей освещения, но суть у них всегда остается прежней: Key light (рисующий свет); fill light (заполняющий свет); rim light (контровой свет). Чуть дальше я подробно охарактеризую каждый из этих моментов.
Работу подобной схемы освещения вы можете увидеть на примере ниже...
Логика этой схемы применима не только в портретной съемке, но и в предметной визуализации.
Первое что я делаю в плане освещения - это подгружаю контрастную HDRI карту (изображение широкого диапазона яркости), которая будет служить мне своего рода заполняющим светом (fill light), потому что она более менее равномерно освещает модель со всех сторон. Если хотите, вы можете использовать простой источник освещения большого радиуса и слабой интенсивности, чтобы модель была еле видна. Учтите, если вы, как и я, используете в качестве заполняющего света HDRI карту, то она не должна иметь подмешанного цвета. Часто люди используют подобные карты с изображением леса или ярко оранжевых песчаных дюн, так делать не нужно. Вы и только вы должны контролировать цвет присутствующий в сцене, к тому же зеленый цвет леса посредством света будет подмешиваться в ваши текстуры, тем самым портя их.
Вторым этапом идет добавление рисующего света (key light), позволяющего разглядеть очертания нашего объекта и начать ощущать форму. Это основной свет который формирует тени и точки наибольшей освещенности. Не пренебрегайте этим моментом, именно рисующий, или как его иногда называют ключевой свет, формирует восприятие вашей модели. Покрутите источник света и посмотрите, в какой позиции рисующий свет будет смотреться наиболее выигрышно. Не перегибайте с яркостью, чтобы не создавать выжженных участков, но и не делайте его слишком тусклым.
Третий этап - это добавление контрового света (rim light). Он нужен для того, чтобы отделить ваш объект от фона и задать объем всей сцены. Наше зрение так устроено, что быстрее и активнее всего фокусирует свое внимание именно на силуэтах, и для того чтобы этот силуэт был явным мы создаем своего рода окантовку из света (это особенно актуально на темном фоне). Обычно контровой свет используют в относительно небольших пропорциях (чтобы он был едва заметен), но я иногда осознанно выхожу за эти рамки для создания более эффектной и сочной подачи.
Последовательная интеграция этой схемы показана ниже...
После того как сетап базовой трехточечной схемы закончена я перехожу к нюансной проработке, которая основывается исключительно на опыте и моем ощущении "правильного". Я таскаю разные источники света и смотрю на то, как они играют на модели. В работе с металлом это имеет максимально значение, т.к. показать форму металла сложнее, чем форму дерева или пластика, тут очень легко недожать или наоборот все испортить.
Финальный результат работы с освещением выглядит следующим образом...
В конце я начинаю играть с балансом света и тени за счет регулировки яркости HDRI карты, которая в нашем случает, выполняет роль заполняющего света (fill light). В этом аспекте стоит придерживаться двух моментов: 1 - не стоит задирать яркость на столько, что начинаю появляться выжженные пятна на изображении ; 2 - не снижать яркость заполняющего света до такой степени, что тени начинают проваливаться в черноту. 3 - не стоит сильно задирать яркость теней, такой подход делает картинку плоской и скучной (тени должны быть тенями). Все эти ошибки вызывают либо потерю деталей на рендере, либо делают изображение плоским.
Все крайности описанных ошибок вы можете видеть на примере ниже... (Выгорание | провал теней | плоское изображение)
Поэтому, единственный совет который я могу дать - соблюдайте баланс.
После того как я закончил работу со светом, перехожу к созданию фона. На практике я понял, чем темнее объект, тем светлее следует делать фон и наоборот, чем светлее объект, тем более темный тон можно использовать для фона. Но нужно держать в голове, что все эти "правила" лишь условности задающие общие рамки в работе. Нерушимых постулатов тут нет. В своих проектах я позволяю себе делать фон относительно темным за счет гипертрофированного rim light эффекта. Поэтому старайтесь искать баланс между яркостью фона и света. Я также стараюсь разбавлять фон и не делать его тонально равномерным, для меня это выглядит скучно...
Для фона можно использовать как изображение с HDRI так и свои собственные (я свои делаю в Photoshop).
В конце я просто делаю небольшую нюансную постобработку в программе Adobe Lightroom, немного добавляю контраст (если это нужно), приглушаю или наоборот добавляю насыщенность цвета, увеличиваю резкость и добавляю виньетирования, в общем довожу до ума. После этих манипуляций я заканчиваю работу над проектом и публикую результат...
Трудности и нюансы
К вопросу о том, возникали ли у меня какие-либо трудности на пути разработки, я бы сказал, что некоторые препятствия все же были.
Референсы. Иногда бывает так, что вы находите какое-то оружие, решаетесь создать игровую модель на его основе, но первым препятствием становится изрядная непопулярность этой модели. Это та проблема с которой художники иногда сталкиваются. В случае с OZ9C было умеренное количество референсов, конечно не такое количество, как у таких популярных стволов типа AK74 или AR15, но их было достаточно для общего понимания конструкционных особенностей и внешнего вида. В тех случаях, когда референсов практически нет или они ужасного качества и в ограниченном количестве, все что я могу предложить это поиск схожих моделей оружия в музеях и частных коллекциях, других путей решения такой проблемы я не вижу.
Пропорции. Я не считаю это трудность, скорее это просто тот этап, на который нужно потратить изрядное количество времени, не подгоняя себя и не боясь переделывать все с нуля, в ситуации если вы видите что что-то идет не так. Пропорции это моя больная тема, у меня всегда возникают трудности с этим ввиду ужасного глазомера :) Но с опытом, я вижу что результат становится лучше, а значит что-то я все же делаю правильно.
Рендер. У тех из вас, у кого есть проблемы с постановкой света или подачей, или же тех кто просто хочет улучшить свои навыки, я могу посоветовать учиться у фотографов (особенно предметников): читайте статьи по фотографии, изучайте теорию, общайтесь с людьми которые профессионально этим занимаются и я вас уверяю, ваше понимание света, цвета, кадра и подачи выйдет на определенно новый уровень. Вы станете замечать те ошибки в своих и чужих работах, на которые раньше просто не обращали внимание. Я проверил это на личном опыте и это работает, главное научиться применять полученные знания на практике.
Итог
Подводя итог, могу сказать, что в целом, результатом я доволен, за исключением некоторых погрешностей, без которых мне кажется не обходится ни один проект. В плане текстур и подачи я полностью добился того результата, который планировал.
Если говорить о временных затратах, то ориентировочно на проект ушло около 15 дней по 3 часа в сутки. Итого в районе 40-45 часов чистого рабочего времени. В личных проектах я не ставлю себе жестких дедлайнов, но и затягивать не люблю, дабы не превращать проект в долгострой.
Есть много моментов, которые не вошли в статью ввиду понятных причин. Большая часть технических моментов была опущена, дабы не концентрироваться на конкретном софте и не загонять себя в рамки. Так же, многие рассуждения о подходе к самой работе, я постарался нивелировать или максимально упростить. Тем не менее, надеюсь однажды я смогу рассказать вам больше...
Под конец, хочу внести ясность относительно практического опыта. Я считаю, что он очень важен в нашем деле и именно на него нужно делать упор на пути своего прогресса и развития. Есть две основные крайности самообучения у художников: Одни скачивают терабайты курсов и статей по графике и начинают их читать и смотреть совершенно забывая о практике, вплоть до того, что это становится инструментом прокрастинации и человек начинает думать в следующем ключе "Я еще недостаточно посмотрел/узнал/прочитал, чтобы преступать к практике. Еще один видеоурок и я буду уверен в том что и как нужно делать." ; Другой тип людей с головой погружаются в практику и старается все изучать исключительно методом тыка. Это две крайности одной и той же ошибки. Как говорил Суворов: "Теория без практики мертва, а практика без теории слепа." Поэтому старайтесь соблюдать баланс и подходить к процессу обучения разумно. Есть разные пропорции и правила, но я вывел для себя соотношение 70/30 (70% - практика ; 30% - теория), мне оно кажется максимально практичным и эффективным.
Я надеюсь, вы почерпнули для себя что-то полезное или возможно даже узнали что-то новое. Если это так, то все было не зря и я смог донести до вас те скромные крупицы своего опыта и знаний, которыми обладаю сам. Я желаю вам быть осознанными и усердными на пути вашего становления и прогресса. Смелости и удачи в достижении всех ваших целей! ;)