В этом уроке по моделированию в Blender 4.3 мы увидим, как смоделировать цепь, которая следует по пути и длине, определённым объектом Curve.
Текстовая расшифровка видео
Всем привет! В этом уроке по моделированию в Blender 4.3 мы увидим, как смоделировать цепь, которая следует по пути и длине, определённым объектом Curve. В более общем смысле, используя технику, показанную здесь, мы можем моделировать и анимировать объекты, которые автоматически копируются вдоль любого нужного нам пути.

Сначала я создаю первый элемент цепи. Существует несколько способов создать такой объект. Я начинаю с Torus, уменьшая количество вершин, потому что по умолчанию оно слишком велико. Я поворачиваю кольцо так, чтобы два edge loop были выровнены вдоль оси Y, затем добавляю ещё два edge loop точно посередине вдоль оси Y с помощью инструмента Loop Cut и сдвигаю всю правую половину вдоль оси X. Это даёт мне базовую форму звена цепи. В Edit Mode я перемещаю объект в центр сцены, чтобы Origin находился в центре объекта.

Прежде чем продолжить, хочу отметить, что вы можете легко изменить размер Edge Rings, из которых состоит звено цепи. Всё, что нужно, это перейти в режим Edge select в Edit Mode, выбрать edge ring, изменить ориентацию трансформации на Individual Origins, выделить все edge rings с помощью команды Select Edge Rings и масштабировать выделенное. Эту трансформацию можно применять даже после завершения цепи, чтобы изменить внешний вид звеньев. Когда закончите, я рекомендую вернуть ориентацию трансформации на Median Point, на всякий случай.

Теперь я добавлю в сцену кривую. Существуют разные типы объектов Curve, и один из них называется Path. Однако Path, это Nurbs-объект, работающий с внешними контрольными точками и системой весов. Поэтому я предпочитаю использовать объект Bezier Curve, правильно масштабированный и ориентированный, так чтобы одна из его начальных контрольных точек совпадала с Origin звена.

Затем я выбираю звено цепи и добавляю к нему модификатор Array. По умолчанию он создаёт копию, смещённую на одну единицу вдоль оси X. Я сразу замечаю, что новая копия не выровнена с оригиналом. Это потому, что изначально я повернул Torus на 10 градусов, и эта трансформация применяется также к новым объектам, созданным модификатором Array. Чтобы устранить эту проблему, я применяю поворот с помощью CTRL A, выбрав Rotation and Scale в появившемся меню. Масштаб объекта был равномерным, так как я не менял размер Torus в Object Mode, так что технически применять Scale было не обязательно, но это не важно.


Чтобы разместить второе звено внутри первого, нужно просто уменьшить значение Factor X в настройках Relative Offset. Однако здесь возникает проблема: в настройках Array невозможно задать поворот, поэтому второе и последующие звенья не могут быть повернуты отсюда.

Чтобы решить эту проблему, я добавляю в сцену третий объект, на этот раз Empty, размещая его точно там, где находится Origin первого звена, и стараясь не масштабировать его, чтобы избежать проблем. Затем я указываю этот Empty в поле Object Offset модификатора Array. Теперь, поворачивая Empty на 90 градусов вокруг оси X, все элементы после первого будут поворачиваться на 90 градусов каждый. Таким образом, активны одновременно и Relative Offset, и Object Offset: первый сдвигает копии звена, а второй поворачивает их. Увеличивая значение Count в модификаторе Array, мы получаем нашу цепь вдоль оси X.



Теперь я меняю параметр Fit Type модификатора Array с Fixed Count на Fit Curve и, конечно, назначаю Bezier Curve в качестве объекта Curve, который будет использоваться для определения длины. Таким образом, Array автоматически создаст столько звеньев, сколько нужно для соответствия длине объекта Curve, но пока всё ещё по прямой линии, от первой контрольной точки до последней.

Чтобы копии, создаваемые модификатором Array, следовали пути кривой, я добавляю модификатор Curve к объекту Torus. Порядок модификаторов имеет значение, и в частности модификатор Curve должен идти после модификатора Array. Тем не менее, даже если выбрана правильная ось деформации, ось X, результат всё ещё выглядит некорректно. Сейчас мы исправим несколько настроек, которые вызывают такое поведение.

Прежде всего, Origin объекта Curve находится где-то вне самой кривой. Для корректного результата Origin должен быть размещён в первой контрольной точке, которая должна совпадать с Origin первого звена цепи. Поэтому я перехожу в Edit Mode и помещаю 3D Cursor в первую контрольную точку кривой, выделив её и используя инструмент Cursor to Selected. Затем возвращаюсь в Object Mode и использую Origin to 3D Cursor, чтобы поместить Origin объекта Curve в эту точку.


Уже лучше, но сразу видно, что первое звено фактически было размещено в последней контрольной точке, и цепь продолжается оттуда наружу, вне пути кривой. Это подсказывает нам ещё одну проблему, которую нужно устранить: направление кривой. Объекты Curve имеют направление, которое можно визуализировать в Edit Mode, включив отображение Normals в меню Curve Edit Mode Overlays.


Чтобы поменять направление кривой, поменяв местами начальную и конечную точки, нужно выделить все элементы кривой в Edit Mode и воспользоваться инструментом Switch Direction в меню Segments. Однако результат всё ещё не совсем корректный.


Последняя корректировка касается поворота кривой. Изначально я повернул её на 180 градусов по оси Y, чтобы развернуть, что вызывает путаницу в её ориентации. Чтобы исправить это, я применяю трансформацию поворота с помощью CTRL A и команды Apply Rotation. Хотя масштаб кривой не равен 1, в этот раз я не применяю масштабирование, потому что это потребовало бы корректировки других параметров. Лучше оставить всё как есть. В любом случае, теперь у нас правильный результат.


Теперь мы можем выбрать объект Curve, перейти в Edit Mode и изменять его контрольные точки, перемещать, поворачивать или делать Extrude, и наблюдать, как эти трансформации применяются к цепи. Количество звеньев в цепи автоматически изменяется в зависимости от длины кривой, которая обновляется при перемещении или экструдировании её контрольных точек.


Однако, если я сдвину хотя бы один из трёх объектов, которые мы использовали для получения этого результата, всё ломается. Трансформация объекта Empty влияет на все копии, созданные модификатором Array, тогда как перемещение Curve или Torus вызывает несоответствие между двумя объектами, что приводит к некорректной работе модификатора Curve.

Чтобы исправить эту проблему, самое простое решение, переместить первую контрольную точку объекта Curve, а значит и первое звено цепи, туда, где находится Empty, а затем сделать Curve и Torus дочерними объектами Empty. Родительская связь создаётся через множественное выделение: последний выделенный объект становится родителем остальных. В нашем случае Empty должен быть выбран последним.

После этого остаётся просто переместить Empty, чтобы задать начальную точку всей цепи. Затем можно выбрать Bezier Curve и перейти в Edit Mode, чтобы изменить форму цепи.

Перед завершением урока, небольшой бонус. Если вы хотите анимировать кривую, можно привязать дополнительные объекты Empty к её контрольным точкам с помощью техники под названием Hooking. Для этого в Edit Mode выберите одну или несколько контрольных точек, а затем используйте инструмент Hook to New Object. Например, я применяю это только к последней контрольной точке объекта Curve. Новый объект, который будет создан, это ещё один Empty, который я сразу переименовываю в Hook Empty, чтобы избежать путаницы. Этот объект не обязательно должен быть дочерним по отношению к другим. В любом случае, вы можете вставлять ключевые кадры для нового объекта и наблюдать, как анимируется цепь.



Тип Fit Type модификатора Array был установлен как Fit Curve, что может быть не самым подходящим для такого типа анимации, поэтому я рекомендую попробовать вариант Fixed Count. На этом всё! Надеюсь, этот урок был вам полезен. До встречи!
