Создание стилизованного окружения — опыт автора ассетов для Unity
Описание главных принципов.
Художник и автор ассет-пака для Unity под названием The Illustrated Nature Драгош Матковский в 2019 году опубликовал на сайте 80 Level текст, в котором подробно рассказал, как создавал свои живописные работы. Выбрали из текста главное.
По словам художника, его главная цель при создании ассетов заключалась в том, чтобы любой скриншот выглядел живописно — он стремился не к реализму, а к художественной ценности. Кроме того, для Драгоша было важно, чтобы каждый элемент мира ощущался живым.
Чтобы сделать листья, Драгош смоделировал простой меш из трёх пересекающихся квадратов с текстурой листа. Затем он создал «каркас» и наложил на него меши, чтобы это было похоже на скопление листвы на ветке. В результате получилось так, что все меши листьев имели нормали, которые смотрели в разные стороны. Автор отредактировал модели так, чтобы нормали были направлены наружу — благодаря этому скопление получилось более сглаженным.
Чтобы подготовить модель к вертексной анимации, Драгош раскрасил альфа-канал Vertex Color градиентом сверху вниз — это позволило управлять силой изгиба по оси Y. Затем он использовал зелёный канал, чтобы нарисовать ветви и листья, а также придать им дополнительное движение.
Для растительности Драгош использовал белые текстуры размером 256×256 с альфа-каналом. Все цвета в сцене можно легко и быстро поменять.
Растительность анимируется с помощью двух типов анимации — вертексной и UV. При этом оба типа реализованы на уровне шейдера.
Вертексная анимация используется для создания более крупных движений, например, раскачивания ветвей, а UV-анимация нужна, чтобы листья колыхались на ветру. Оба типа анимаций можно включать и выключать независимо друг от друга — это важно для лучшего контроля над производительностью.
В шейдере всё управляется при помощи глобальной noise-текстуры, которая влияет на весь игровой мир, а также управляет вертексным смещением и UV-анимацией текстур.
Драгош отметил, что особенно хорошо получилась UV-анимация листьев — именно она делает движения настолько достоверными. Чтобы добиться этого, автор просто двигал текстуру листьев синхронно с вертексным смещением. Такой же эффект применяется и к траве.
При компоновке объектов окружения Драгош всегда старался избегать очевидных паттернов и повторений. Он пытался ориентироваться на референсы из реальности, потому что стремился добиться общей правдоподобности. Это же касается и разных эффектов, например, отражений неба в воде.
В местах, где игрок будет проводить больше всего времени, автор добавлял больше деталей и выставлял объекты так, чтобы они вели пользователя в определённом направлении.
Автор с самого начала хотел сделать цветовую гамму стилизованной, а не реалистичной. Он использовал Amplify Shader Editor для создания и настройки всех шейдеров.
Цвет воды можно задавать при помощи специального шейдера — он позволяет менять цвет у разных областей: на глубине, на мелководье, на точках соприкосновения с другими объектами. Эффект пены создаётся при помощи шума Перлина и добавляет воде деталей, благодаря чему она лучше сочетается с остальной графикой.