CATERPILLAR SCRIPT
⚡️Скрипт для быстрого риггинга цепных соединений⚡️
[3ds max 2021-2026]

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

Все скрипты от 3dbazooka имеют универсальный установщик. Просто перетащите файл CarRigger.mzp во вьюпорт (либо запустите его через Scripting → Run Script), выберите язык установки и следуйте инструкциям.
➡️Все объекты, созданные скриптом, хранятся в слоях Caterpillar_Helpers и Caterpillar_Tracks. Часть из этих объектов скрыта по умолчанию.
➡️В одной сцене можно создать сколь угодно много готовых ригов, при этом все объекты будут храниться все в тех же двух слоях.
➡️В интерфейсе скрипта предусмотрено удаление как одного конкретного рига, так и всех следов скрипта в сцене, однако в случае неполадок всегда можно удалить вышеупомянутые слои вместе с содержимым.
➡️Чтобы скопировать готовый риг, необходимо выделить все объекты слоев, указанных выше, сделать их видимыми, выделить полностью риг и с зажатой клавишей Shift переместить в сторону. Также можно произвести отзеркаливание рига.
Внимание! Автор скрипта не дает гарантий корректной работы при размножении рига способом выше!


Перед запуском скрипта необходимо выполнить подготовительные операции:
– убедиться, что пивоты шестерней выровнены по центрам их вращения и лежат в одной из ортогональных плоскостей (Front, Top, Left, Back, Bottom, Right);
– подготовить 2 соседних звена цепи, выровняв их пивоты по осям вращения и расположив последовательно друг за другом, выровняв пивот 2го звена относительно 2й оси вращения первого звена;

– нарисовать сплайн для перемещения звеньев (в случае импорта готовой модели из CAD софта все звенья обычно уже смоделированы. В таком случае для автоматического создания сплайна-пути удобно использовать скрипт Spline Penetrator из бесплатного набора Rig Scripts Pack)
– сплайн должен находиться в плоскости вращения шестерней.


Интерфейс разработан таким образом, чтобы по мере риггинга продвигаться сверху вниз. Интерфейс скрипта имеет 2 основных окна с настройками – главное и окно “Advanced Parameters” (“Продвинутые настройки”). В этом блоке рассмотрены первичные параметры главного окна.
➡️ Select Link – кнопка для выбора 1 звена цепи (если звеньев 2 вида, то сначала выбираем любой, 2й выберем позже). После выбора имя объекта отобразится под кнопкой выделения
➡️ Select Path – кнопка для выбора сплайна. После выбора имя объекта отобразится под кнопкой выделения
Примечание: скрипт не использует оригинальный spline в риггинге. Он делает его instance копию, а оригинал скрывает в панели слоев. Цвет instance копии всегда желтый!
➡️ Test – если Link и Path были выбраны и являются допустимыми объектами, то можно жать эту кнопку. Должно произойти равномерное распределение количества (взятого из спиннера Copies) копий звеньев по пути. Меняя количество в спиннере Copies количество звеньев также будет меняться в реальном времени.
➡️ Auto – выделяем 2 ранее подготовленных звена цепи с правильно размещенными пивотами, после чего жмем эту кнопку. Скрипт сам посчитает расстояние и между звеньями и разместит необходимое количество копий на сплайне так, чтобы максимально заполнить весь сплайн.
➡️ Percent – меняем сдвиг звеньев по пути (пригодится дальше, чтобы подогнать звенья под зубья шестерней).
➡️ LookAtConstraint – при включении звенья начинают смотреть на впередистоящее звено. Опционально для каждого случая. Если вдруг скрипт не угадал по какой оси использовать LookAtConstraint, есть возможность поменять угол в выпадающем напротив него меню – “X-Y-Z”
➡️ Блок Rotation – так как скрипт понятия не имеет как развернуты звенья в пространстве и куда направлены оси их пивотов, после нажатия кнопок Test или Auto есть возможность развернуть все звенья по любой оси для достижения ожидаемого результата.
➡️ Блок Offset – тоже самое только для перемещения звеньев. В случае если в стыке присутствует ненужный зазор, его можно быстро устранить.

Продвинутые настройки представлены в окне Advanced Parameters и рассмотрены в следующем блоке.


➡️ Select 2nd Link – в случае, когда соседние звенья разные, с помощью этой кнопки выбираем 2е звено. В результате автоматически каждое второе звено заменится на новое и приобретет более темный цвет.
Примечание: как первый, так и второй тип звеньев созданы копированием оригинала с помощью instance. Поэтому любое изменение геометрии оригиналов будет влиять на всю цепь.

➡️ Driving Gear Controls – блок для настройки рига ведомой шестерни.
Driving Gear – с помощью этой кнопки выбираете ведущую шестерню/колесо. Она будет управлять вращением всего механизма.
Measure Radius – значение в спиннере рядом с этой кнопкой автоматически определило радиус на просвет выбранной шестерни. Однако, для точности рига необходимо брать для расчетов не этот радиус, а расстояние от центра вращения шестерни/колеса до одного из ближайших звеньев, лежащих на сплайне. Выделив шестерню и ближайшее к ее центру звено, жмем на кнопку Measure Radius, его значение должно измениться. Помните – очень важно, как было сказано в начале, чтобы сплайн и пивоты шестерней лежали в одной плоскости.
Rig – после измерения радиуса, сразу жмем эту кнопку. На ведущем колесе появится управляющий объект – оранжевый пойнт и скрипт откроет возможность выбирать дальше ведомые шестерни. Чтобы изменить его размер не используйте масштабирование, используйте настройку Size в кастомных атрибутах. После этого повращайте пойнт и убедитесь, что цепь движется в нужном направлении. Если это не так, то нажмите на кнопку “–” рядом с кнопкой “Rig”, это изменит направление движения цепи. Сейчас самое время воспользоваться спиннером “Percent” из главного окна для подгонки звеньев под зубья.

Примечание – скрипт тестировался во множестве сценариев и в каждом их них он всегда верно определял Ось вращения шестерни при риге. Если вдруг в вашем случае шестерня/колесо вращаются не по той оси – измените ее в выпадающем меню “X-Y-Z”.
Δ (дельта) – этот параметр создан для нивелирования накопленной погрешности, которая возникает при длительной анимации вращения из-за малейших неточностей в определении радиусов колес, длин сплайнов и т.д. Это происходит, так как 3ds max имеет конечную точность (количество символов после запятой) для определения всех размеров и расчета всех параметров. Чтобы устранить погрешность на длительном участке анимации сделайте в таймлайне 1000 ключей анимации, включите Auto key, переключитесь на последний кадр и повращайте оранжевый пойнт на 1800 градусов – 5 полных оборотов. Отожмите Auto key и перемещая ползунок анимации от нуля к 1000 вы заметите отклонение положения шестерни относительно зубьев, которые настроили с помощью спиннера “Percent”. Теперь увеличивайте/уменьшайте значение Δ по ходу анимации для возвращения относительного положения шестерни и звеньев, пока последний кадр не будет приблизительно равен первому.
➡️ Driven Gear 1-4 Controls – блоки для рига и настройки ведомых колес/шестерен разного диаметра, которые содержат абсолютно тот же набор настроек и параметров, что и ведущее колесо. После нажатия кнопки “Rig” в каждом блоке будет появляться зеленый пойнт в центре выбранной шестерни и будет открываться возможность добавлять шестерню следующего диаметра.
Внимание! Скрипт позволяет создавать риг механизма, который одновременно содержит шестерни/колеса 5ти разных диаметров и неограниченное количество шестерен совпадающих диаметров. Для того, чтобы добавить в риг шестерни с одинаковым диаметром, необходимо их выделить в сцене повторно нажать “Rig” в том блоке, чей диаметр необходимо повторить. В результате в центрах выделенных колес появятся пойнты желтого цвета.
Примечание – пойнты зеленого и желтого цветов не являются управляющими, все оси трансформации у них заблокированы. Чтобы изменить/подогнать вращение ведомых колес либо вращайте геометрию колеса, либо изменяйте параметр Δ в соответствующем блоке.

➡️ Controls – данный блок содержит настройки для линка всего рига к одному рут объекту для простоты его перемещения и вращения, и не только.
Link to Root Ctrl – жмите эту кнопку и выбирайте рут объект в сцене для линка всего рига к нему. Его имя появится рядом с кнопкой. При любой трансформации рут объекта – перемещении/вращении/масштабировании – весь риг также трансформируется. Также скрипт “морозит” все трансформации рута на начальном положении, так что к нему можно возвращаться позже.
Unlink Root – жмите, чтобы отлинковать текущий рут контрол, можете сразу выбрать другой.
Rig Root – кнопка доступна только если риг прилинкован к рут объекту. После активации – скрипт связывает перемещение рут объекта с вращением ведущей шестерни/колеса (см. видео ниже), а в центре рут объекта создается красный пойнт. При вращении рута на месте, ведущее колесо также вращается, симулируя движение гусениц танка при развороте на месте. Кнопка “–” меняет направление движения гусениц, а кнопка “Zrot-“ меняет направление вращения ведущей шестерни при повороте рута на месте. В риге использован уникальный алгоритм вращения колеса при движении рут объекта. Он не зависит от контроллеров трансформации рут объекта, поэтому правильно работает при любых поворотах рига, а также при его масштабировании.
Примечание – при анимации в случае неожиданных подергиваний цепи или внезапных неуместных вращений ведущего колеса необходимо выделить красный пойнт и нажать кнопку – Clear Animation Cache в стеке модификаторов.
Unrig Root – удаляет риг ведущего колеса, а также красный пойнт хелпер.

Decline – на любом этапе создания рига скриптом, можно нажать эту кнопку и она отменит все изменения для текущего рига. Все созданные для данного рига вспомогательные и геометрические объекты будут удалены. Если это единственный риг в сцене, также будут удалены слои Caterpillar_Helpers и Caterpillar_Tracks.
Confirm – когда вас полностью устраивает работа рига в сцене, жмите эту кнопку.
Leave Only Geometry – в случае, если динамика, создаваемая скриптом не нужна, а нужно только распределение геометрии по сплайну, жмите эту кнопку, она оставит только созданную геометрию в сцене.
Detect Rig – кнопка для определения готового рига, созданного этим скриптом. После нового запуска скрипта необходимо выделить желтый сплайн, созданный скриптом (должен иметь имя “CaterpillarPath_###”) и нажать эту кнопку. Если вы не вносили вручную изменения в риг, то скрипт определит все его элементы, автоматически заполнит все окна готовыми параметрами и вы получите возможность их менять. Также данная опция полезна в случае если в сцене много ригов, созданных скриптом, а вам необходимо удалить только конкретный. В таком случае определяем его и жмем кнопку “Decline”.
Примечание – риг считается завершенным и определяется кнопкой Detect Rig в том случае, если определена хотя бы ведущая шестерня/колесо.
Remove All Traces – в отличии от кнопки “Decline” удаляет все следы скрипта в сцене, также удаляет слои Caterpillar_Helpers и Caterpillar_Tracks.
➡️ 2.0 – 07.2025
– добавлена опция автоматического подсчета звеньев цепи;
– оптимизирована опция LookAtConstraint;
– добавлена возможность выбора оси для LookAtConstraint;
– добавлено окно Advanced Properties, где можно выбирать второе звено, риггить ведущую шестерню и до 4х ведомых шестерен разных диаметров;
– добавлена функция линка готового рига к рут контролу;
– добавлена функция рига рут контрола для автоматического вращаения ведущей шестерни и движения цепи при перемещении рут контрола;
– добавлена функция определения готового рига;
– устранено 100500 мелких багов и косяков.
➡️ 1.0 – 07.2024
– Оригинальный релиз
Нажимая на кнопку ниже, Вы соглашаетесь с Политикой Конфиденциальности и Публичной Офертой