Ужасные мучения


Текстурирование и создание игровых материалов всегда были интересной… и мучительной работой одновременно. До перехода на Substance Designer я использовал для создания всех нужных карт Photoshop и xNormal. Приходилось много раз переключаться между двумя этими приложениями, и это надоедало. Теперь я избавился от этой проблемы.

Substance Designer (SD) — это программное обеспечение, позволяющее создавать материалы и текстуры «на лету». В нём используется удивительно простая система узлов. Я художник, и обычно меня очень пугала работа с узлами (и вообще всем, кроме кисти). Честно говоря, когда я впервые увидел SD, то слегка вздрогнул. К счастью, у авторов программы есть видео, демонстрирующие её возможности. Они дают такого мотивирующего «пинка», что вам приходится совершить «прыжок веры».

Почему SD?


Сначала определимся, почему мы остановились именно на Substance Designer? Первая причина — Unity перешёл на новую систему материалов под названием PBS, Physically Based Shading («физически обоснованный шейдинг»), хорошо описанную в этом потрясающем посте. Мы хотели использовать эту новую технологию по максимуму.

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

Последняя причина в том, что рабочий процесс переноса материалов в Unity просто безупречен. Можно экспортировать весь материал в Unity, изменять его уже там… и всё работает без проблем!

Примеры


Вот примеры материалов, созданных нами в Substance Designer.

Золото, серебро, GreebleCity и лес.

Процесс обучения SD никогда не заканчивается. Есть очень много способов достичь одинакового результата, и некоторые из них лучше или быстрее других.

Ищем золото!


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

Если вы знаете Substance Designer в совершенстве, вы, наверно, увидите способ сделать материал гораздо лучше. Если это так, то расскажите нам! С другой стороны, если вы полный новичок в этом ПО, я предлагаю вам сначала посмотреть очень полезные обучающие видео компании Allegorithmic.

Материал «золото» на самом деле довольно просто создать, но он всё равно требует множества настроек. Вот как выглядит окончательный граф в Substance Designer.


Я обычно начинаю с настройки Specular/Glossiness (отражения/глянцевости). В основном потому, что я больше к ним привык, чем к Metallic/Roughness (металл/шероховатость). Это уже может быть странно, потому что настройка Metallic/Roughness — стандарт в Unity.

Во-вторых, мне нужна была красивая металлическая или каменная структура с трещинами и вмятинами.


Cracks & Grain (трещины и зернистость) — это очень малозаметная структура, которая в основном видна на карте нормалей (Normal), и совсем немного — на карте диффузности (Diffuse). Я начал с мозаичного шаблона и соединил его с узлами Clouds (облака) для получения здесь малозаметной структуры.


Я хотел, чтобы трещины проявлялись больше в Normal, чем в Diffuse, поэтому поместил узел прямо перед выходом, чтобы он находился в части с картами нормалей.


Для правдоподобности золото должно быть как можно более гладким, иначе у нас получится жёлтая фольга. Поэтому карта нормалей очень слабо выражена, но её всё равно видно.


Добавив к карте Cracks & Grain простую градиентную карту (Gradient map), я могу быстро создать карту Diffuse.

Но нам кое-чего не хватает. В Substance Designer удобно то, что можно работать с ранее созданными картами. Здесь я взял карту нормалей, превратил её в карту Curvature, увеличил значения и превратил всё это в цветовую карту (color map). (Карты Grayscale и Color не смешиваются.)


Смешав их поверх уже сущестующей карты Diffuse, мы получим немного более интересную текстуру.


И, наконец, для отражения (Specular) я использовал простой узел Clouds. С помощью градиентной карты я нанёс немного более тёмные цвета, чем в диффузной карте, а поверх добавил детали с помощью curvature с увеличенными значениями.

Для глянцевости (Glossiness) я использовал тот же узел Clouds, осветлил результат (чем ярче, тем больше блеска), добавил увеличенные детали Curvature, и на этом всё!



Осталось экспортировать материал, просто нажав на Export. SD экспортирует файл .sbsar в Unity, и он работает в точности как материал. Он автоматически располагает карты в нужных местах, после чего позволяет выполнить настройку. Должен сказать, что материалы в Unity выглядят немного иначе, чем в самом Substance Designer, но, возможно, создатели ПО исправили это в последнем обновлении.


Вот и всё, материал уже находится в Unity. Как видите, внизу есть настройки. Например, можно быстро изменить размер текстуры, что очень удобно, если нужно уменьшить масштаб проекта.

Также тут есть кнопка Randomize. При её нажатии материал изменяет все сгенерированные значения. Сейчас моё золото выглядит не самым лучшим образом, потому что в нём всегда используются небольшие значения для облаков (clouds) и трещин (cracks). Однако если немного поднять значение cracks и нажать кнопку Randomize, то произойдёт следующее:


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

Но SD способен на большее: можно раскрывать нужные узлы и функции. После этого они становятся видимыми в Unity, и их можно настраивать. В моём примере я раскрыл две функции: количество трещин по осям X и Y. В редакторе можно перетаскивать ползунки, настраивая материал на свой вкус.


Рекомендуем!


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

А на прощание вот несколько графов, которые мы создали, осваивая программу. Успехов в работе!




Игра Antegods поддерживается Dutch Cultural Media Fund (Голландским культурным медиафондом), Cultural Industries Fund NL (Голландским фондом индустрии культуры) и Программой Европейского Союза MEDIA.
Поделиться с друзьями
-->

Комментарии (6)


  1. Darthman
    31.10.2016 11:57
    +1

    Познавательно, но…
    Серебро и золото совершенно неубедительны. Более того, серебро еще и не похоже. Откуда такие разводы, будто по нему бензин разлили?


  1. semenyakinVS
    31.10.2016 13:54
    +2

    Возможно, вопрос будет немного не в тему — но всё-таки рискну спросить… Всегда было интересно — как делают клёвые выпуклые текстуры, вроде приведённых вами GreebleCity и лес? Надеялся, в статье будет разбор одной из них — а разбирали скучное золото, где и так всё понятно.

    Неужели текстурных чудес (без какой-нибудь тесселяции) достаточно, чтобы отображать такие неровности на краях объекта? Ведь даже если «утопить» материал в глубину меша, не ясно как проходит z-тест для граничных пикселей поверхности.

    P.S.: Ещё вопрос по поводу примера. Я правильно понимаю, что флары (блестяшки, которые вылазят за границу кубика) на финальной гифке про золото добавляются отдельно, вне рамок создания материала через указанный редактор?


    1. Darthman
      31.10.2016 14:32
      +2

      Они не выпуклые, а наоборот. Максимальный уровень «выпуклости» достигается не более контура модели. Поглядите, те «выпуклые» в максимуме не больше «золота».
      Достигается это множеством путей, но в целом схоже с обычным рейтрейсингом. То есть имеем карту высот, угол падения зрения к плоскости, вычисляем какая точка насколько уходит «вглубь», что перекрывает что. На эту тему почитайте про parallax occlusion mapping например. Реалистичности подобным «выпуклостям» добавляет еще self-shadowing, тогда вообще чудесно выглядит…

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


      1. semenyakinVS
        31.10.2016 17:23

        Спасибо за ответ… Уточнили понимание. Всё верно. Я как-то забыл, что при текстурировании мы можем применять прозрачные пиксели. Всё верно ведь, нам никто не мешает заполнить поверхность «прозрачными» и «выпуклыми» пикселями, создавая за счёт этого ощущение рельефа — в том числе на «границе» поверхности (точнее, «утопленный» в материал рельеф).

        Про флары — тоже спасибо за подтверждение!


  1. PlasticEnemy
    31.10.2016 17:20

    Substance Designer крутая штука, но, конечно сложная.
    Вот настоящий профи


  1. gresolio
    31.10.2016 20:48

    Как ни крути, но рано или поздно возникает вопрос написания собственных шейдеров. Для Unity самый продвинутый инструмент-помощник в этом нелёгком деле — Shader Forge. Темы на форуме юньки: старая & новая.

    В качестве хорошего примера могу порекомендовать Ghost of a Tale — действительно достойный проект на Unity, как по геймплею, так и по графике. Вот блог разработчиков, там есть много интересной инфы, в том числе и про использование Shader Forge.