Making of «Меркурий»

В этой статье наш ученик Михаил Циснецкий расскажет о процессе создания первого личного проекта и проведет "работу над ошибками"

1-4.jpg

I. Знакомство

Привет! Меня зовут Михаил, мой Artstation.

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

3D был увлечен давно, с того момента, как увлекся геймдевом, можно считать со школы. Но дальше примитивных моделек дело не заходило, так как больше учился программированию. Года 4-5 назад, будучи приглашенным в инди команду по разработке игры про парусные корабли, начал уделять 3D больше внимания. Но обрывочные знания из интернета, несистемный подход к обучению, да и основная работа не позволяли делать более-менее хорошие модели.

Примерно год назад было решено оставить IT если не позади, то где-то сбоку и выбрать в качестве основной цели и работы - 3D. Как раз на глаза попалась школа Kaino с курсом “Gamedev”, после прохождения которого, многое, что вроде бы итак знал, стало понятнее и структурировалось из “вроде бы надо так” в “надо вот как”. В голове все “разложилось по полочкам”.

1-4.jpg

О проекте

Бриг «Меркурий», сделанный почти год назад, стал первым моим самостоятельным проектом после курса “Gamedev”. Сейчас я сделал бы некоторые моменты по-другому, о чем упомяну в этой статье. Многие вещи можно было бы упростить и сэкономить время, но тогда это были мои шишки, которые я с удовольствием набивал. Ведь без ошибок не бывает прозрения.

Хоть я и потратил много времени, все равно он стал моей отправной точкой в профессию «3D-моделлер». Этот бриг ловил хорошие отзывы и на собеседованиях в студии и при поиске заказчиков на фрилансе. Работа заняла где-то недели 2, была сделана больше как закрепление навыков после курса. Так как изначально задумывал только общие планы на рендерах и сильной проработкой не занимался.

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

II. Making of

Моделирование

Начинается все, конечно же, с чертежей и референсов. Так как реальные фото «Меркурия», по понятным причинам, отсутствовали, в качестве референсов использовал фото стендовых моделей брига. Чертежи собирал по форумам судомоделистов.

1-4.jpg

Итак:

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

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

1-4.jpg

Сам корпус служит донором геометрии для остальных частей: киля, палубы, внутренней части корпуса, отмосток палубы и т.д. Это нужно учитывать, чтобы не пришлось прокидывать лишние ребра для той же палубы.

1-4.jpg

Когда наиболее крупные части корпуса были готовы, настало время для мачты и рей. Все из примитивов — цилиндров.

1-4.jpg

После идет первый из долгих процессов – добавление мелочей: бочек, «вороних гнезд» и всего такого. Какие-то детали делаются тоже из примитивов, а некоторые уже посложнее.

Пушки и карронады делались так же по чертежам. Главное, при моделировании нужно было установить pivot point правильно, так как размещение орудий на палубе делалось при помощи «Привязки при трансформации» (snap), по граням.

Так как по всей палубе будут расставлены одинаковые карронады, то делать независимые копии (ctrl-D) смысла не видел, сделал через связанную копию (alt-D), это сэкономит место на UV развертке и время.

1-4.jpg

Шлюпки смоделированы так же, как и корпус брига - по чертежам, затем я разместил их в нужном месте. Из примитивов «тор» сделал крепежные кольца, отсек часть и утопил в геометрию, где они должны быть. Добавил крепежные элементы, решетки, колки для крепления концов и т.д. и т.п.

В общем много почти однообразной, нудной работы по наполнению палубы и мачт деталями. В большинстве своем из простых моделей, с применением модификатора mirror (почти для всего, что есть на бортах) и solidify для некоторых элементов.

1-4.jpg

Наиболее интересным было создание резных деталей украшения корпуса.

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

1-4.jpg
  • Добавил в сцену текст, написал то, что нужно;
  • В настройках объекта во вкладке shape уменьшил разрешение и комбинацией Alt+C конвертировал текст в меш.
1-4.jpg

Далее получившемуся мешу с помощью модификатора solidify придал толщину и удалил лишние грани, которые видны не будут и лишь займут место на UV развертке.

1-4.jpg

Резные украшения делались таким образом:

  • Выбирал референсы, и обводил по контуру, причем все канавки и углубления так же выделял ребрами;
1-4.jpg
  • Заполнил все гранями (клавиша F) и экструдировал;
1-4.jpg
  • Инструментом «нож» порезал примерно таким образом и сместил, там где более скругленные части – добавил вершины инструментом bevel.
1-4.jpg

Декоративные элементы готовы.

Далее наступает самое интересное – моделирование такелажа.

Тут я допустил пару ошибок: во-первых, я не знал про встроенный аддон Extra objects. Во-вторых, я не использовал связанные копии для блоков, которых оказалось довольно много. Хоть они и мелкие, и места на UV развертке занимают немного, но все равно можно было сэкономить.

Сам такелаж я делал обычными кривыми из двух точек. Провисающие канаты и тросы делал через вершины:

  • Добавил плоскость;
  • Удалил лишние вершины, перенес 2 точки к нужным местам: началу и концу троса;
  • Добавил модификатор Subdivision Surface на 1 итерацию;
  • Получившуюся вершину опустил по оси z и инструментом bevel (shift-ctrl-b) по вершинам сделал плавное скругление;
  • После, уже знакомой комбинацией Alt+C переводил все в кривую и добавлял толщины.

Уже потом я узнал, что с помощью аддона Extra objects можно задать 2 точки пустышками и прокинуть между ними кривую уже с толщиной, а также, всего парой ползунков менять ее натянутость и разрешение.

Но тогда, к сожалению, у меня были очень интересные вечера не только из-за изучения строения такелажа парусника, но и из-за работы с вершинами.

Последний этап для этой модели - моделирование парусов.

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

Для их создания я добавил плоскость, ставил на место установки. Применил модификатор Subdivision Surface и занялся симуляцией ткани: добавил модификатор cloth. В настройках симуляции добавил в сцену ветер.

  • Выделил вершины, которые будут неподвижны, и не подвержены влиянию ветра, создал новую группу вершин в настройках объекта и добавил их туда.
  • В настройках симуляции добавил эту группу вершин в pin group во вкладке shape.

Дальше поигрался с настройками: крутил ползунки, силу ветра, меняю его направление, меняю параметры модификатора cloth и ищу тот момент, когда будет нравится. И так для каждого паруса и флага по отдельности.

Уже позже оказалось, что так же есть довольно классный аддон Simply Cloth, который упрощает работу с тканями.

До Simply Cloth:

1-4.jpg

После Simply Cloth:

1-4.jpg

Mid poly модель готова.

Дальше идет этап UV развертки и создание High poly модели.

Первым делом решаю для себя, что тросы и канаты будут иметь тайловую текстуру, а значит High poly для них не делаю. Конвертирую все кривые в меш. UV будет иметь такой вид:

1-4.jpg

Делаю развертку модели, смотрю, чтобы тайлинг был везде одинаков. В итоге для брига вышло 4 UV сета текстур, исключая сет для тросов. Развертку делал под сет 8к (для пушек 1024х1024 пикселей) упаковывал острова с помощью аддона UVPackmaster2.

High poly делал по заветам курса “Gamedev” с небольшими дополнениями. Модификаторы bevel и subdivision почти на каждый меш. Скульптинг на элементы декора.

На скриншотах видно, что я не прорабатывал в High poly щели между досками на корпусе и палубе. Да, было решено их сделать в substance painter высотами.

Текстурирование

Экспортируем High poly и Mid poly модель и переходим к настройке параметров для запекания.

Запускаю шарманку и иду пить чай, так как запекаться все будет где-то с полчаса-час, если было бы железо послабее, то можно было бы не ограничиваться чаепитием.

Когда все запечено – можно накидывать материалы.

1-4.jpg

Для обшивки на медную основу накидываю brick generator в 2 слоя, для создания нужной фактуры.

По такому же принципу делаю и щели между досками на палубе и по бортам. Для деревянной основы взял пресет Wood Walnut, поменял цвет и roughness. Далее этот пресет будет в основе всего дерева на бриге (да, я ленивый).

1-4.jpg

Для орудий также использовал пресеты.

1-4.jpg

Конечно же я понял, что часто использовать смарт материалы – это «ну такое себе». Сабстанс начинает притормаживать, долго грузится просмотр материала и в целом, сделал для себя вывод: намного проще сделать нужный материал самому, чем крутить ползунки в готовом. Но для этого надо было хорошенько посидеть в Substance painter и пересмотреть несколько уроков. Но тогда я до этих уроков так и не дошел, а смарт материалы уже не хотел использовать. Поэтому сделал текстуру позолоченного декора вот таким вот «тяп-ляп способом» из двух слоев.

1-4.jpg

Далее, используя лишь материалы дерева разных цветов (с наложенной hight текстурой или без) и материалы металла, раскрасил все остальное. Стекло сделал простым слоем с подключенным каналом высоты и подогнанным скейлом.

1-4.jpg

По задумке – паруса должны были немного пропускать свет. Поэтому в сабстанс проект добавил канал opacity и подключил шейдер pbr-metal_rough-with-alpha-blending

1-4.jpg

Выбрал базовый цвет и текстурой с картой высот придал парусу фактуру ткани. Еще одним слоем добавил затемнения, чтобы убрать однородность.

1-4.jpg

А потом ручками и кисточкой с дополнительными слоями разного цвета добавил разнообразия.

1-4.jpg

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

1-4.jpg

Финальный штрих – это грязь. Добавил на каждый сет 1-3 слоя с грязью, где надо прошелся кисточкой.

После всех манипуляций с текстурированием – экспорт текстур в формате png, т. к. в текстуре использовал прозрачность (окна, паруса). У меня не было ограничений по текстурам, поэтому я не оставлял отдельного UV сета для мешей с прозрачностью.

1-4.jpg

Что касается канатов и тросов. Я взял для них тайловую текстуру разрешением 128х128 пикселей. Сделал 2 цвета – белый и черный. Текстурировал их уже в Blender перед рендером.

1-4.jpg

Вообще, по текстурированию многие скажут, что мог бы сделать и получше, и будут правы. На данный момент после года работы 3Д-моделлером и «пинков» от арт-лидов, я бы уделил текстурированию раза в 2-3 больше времени, равно как и моделингу. Но в этом и смысл обучения, как и писал выше: без ошибок не бывает прозрения. Понимание и опыт приходит далеко не сразу.

Рендер

Для рендера создал отдельный файл .blend и импортировал туда Mid poly модель.

Подключаем текстуры:

1-4.jpg

Для освещения подобрал hdri текстуру, которая подойдет задуманному настроению (тишина, холодные тона, даль). Но освещение от hdri оказалось недостаточно. Было либо слишком темно, либо пересвечено, поэтому добавил в сцену 1 источник света – солнце. Настраивал все, подбирая угол поворота и силу свечения.

1-4.jpg

Для создания поверхности воды, по которой будет плыть «Меркурий» использовал модификатор Ocean. Настроил размер поверхности, высоту и интенсивность волн, а также настроил материал воды. Выставил камеру и в зависимости от ракурса немного поворачивал окружение, искал нужный кадр с гармонией освещения и пейзажа.

1-4.jpg

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

1-4.jpg

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

Туман и испарину я настраивал для каждого кадра по отдельности, так как с некоторых ракурсов он или едва был виден, или сильно затуманивал кадр.

Какое море без чаек? Идем в интернет, находим png чаек и расставляем их на места.

1-4.jpg

Еще немного покрутить камеру иии… рендер в Cycles на 1024 семплах с денойзом!

1-4.jpg

Постобработку рендеров я делал в фотошопе, добавил пену под корпусом брига и исправил мелкие косяки.

III. Заключение

1-4.jpg

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

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

Так что новичкам я хочу пожелать делать как можно больше моделей, развиваться, ловить фидбеки, прислушиваться к критике, и не париться из-за того, что что-то не получилось. Обязательно получится!

52