Панели инструментов
Vertex Colors Вершинные цвета
Цвет, который хранится не в текстуре, а прямо в вершинах меша. Он ничего не весит, не требует развёртки и не занимает память под текстуры. Для мобильного VR и VRChat это едва ли не самый недооценённый инструмент ProBuilder.
Как это устроено
У каждой вершины есть свой цвет. Между вершинами видеокарта интерполирует его сама — получается плавный градиент бесплатно.
Значит, плотность цвета ограничена плотностью сетки: на кубе из 8 вершин градиента не будет, нужен Subdivide.
Обязательное условие
Вершинный цвет виден только через шейдер, который его читает. Стандартный Unity Standard его игнорирует — вы покрасите меш и не увидите разницы.
В комплекте ProBuilder идут шейдеры с поддержкой вершинного цвета; в проектах VRChat подойдут многие популярные toon- и standard-шейдеры с галочкой Vertex Color.
Два режима работы
Vertex Color Palette — заливка выделения одним цветом. Быстро и точно.
Vertex Painter — кисть: водите по мешу и подмешиваете цвет с настраиваемым радиусом и силой. Так делают грязь у пола, потемнение в углах, мох на камне.
Разбор внутренних меню
Каждое поле — что задаёт, какие значения принимает и на что влияет.
Vertex Color Palette
Vertex Painter
Попробуйте сами
Пять минут в Unity — и инструмент перестанет быть кнопкой с непонятным названием.
- Постройте плоскость и примените Subdivide Object два раза — нужна сетка вершин.
- Назначьте материал с шейдером, который читает вершинный цвет.
- Откройте Vertex Colors, выберите тёмный цвет, выделите нижний ряд вершин и нажмите Apply.
- Переключитесь в Vertex Painter и пройдитесь кистью по углам — появилось мягкое затемнение.
- Нажмите Reset на всём объекте, чтобы вернуть чистый белый.
Приёмы
- Ручное «запекание» затенения: тёмный цвет в углах и у пола делает сцену объёмной без единого лайтмапа. Для Quest-миров это чистая победа.
- Вершинным цветом удобно маркировать зоны для шейдера: например, красный канал — маска мха, зелёный — маска мокрого.
- Одна текстура + разный вершинный цвет = десяток «разных» материалов при одном draw call.
- Белый цвет нейтрален: если шейдер умножает текстуру на вершинный цвет, белый ничего не меняет. Поэтому Reset — это всегда безопасно.
Грабли
- Покрасили — не видно. В 99% случаев виноват шейдер, а не ProBuilder.
- Мало вершин — нет градиента. Subdivide перед покраской, а не после.
- Вершинный цвет теряется при экспорте в некоторые форматы. OBJ его не хранит, PLY хранит — учитывайте при Export.
- Слияние объектов (Merge) сохраняет цвета, но пересечение швов может дать резкий стык, если у соседних вершин разный цвет.
Проверка
Четыре вопроса. Неверный ответ попадёт в банк ошибок и вернётся к вам в разделе «Практика».
1. Почему на кубе не получается плавный градиент?
Градиент рождается между вершинами. Нет вершин — нет перехода; помогает Subdivide.
2. Что нужно, чтобы вершинный цвет стал виден?
Стандартный шейдер игнорирует этот канал, поэтому цвет есть в меше, но не на экране.
3. Что делает Reset в палитре?
Белый нейтрален при умножении в шейдере — это и есть «без окраски».
4. Зачем нужен параметр Brush Falloff?
Falloff управляет тем, насколько плавно цвет угасает от центра кисти к краю.