В одном из сообществ по Cinema 4D в Telegram (https://t.me/learning_xpresso) увидел интересную работу — игрушка Rubik snake, очень понравилось и захотелось попробовать как это можно сделать в Houdini.
Как это работает: здесь каждый элемент влияет на другие (FK), но нужно предусмотреть возможность переключение направления FK так как собирать все только в одну сторону будет очень неудобно. Для создания FK я использовал CHOP сеть в которой реализовал переключение между родителями с помощью кнопки (при нажатии на кнопку, сначала обновляется смещение для нового родителя, затем переключаются switch ноды - назначается новый родитель).
С помощью Python сделал копирование для группы нод и автоматическое прописывание путей для родителей в CHOP, сделал кнопки Clear (удаление нод с ригом) и Import (импорт только геометрии для удобства сохранения).
Последовательность работы с игрушкой:
- выбрать размер элемента и длину змеи (количество элементов) и нажать кнопку Create – весь риг будет создан автоматически (после создания рига изменение количества модулей никак не будет влиять на созданный риг). Повторное нажатие кнопки Create предложит удалить созданный риг и создаст его заново с указанным количеством модулей;
- контроллеры управления имеют только одну степень свободы;
- кнопка Change FK direction меняет направление forward kinematic;
- кнопка Clear – удалит созданный риг, кнопка Import – сделает отдельную ноду с object merge в этом же файле hip в которой будет только геометрия игрушки (объединяет геометрию из всех модулей);
- цвет игрушки можно менять в любой момент до Import.
Переключатель Point only позволяет экспортировать точки с атрибутом orient для создания собственных модулей (трубы и растения для примера).