Вращение по кругу объектов в blender с помощью geonodes

от автора

Всем привет, в этой статье я покажу и объясню как сделать вращение по кругу объектов в blender, используя geometry nodes. Однажды в чате по блендеру увидел сообщение с просьбой человека помочь ему с анимацией кристаллов.

Результат будет примерно такой:

Вначале создадим ноды геометрии.

Делать мы будем движение объектов по окружности, поэтому удаляем Geometry input и создаем Curve circle , именно мы ее будем крутить.

Далее нам необходимо разместить объекты вдоль этой кривой, это делает нода Instance on points, сразу же после добавления ставим галочку на Pick Instance , размещать я буду коллекцию , поэтому добавляю Collection Info , ставлю Relative и ставлю обе галочки, Separate Children и Reset Children , подробнее об это можно почитать тут https://docs.blender.org/manual/ru/dev/modeling/geometry_nodes/input/scene/collection_info.html , Далее соединяю ее со входом Instance в уже добавленной ноде Instance on Points, далее ставлю ноду Scale Instances (далее будет понятно , почему я не скейлю в instance on points), далее ставлю ноду Group Input, она нужна , чтобы выводить парамеры в удобном виде, как будто ноды это просто модификатор, вывести как параметр я хочу коллекцию и размер элементов.

Чтобы скейл был не вектором а одним значением , необходимо поменять значение vector на float.

Так же я хочу чтобы объектов было меньше , для этого я меняю resolution у кривой.

Все элементы идут последовательно , надо добавить ноду random value и переключить значение на Integer и подключить к Instance on Points на вход Instance Index, далее попробуйте по изменять параметры.

Далее уберем немного объектов , сделать это можно с помощью ноды random value, после добавления ноды необходимо поменять значение на Boolean и подключить ее к Instance on Points к входу Selection , далее попробуйте по изменять параметры .

Далее сделаем рандомный размер у объектов , как вы уже ,наверное, догадались , делается это нодой Random value , изменяем минимальное и максимальное значение и подключаем Instance on Points к входу Scale.

Так же я хочу рандомный поворот объекта, делаю аналогично , добавляю Random value , изменяю минимальное и максимальное значение и подключаю к Instance on Points к входу Rotation.

Также минимальное и максимальное значение можно вывести в параметры, также как я и раньше это делал.

Теперь надо сделать поворот объектов, делается это нодой Transform, можете уже покрутить объекты , если будете изменять Rotation, но нам надо сделать это автоматически

Далее необходимо добавить такую связку нод (у параметра Vector_speed переключить значение на Float), сейчас объясню как это работает

Scene Time берет секунды и перемножает их (нода Vector math -> multiply) с вектором , из-за чего rotation каждую секунду увеличивается, чтобы это как то контролировать (да да , можно в vector_rotate ставить не 1, а любое другое число, но я так не хочу), делаем еще одну ноду Vector math и перемножаем получившийся вектор на какое то число, в результате получаем вращающиеся объекты, задача уже выполнена, но я хочу еще добавить чтобы объекты не совсем линейно двигались.

Делать я это буду с помощью ноды Noise Texture, добавляем ее и меняем 3d, на 4d, во вход присоединяем Seconds из ноды Scene Time, а так же Делаем из Scale параеметр и немного уменьшаем его , а то обьекты будут просто трястись

Далее просто подсоединяем к Color ramp , с помощью нее можно дополнительно настроить движение объектов, потом получившиеся умножаем (Vector math) на позицию объекта, если это не сделать , то объекты просто съедут

Далее создаем Set position и к offset подключаем Vector Math

В конце я хочу сделать radius у curve circle параметром

Готово , теперь у нас вращающиеся объекты, с не линейной траекторией движения, которые можно настраивать. Если что то не поняли , то можно blend файл с нодами скачать по ссылке https://drive.google.com/file/d/1TETcZH5IkpmG8u7b4jeRAlMcPgc0sEg-/view?usp=sharing


ссылка на оригинал статьи https://habr.com/ru/post/720484/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *