Все статьи
Туториалы · 7 min read

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

Как вершинная покраска смешивает материалы, чтобы убить видимые швы: трюк height-blend, что бьёт линейную альфу, вписывание грязи в траву и мха на камень, соображения производительности, и где это вписывается рядом с декалями и тайловыми текстурами.

Aerial view of a forested river valley crossed by a steel bridge and a road

Коротко: жёсткие швы там, где один материал встречает другой (трава упирается в камень, грязь встречает камень) — одно из крупнейших выдающих признаков любительского окружения. Вершинная покраска смешивает материалы прямо на меше, чтобы стереть эти швы, а «height blend» делает переход естественным, а не как растворение. Эта статья объясняет, как работает вершинное смешивание, трюк height-blend, что отделяет хорошие переходы от грязных, где его красить, что это стоит в рантайме, и как оно сочетается с декалями и тайловыми текстурами.

Речная дельта, где вода, ил и растительность переходят друг в друга У природы нет жёстких краёв. Там, где вода встречает ил встречает траву, переход неправильный и сцепленный — именно то, что вершинное смешивание воссоздаёт, чтобы твои материалы перестали встречаться прямыми, очевидными линиями.

Проблема: швы выдают всё

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

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

Как работает вершинное смешивание

Каждая вершина хранит данные цвета/альфы; blend-материал читает их, чтобы смешивать две или больше текстур на пиксель по поверхности. Покрась данные вершин в движке, и материалы переходят везде, где ты красил, без лишних UV или геометрии.

Каждая вершина на меше может нести немного лишних данных: вершинные цвета, обычно четыре канала. Blend-материал интерпретирует эти данные как маску: где канал сильный, показывай материал A; где слабый, показывай материал B; и интерполируй между. Поскольку ты красишь данные вершин прямо на модели в редакторе, ты контролируешь переход вручную, ровно где хочешь: грязь вдоль основания стены, износ на углах пола, мох по одной стороне валуна. Это не стоит лишних UV-наборов и добавленной геометрии (сверх наличия достаточного числа вершин, чтобы вписать деталь), поэтому это рабочая лошадка техники смешивания для террейна и больших мешей.

Трюк height-blend

Не смешивай линейно по альфе, а смешивай, используя карту высот, чтобы верхний материал заполнял трещины и низины сначала. Линейное смешивание даёт мягкое грязное растворение; height-смешивание даёт чёткий, естественный, сцепленный переход.

Это единственное самое важное улучшение твоего blend-материала, и это то, что отделяет профессиональный переход от размазанного. Наивный blend растворяет линейно между двумя текстурами вдоль маски, порождая мягкое, призрачное наложение, что выглядит как градиент из Photoshop. Height blend вместо этого использует информацию высоты/смещения материалов, чтобы решить переход: входящий материал оседает сначала в низкие зоны (швы раствора, трещины, вмятины), прежде чем покрыть высокие точки, ровно как настоящие грязь, песок или снег, скапливающиеся. Результат — резкая, неправильная, правдоподобная граница вместо размытого растворения. Если твои blend'ы выглядят грязными, добавление перехода на основе высоты почти всегда — решение.

Край леса, встречающий открытую местность, растительность редеет Край леса — это blend в дикой природе: линия деревьев не останавливается на линии, она рассеивается и редеет. Вершинное смешивание на основе высоты воссоздаёт этот рваный, сцепленный переход вместо чистой границы.

Где его красить

Крась переходы там, где поверхности естественно взаимодействуют: основание стен (грязь/влага), углы и края полов (износ), теневые стороны камня (мох), низины (грязь/лужи), и везде, где встречаются два слоя террейна.

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

Производительность и пределы

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

Смешивание не бесплатно: двух- или трёхслойный blend-материал сэмплит несколько текстур на пиксель, так что он дороже одного материала. Это нормально на геройском террейне и поверхностях, что изучает камера, но сплошное применение четырёхслойного blend'а к каждому мешу тратит GPU. Другой предел — разрешение: вершинная покраска может быть детальной лишь настолько, насколько плотен меш, так что low-poly стена не может нести тонкий крашеный переход: вот где вступают декали, чтобы добавить деталь меньшего масштаба сверху. Используй правильный инструмент на каждом масштабе: вершинный blend для широкого перехода, декали для чёткой локальной детали.

Где оно вписывается с другими инструментами

Вершинный blend обрабатывает среднемасштабный переход материала; тайловые текстуры дёшево дают базовую деталь; декали добавляют чёткие локальные черты (трещины, пятна, потёки), слишком мелкие, чтобы красить по-вершинно. Они складываются.

Ни один из этих инструментов не конкурирует, а наслаивается. Тайловые текстуры дают тебе доступную высокочастотную деталь по большим поверхностям. Вершинное смешивание перемешивает эти тайловые материалы, чтобы они не встречались жёсткими линиями. Декали затем садятся сверху для конкретных, острых деталей, которых вершинное разрешение не достигает: трещина, ожог, водяное пятно над швом. Зрелая поверхность окружения обычно все три сразу. Ввести правдоподобное смешивание материалов в игру, и запечь его в стандартные материалы движка, чтобы оно не стоило ничего неожиданного в рантайме — это ровно тот вид работы над поверхностями, который Numivo построен делать рутиной, чтобы швы исчезали без заказного шейдера для каждой встречи двух материалов.

Полевые числа, которые стоит украсть

  • Улучшение, что чинит грязные blend'ы: height blend, не линейная альфа
  • Потолок детали вершинной покраски = плотность вершин меша: плотнее меш, мельче покраска
  • Самые ценные зоны покраски: основания стен, края полов, теневой камень, низины
  • Стоимость blend-материала масштабируется с числом сэмплируемых слоёв: резервируй многослойные blend'ы для геройских поверхностей
  • Полный стек: тайловая база → вершинный blend → декали для локальной детали

Мини-FAQ

Вершинная покраска против splat/weight-карты для террейна? Та же идея, другое хранение: террейн часто использует карты весов слоёв (текстурную маску) вместо вершинных цветов, что развязывает деталь от плотности меша. Меши используют вершинные цвета; большие террейны часто используют карты слоёв. Принцип height-blend применяется к обоим.

Почему мой blend выглядит мягким и грязным? Ты почти наверняка смешиваешь линейно по альфе. Переключись на blend, управляемый высотой/смещением, чтобы переход оседал сначала в низкие зоны, и мягкость превращается в чёткий, естественный край.

Сколько blend-слоёв уже слишком много? Два дёшевы и покрывают большинство переходов; три обычны для террейна; четыре-плюс становятся дорогими и трудными для создания. Если нужно больше, задайся вопросом, послужат ли декали или второй материал лучше.

Нужен ли мне кастомный шейдер для этого? Логика blend'а достаточно стандартна, чтобы большинство движков и тулсетов её предоставляли, а запекание в простые материалы движка держит стоимость рантайма предсказуемой. Тебе редко нужен заказной код шейдера. Тебе нужны настройка height-blend и разумное место, где красить.

Швы — это где правдоподобные окружения выигрываются или проигрываются. Крась свои переходы там, где поверхности реально взаимодействуют, смешивай по высоте вместо плоского растворения, и складывай тайлинг и декали вокруг, и твои материалы будут встречаться так, как они делают в мире: неправильно, сцепленно, и без единой выдающей прямой линии.