Как я использовал UV координаты в качестве масок для стилизованной игры
Сделал стилизованных персонажей для игры:
Покрасил через текстуру (атлас для каждого свой):
И задумался: а как бы мне добавить эффекты (rim, specular, matcap) без использования текстур в качестве масок + пришлось бы создавать нормальную развертку для каждого.
Придумал следующее: можно использовать UV1 либо UV2/3 в качестве маски для эффектов. Выбрал UV1, так как не планировал запекать освещение.
В блендере создал и выбрал UV1 под эффекты:
Однако не все платформы поддерживают больше четырех UV (тут я не уверен, поправьте меня, если не так). Поэтому решил разделить UV1 ещё на 4 квадрата, где каждый это комбинация эффектов по X и Y.
Развернул весь меш для UV1 в точку в координату (0, 0) = нет эффектов и далее выборочно выделял плоскости меша и двигал их координаты под нужный эффект. (0.499, 0.499) это координата, где полностью Specular и Rim эффект применены. (0.5, 0) уже начало Matcap квадрата и аналогично (0, 0) = нет эффекта. Выбрал плоскости скафандра, указал ему координату (0.25, 0.995) = полностью Matcap эффект и наполовину тени.
Однако кроется нюанс, что не получится комбинировать эффекты, например, matcap + specular, так как они в разных квадратах UV в примере выше. В моем проекте это не критично, однако если нужно комбинировать все, то тогда нужно использовать отдельные UV либо заполнить оставшиеся 2 квадрата нужными комбинациями и в шейдере объединить.
Сделал шейдер через shadergraph, subnode которая разделяет UV на квадраты и нормализует значения. У каждого квадрата значения от 0 до 1 по X и Y на выходе:
Ну и соответственно использование subnode:
Весь шейдер и ноды можно скачать тут:
Если понравились персонажи или хотите поддержать меня, можно купить их в asset store:
Надеюсь этот материал будет кому-то полезным.