С помощью Geometry Nodes в Blender можно легко создать эффект перетекания объекта с места на место. Эффект универсален и может применяться к любому мешу.
Добавим в сцену “Сюзанну” (shift+a – Mesh – Monkey). Назначим ей модификатор “Geometry Nodes” и нажатием на кнопку “New” создадим новое нодовое дерево.
Эффект перетекания мы будем создавать, изменяя координаты точек меша таким образом, чтобы при перемещении вдоль одной оси, например оси X, координаты точек по остальным двум осям пропорционально уменьшались.
Для начала сделаем параметр, определяющий перемещение точек меша вдоль оси X.
Координаты точек меша мы можем получить с нода Position. Добавим его в нодовое дерево (shift+a – Input – Position).
Добавим в сцену нод Separate XYZ (shift+a – Vector – Separate XYZ) и подадим на него положения точек меша с нода Position. Таким образом, мы получим отдельные координаты по трем осям X, Y и Z для каждой точки меша.
Добавим нод Add (shift+a – Utilities – Math). Через него мы будем управлять перемещением точек меша вдоль оси Х, прибавляя значение этого нода к координате. Подадим не него координату X с нода Separate XYZ.
Добавим нод Combine XYZ для того, чтобы собрать разделенные координаты X, Y и Z обратно. Входы-выходы Y и Z нодов Separate XYZ – Combine XYZ соединим напрямую, пока эти компоненты координат мы не меняем. А на вход X нода Combine XYZ подадим суммарное значение координаты с нода Add.
Для того, чтобы точкам меша назначить новые координаты (исходная координата плюс значение из нода Add), добавим в основную ветку геометрии нод Set Position (shift+a – Geometry + Set Position) и подадим не него координаты с нода Combine XYZ.
Теперь мы можем двигать меш вдоль оси X просто меняя (скроллируя мышкой) значение в поле нода Add.
Свяжем координаты Y и Z меша с координатой X простым умножением. Для этого добавим в дерево два нода Multiply (shift+a – Utilities – Math, переключить в режим Multiply) и встроим их в ветки для координат Y и Z. На свободный вход подадим значение с ветки координаты X.
Уже сейчас мы видим характерное искажение меша.
Для того, что бы меш отражался зеркально по оси X, добавим в дерево еще один нод Math (shift+a – Utilities – Math), переключив его в режим Absolute. Встроим его перед нодами умножения.
С его помощью мы просчитываем координаты вдоль оси X по модулю, то есть для расчетов всегда берутся положительные значения. Это обеспечивает нам правильное зеркалирование меша вокруг нулевой точки.
Пока эффект искажения меша работает вдоль всей оси X. Ограничим его промежутком от -1 до 1.
Для этого добавим в дерево еще один нод Math, переключив его в режим Minimum. Встроим его следом за нодом Absolute.
Этот нод проверяет входное значение, в данном случае координату по оси X, и если оно меньше числа во втором поле, у нас это единица – возвращает значение, а если больше или равно – возвращает это число (единицу).
Так как в дальнейшем мы умножаем координаты Z и Y на значение с выхода этого нода, получается, что в промежутке от -1 до 1 (отрицательные значения преобразуются в положительные нодом Absolute) мы умножаем координаты Z и Y на координату X, а вне этого промежутка – умножаем на 1, т.е. вне заданного промежутка ничего не меняется.
Теперь, изменяя значение в ноде Add, мы видим, как Сюзанна перетекает из одного положения в другое.
Для придания эффекту большей плавности добавим мешу модификатор Subdivision Surface.