Как создать простой риг для плоского 2D пропса

Примеры рига элементов 2D локаций в Blender

Небольшой материал по поводу "оживления" некоторых элементов 2D локаций

Предисловие

Достаточно давно наметил себе небольшой материал по поводу "шевеляжа" элементов 2D локаций и вот, спустя продолжительный промежуток времени, все-таки вернулся к этой теме и теме 2D.
Идея этой публикации связана с демо-роликом "2D локация Grease Pencil с ригом в Blender"[сноска]. Именно там использовались костные конструкции оснастки, которым посвящен этот материал. Однако, когда в проекте нет костных ассетов, или нет смысла делать такой риг, тогда такелаж будет без костей. Например на пустышках или вовсе напрямую на объектах. Подсмотреть за эдаким безобразием можно в видеороликах: "2D сцена и персонаж Grease Pencil из векторного макета в Blender"[сноска] и "Создание 2d сцены из *SVG в Blender"[сноска]. А в этой публикации рассматриваются несколько простых костных конструкций в Blender.
1

Создание простых объектов

Итак, для того чтобы установить и посмотреть как работает риг, нужны несколько совсем простых объектов. Пусть это будут: облачко, одной кривой; куст, созданный парой кривых; дерево, так же в виде пары кривых; ещё одно дерево, смоделированное меш плоскостями и третье дерево, нарисованное Grease Pencil.
Процесс создания подробно показан в предлагаемом к просмотру таймлапс ролике, а общее описание начнется с очень простой штуки. 2D в Blender это почти всегда вид спереди (Front View). Поэтому после создания кривой Безье (Curve Bezier), нужно повернуть объект кривой по оси X на 90 градусов, чтобы она смотрела "лицом" в камеру. После, в режиме редактирования, можно удалить кривую, поскольку проще нарисовать нужную кривую самым обычным инструментом рисования (Draw). Даже при рисовании мышкой, а на видео показан именно этот способ, кривая очень хорошо сглаживается, что является несомненным плюсом. Затем достаточно немного или много подправить, тут уж как получится с рисовакой.
Настройки кривой, так же не очень сложные, достаточно указать, что кривая 2D и ей нужна сплошная заливка. Всё, да не всё. Если кривые накладываются друг на друга, то их надо немного разнести по оси Y, передвинув одну из них.
Созданную меш плоскость так же нужно повернуть по оси X на 90 градусов, причина та же. Моделирование достаточно свободное, но лучше собрать в один объект с минимальным количеством точек и ребер, а поверх использовать модификатор подразделения (Subdivision surface).
Материалы используются самые простые и для кривых, и для меш.
Grease Pencil использует свои материалы и слои. То есть достаточно создать Grease Pencil объект, настроить материалы, задать слои и не забыть нарисовать.
Принтскрин окна Blender со всеми нарисованными объектами
Принтскрин окна Blender со всеми нарисованными объектами
Таймлапс видеоролик на VK Видео, демонстрирующий весь описанный процесс
«Создание простых 2D объектов разного типа в Blender»
Зеркало на Rutube: https://rutube.ru/video/aeeb2f25a85814dac5d5b27d0910900e/
Зеркало на YouTube: https://youtu.be/Oet08KTAI28
2

Риг 2D локаций

Вне зависимости от того каким образом создана локация: будь то картинки, кривые, Grease Pencil или меш, импортирована она или нарисована в Blender, структура костного рига 2D локаций обычно очень проста. Основа - главная кость или рут (root), к ней крепятся детали и мастер-кости к которым крепятся ещё детали или новые мастер-кости. То есть самые простые зависимости без изысков, без складывающихся-накладывающихся, скрывающихся (иногда в шкафу) скелетов и всего вот такого, ну, в большинстве своем.
Однако, иногда возникает жизненная необходимость что-то пошевеляжить. Например: сделать "мягким" диванчик; наклонить дерево; пошевелить куст и так далее.
Да, если какой-то объект большой, важный, да ещё с ним связаны какие-то действия или взаимодействия, то такой объект будет уже пропсом. При необходимости для него будет сделан отдельный риг, а простенькие детальки так и остаются в локации. К таким объектам, чаще всего, не предъявляются особые требования, а риг делается максимально простой.
Стоит уточнить, что для объектов окружения чаще всего необходимо обычное передвижение по оси X (горизонталь) и оси Z (вертикаль). Это если смотреть на 2D макет в лоб, при используемой глобальной системе координат. Бывает необходимость покрутить деталь по оси Y, а перемещение по оси Y делается для совсем немногочисленных объектов, поскольку большинство деталей уже расставлены в объеме - все же локация. Передвижение по осям X, Z реализуется очень просто. Элемент, или целая группа, привязывается к кости целиком (Set parent to bone), а на кость желательно установить ограничения, включить замочки на всем лишнем. Можно ещё добавить ограничивающий констрейнт, например для ограничения угла поворота.
Созданный риг и кость облачка с припаренченным объектом
Созданный риг и кость облачка с припаренченным объектом
3

Риг с констрейнтом Maintain Volume

Если деталь просто перемещается и поворачивается, то достаточно одной косточки и на этом все, а вот с масштабом может быть несколько иначе. Это потому, что при масштабировании по одной из осей, очень часто возникает необходимость сохранять визуальный объем всего объекта. В Blender для этих целей предусмотрен констрейнт Maintain Volume. Достаточно добавить этот констрейнт на кость и все. Деталь или несколько деталей припаренченных к этой кости, будут хорошо, правильно сквошится и стретчится.
Вот это и есть первый вариант рига способного сквошить и стретчить. Какой ни есть, а он не очень удобен, как минимум тем, что просто изменить размер стало совсем не просто. Но это работает и даже используется.
Оснастка и констрейнт куста
Оснастка и констрейнт куста
4

Риг с тремя костями

Для того чтобы стало удобней нужно построить конструкцию немного сложнее. В такой конструкции целых три кости: кость-основа; кость деформаций и кость-цель. Такая конструкция является основой множества других прекрасных и простых конструкций. Например, рига для мячика, который описан в одном из опубликованных материалов[сноска].
Итак, что же тут к чему. Кость-основа или мастер кость, является главной в этой конструкции, к ней припаренчены обе кости: кость деформаций и целевая кость. Для того чтобы все хорошо работало хвост кости деформаций должен находится в точке расположения основания целевой кости. И желательно расположить оси перечисленных костей максимально близко к визуальной оси объекта. Конечно, объект может быть разной формы и состава, это могут быть и несколько кривых одновременно. В общем бывает такое, когда приходится опытным путем подбирать расположение деформационной кости, чтобы деформация происходила более удобно и правдоподобно. После того как кости установлены на свои места достаточно перейти из режима редактирования в режим позирования и добавить на деформационную кость констрейнт Stretch To. Сделать это возможно несколькими способами. Если просто добавить констрейнт на кость, тогда необходимо указать в качестве цели риг, затем целевую кость, к которой будет тянуться деформационная кость, а остальные настройки можно оставить по умолчанию. Либо, выделить сначала целевую кость, затем кость деформаций и нажать [Shift+Ctrl+C], в появившемся меню выбрать констрейнт Stretch To. В этом случае цель и целевая кость уже будут указаны в настройках. Остается припарентить объект или детали объекта к кости деформаций и можно использовать. Парент простой, так же как и в предыдущем случае, целиком к кости (Set parent to bone).
Когда нужно сделать одинаковый риг и для другого объекта, то вместо того чтобы каждый раз создавать новые кости, достаточно скопировать уже имеющиеся и перенести на новое место. Затем расставить скопированные кости, например с помощью 3D-курсора и переименовать. После изменения размера и положения деформационной кости, после каждого такого изменения, необходимо сбрасывать значение её размера в настройках констрейнта.
Вот таков второй вариант.
Такелаж и констрейнт ели
Такелаж и констрейнт ели
5

Риг с бенди-бонс (Bendy Bones) костью

Этот вариант работает с Grease Pencil и Mesh объектами. В нем все так же три кости. Кость-основа, от нее исходит (т.е. эти кости связаны) деформационная кость, а целевая припаренчена к основной с отступом (Keep Offset). Аналогично предыдущему варианту на кость деформаций установлен констрейнт Stretch To. Видимый объект припаренчен к деформационной кости с помощью варианта Object. На самом деле припарентить можно другими способами, включая вариант с автоматическим распределением весов, но в данном материале опишу способ с Object. Для того, чтобы все заработало нужно создать группу вертексов состоящую из всех вертексов с весом равным единице и именем деформационной кости. А так же добавить к меш объекту модификатор Armature в котором указать имя рига.
Осталось сделать пару завершающих штрихов. Деформационной кости, в разделе Bendy Bones нужно добавить сегментов (Segments), пусть будет 10. И указать что управлять хвостом будет целевая кость. То есть в том же разделе Bendy Bones/End Handle изменить значение на Absolute или Tangent, а в End Handle/Custom указать имя целевой кости.
Принтскрин рабочего окна блендер со всеми объектами, ригом и открытым стркутурным редактором (Outliner)
Принтскрин рабочего окна блендер со всеми объектами, ригом и открытым стркутурным редактором (Outliner)
Таймлапс видеоролик описанного процесса на VK Видео
«Несколько простых конструкций рига 2D объектов разного типа для локаций в Blender»
Зеркало на Rutube: https://rutube.ru/video/a72e08f3e91e5ce08386f6b729a16fcb/
Зеркало на YouTube: https://youtu.be/1T8HDVOr2BE
6

Приложения

Вот из таких, простых конструкций можно собирать очень даже приличные локации. И можно навести красоту, заменив внешний вид костей на симпатичные виджеты. Каким образом это сделать показано и рассказано в публикации "2D мячик с ригом в Blender"
Демо-ролик «2D локация Grease Pencil с ригом в Blender»
Видеоролик «2D сцена и персонаж Grease Pencil из векторного макета»
Видеоролик «Создание 2d сцены из *SVG в Blender»
Дополнительные файлы к публикации.
*blend файлы были созданы в Blender 3.1
Google Диск: https://drive.google.com/drive/folders/1ESEqBFBBbMqFQNgA_3xADZlYmAT7iyrM?usp=share_link
Yandex Диск: https://disk.yandex.ru/d/ZPtN4b8l8TD0CQ
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website