Единство - как поменять материал сетки тора в процентах? - PullRequest
0 голосов
/ 10 декабря 2018

Хорошо, так что в основном у меня есть сетка в форме тора, и она мне нужна в Unity, в зависимости от значения, для изменения материала вокруг по часовой стрелке.Например, когда процент белого увеличивается:

enter image description here

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

1 Ответ

0 голосов
/ 15 января 2019

Хотя технически вы могли бы создать шейдер, который вычисляет угол к каждому пикселю с учетом центра объекта, лучше всего было бы развернуть тор таким образом, чтобы направление перемещения вашего перехода отображалось на ось X в УФпространство (см. изображение).Затем вы можете выставить свойство в диапазоне от 0 до 1, которое представляет точку отсечения в процентах.Наконец, в вашей функции фрагмента или поверхности вы можете сделать это:

if (i.uv.x - _Cutoff > 0) {
    // Material A
    col = tex2D(_TextureA, i.uv);
    roughness = _RoughnessA;
    // etc.
} else { 
    // Material B
    col = tex2D(_TextureB, i.uv);
    roughness = _RoughnessB;
}

Затем вы можете анимировать свойство _Cutoff через скрипт C #.Что еще круче, так это то, что вы можете использовать текстуру маски для описания перехода и сместить ее координату uv.x с помощью переменной смещения, а затем использовать значение цвета для перехода между двумя свойствами материала.

torus unwrap

...