RealityComposerPro: Градиент между двумя текстурами в Shader Graph

Я работаю с VisionOS и Reality Composer Pro.

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

Думаю, мне нужно использовать узел Ramp-horizontal, но я не понимаю, как я могу использовать текстуруCoordinate, чтобы изменить центр градиента со значения с плавающей запятой.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
134
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Композиция двух изображений с использованием градиентной маски

В 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 и БГ в этом случае будет резким (не плавным).

Спасибо, Энди, в примитиве это сработало, но на моем пользовательском 3D-объекте я вижу только левое изображение. Я не специалист, но думаю, на объекте проблема?

Andre 21.06.2024 13:15

есть ли у вас идеи, в чем может быть проблема? Может быть, что-то связано с координатами текстуры?

Andre 21.06.2024 13:23

Ок, наконец-то заработало, видимо на моей модели оси X и Y были перевернуты. Спасибо, только одно: какое значение я могу вручную изменить в коде, чтобы переместить центр градиента? Мне нужно несколько возможных остановок, мне нужно очень плавно создать анимацию.

Andre 21.06.2024 14:59

Я даю вам принятый ответ, потому что он действительно работает. Изменение значения X, которое умножает текстурные координаты, позволяет мне изменить эффект градиента. Единственная проблема в том, что он не линейный, а с кривой плавности.

Andre 21.06.2024 16:16

Другие вопросы по теме