Я работаю с VisionOS и Reality Composer Pro.
Кто-нибудь знает, как я могу смешать два файла изображений в горизонтальном градиенте? и с плавающим значением я хотел бы переместить центр градиента слева направо.
Думаю, мне нужно использовать узел Ramp-horizontal, но я не понимаю, как я могу использовать текстуруCoordinate, чтобы изменить центр градиента со значения с плавающей запятой.
В ShaderGraph RCP 2.0 существует множество способов скомпоновать два изображения с помощью горизонтальной рампы. Однако я хочу показать традиционную технику композитинга, используя Over
математику. Все, что вам нужно знать, это то, что градиент будет действовать как альфа-канал. А управляющим параметром для смещения белой части градиента влево-вправо будет ось U узла Multiply
.
Расшифровка формулы Over
выглядит так:
// Fg + Bg * (1 - A)
// Fg – foreground image with premultiplied alpha (RGB * A)
// Bg – background image (RGB)
// A – Fg's alpha (A)
// 1 - A – alpha's inversion (!A)
В нашей альфа-маске рампы нет center
в общепринятом смысле. Градиент имеет белый цвет (где предварительно умноженное переднее изображение на 100 % непрозрачно) и черный цвет (где предварительно умноженное переднее изображение на 100 % прозрачно), которые управляются математически с помощью операторов умножения, сложения, гаммы или инвертирования.
К сожалению, у такого подхода есть существенный недостаток: маску градиента можно перемещать нелинейно. Читайте дальше, чтобы узнать, как это улучшить.
Альтернативным решением было бы использовать узел Split Horizontal
, поскольку этот узел позволит вам перемещать маску в нормализованном пространстве в диапазоне 0.0...1.0
, то есть линейным образом. Однако размыть границу между белым и черным цветами маски у вас не получится, так как на данный момент в списке из 250+ узлов нет ни одного узла из категории Filtering
, то есть перехода между FG и БГ в этом случае будет резким (не плавным).
есть ли у вас идеи, в чем может быть проблема? Может быть, что-то связано с координатами текстуры?
Ок, наконец-то заработало, видимо на моей модели оси X и Y были перевернуты. Спасибо, только одно: какое значение я могу вручную изменить в коде, чтобы переместить центр градиента? Мне нужно несколько возможных остановок, мне нужно очень плавно создать анимацию.
Я даю вам принятый ответ, потому что он действительно работает. Изменение значения X, которое умножает текстурные координаты, позволяет мне изменить эффект градиента. Единственная проблема в том, что он не линейный, а с кривой плавности.
Спасибо, Энди, в примитиве это сработало, но на моем пользовательском 3D-объекте я вижу только левое изображение. Я не специалист, но думаю, на объекте проблема?