Найти тему
131 подписчик

Риг 2D автомобильчика в Blender

Эта публикация на сайте автора: http://blenderkey.tilda.ws/2dflatcar_rig23y

В этой публикации опишу процесс создания простого рига для плоского автомобильчика созданного с помощью Grease Pencil. "Простой риг" может означать совершенно разные конструкции, поэтому кратко распишу возможности оснастки. Риг предусматривает наклон вперед, назад и перемещение кузова вверх, вниз относительно позиции установленной моделью. Возможность автоматического вращения колес при перемещении автомобиля и возможность дополнительно анимировать вращение колес. Так же предусматривается отзеркаливание модели (разворот) и возможность масштабировать всю модель.

Демо анимация ассета
Демо анимация ассета

Модельку автомобильчика можно нарисовать, начертить, или собрать самыми разными способами. Для этой публикации был создан автомобильчик состоящий из трех объектов Grease Pencil: колесо переднее [Wheel.Ft]; колесо заднее [Wheel.Bk]; корпус [Car.Body]. Центры трансформации (ориджины от origin) колес расположены строго по центру, а кузова около центра в нижней части. Такое расположение ориджинов предназначено только лишь для точной установки костей цифрового скелета. Но это не сверх важный момент и если ориждины модельки вдруг окажутся в неизвестном положении, то можно отцентровать кости с помощью 3D-курсора, например.

Обложка
Обложка

Материал публикации разделен на три условных части:

  1. Создание скелета
  2. Привязка модели
  3. Настройка рига

1. Создание скелета

При условии, что 3D-курсор расположен в начале координат, создам арматуру как объект [Shift+A, Armature]. Переименую [F2], пусть будет называться "Car_RIG". Чтобы кости не перекрывались моделькой, включу функцию отображения костей на переднем плане [Object Properties/ Viewport Display/ In Front]. Переведу созданный объект в режим редактирования [Tab]. Изменю размер кости передвинув верхний шарнир [G] и переименую [F2], эта кость будет основной - рут(root).

Создам дубликат кости [Shift+D], переименую [F2], назову "switch" и установлю парент связь с рут костью [LMB, Ctrl+P, Keep Offset]. Дублирую кость "switch" [Shift+D] и передвину дубликат в сторону. Что удобно, при копировании парент связь дубликата с рут костью сохранится. Изменю размер новой кости используя инструментарий боковой панели [Sidebar/ Item/ Transform/ Lenght 0.15]. Переименую [F2], эта кость будет выполнять вспомогательные функции, потому пусть будет "mch". Поставлю эту кость на место: в начало координат [Shift+S, Selection to Cursor].
Вновь дублирую кость, теперь "mch" [Shift+D], смещу дубликат в сторону. Переименую [F2], эта кость будет "body". Изменю парент связь на связь с "mch" костью [LMB, Ctrl+P, Keep Offset]. Поставлю эту кость на место с помощью 3D-курсора. Для этого закрою режим редактирования арматуры [Tab], выделю Grease Pencil объект корпуса автомобильчика (Car.Body) и переставлю на него 3D-курсор [LMB, Shift+S, Cursor to Selected]. 3D-курсор встанет на место ориджина (origin) объекта. После этого вернусь к редактированию скелета [LMB, Tab], переставлю кость на курсор [LMB, Shift+S, Selection to Cursor]. Увеличу размер кости до 1, это можно сделать в числовом поле "длинна" на боковой панели [Sidebar/ Item/ Transform/ Lenght 1].

Дважды дублирую кость "body" и переименую вновь созданные кости, которые будут управлять колесами: передняя кость "wheel.ft"; задняя "wheel.bk". Переставлю кости на свои места с помощью 3D-курсора, так же как описано выше и изменю их размер. Итого получился риг в 6 косточек.
Но осталось одно неудобство, рут кость скрыта внутри кости "mch". Чтобы стало удобней изменю режим отображения костей со стандартного на bendy bone [Object Data Properties/ Viewport Display/ Display As/ B-Bone]. Ширину и глубину появившихся кубиков можно изменить как в режиме редактирования, так и в режиме позирования [LMB, Ctrl+Alt+S].

2. Привязка модели

Прежде чем приступить к этому процессу нужно снять ограничение на выбор одновременно редактируемых объектов [Menu, Edit, Lock Object Modes]. Переключу скелет в режим позирования [Edit Mode/ Pose Mode] и выберу корпус автомобильчика [LMB], затем кость "body" [Shift+LMB]. Свяжу выбранное с помощью варианта Bone парент связи [Ctrl+P, Bone]. Аналогичным образом привяжу колеса, каждое к своей кости. Для этой модельки в этом и весь процесс. Теперь если в режиме позирования подвигать рут кость, то вся конструкция вместе с моделью будет передвигаться.

3. Настройка рига

Выберу весь скелет [A] и переключу Кватерионы на Эйлер [Ctrl+R, XYZ Euler]. Выделю кость "switch", на боковой панели [Sidebar/ Item/ Transform] или на вкладке свойств кости [Bone Properties/ Transform] заблокирую все трансформации за исключением перемещения по оси Х и добавлю констрейнт ограничения на перемещение [Limit Location]. Настройки констрейнта такие: минимум по Х=0; максимум по Х=0.2; установлена галочка Affect Transform и пространство Local Space. Сразу копирую значение перемещения по оси Х этой кости как новый драйвер.

Затем выделю кость "mch", заблокирую все трансформации и вставлю в поле масштаба по оси Х скопированный с кости "switch" драйвер. После вставки драйвера моделька превратится в узкую вертикальную полосочку по оси Z. Это произошло из-за того, что драйверу необходима настройка. Для настройки открою редактор драйверов кликнув правой кнопкой мыши на поле с драйвером [RMB, Open Drivers Editor]. Изменю кривую с Безье на Константу [T, Constant], выделю дальнюю от нулевого значения точку и перейду на вкладку F-Curve. Установлю значения полей: Key Frame = 0.1; Value = -1. Затем выделю точку кривой, находящуюся на пересечении осей и установлю значение поля Value = 1.
Пара слов о цифрах. Значение Value, в конечном счете это величина масштаба, которую можно наблюдать в числовом поле раздела трансформаций кости. Этих значений, для собираемого пропса, нужно всего два, поэтому интерполяция кривой изменена на Constant. При Value = 1 модель в обычном состоянии, а при значении Value = -1 модель отзеркалена по горизонтали (оси Х). Key Frame = 0.1, это считываемое с кости "switch" значение перемещения по оси Х, которое изменяется от 0 до 0,2. Такие пределы были заданы в настройках констрейнта-ограничителя кости. При значении 0,1 произойдет изменение масштаба модели.

На этом можно закрыть редактор драйверов и протестировать работу драйвера, перемещая кость "switch". Далее, выделяя по очереди кости: "body"; "wheel.ft"; "wheel.bk". Так же как и для предыдущих, заблокирую для этих костей все трансформации за исключением перемещения по оси Y и вращения по оси Z. Добавлю на кость "wheel.bk" констрейнт трансформаций [Transformation]. Для этого констрейнта выполню следующие настройки: цель (Target) = "Car_RIG"; кость (Bone) = "mch"; экстраполяция (Extrapolate) включена; пространство пользователя и целевое по позе (Pose Space); карта источника по локации (Location), Х мин = 0 (X Min), Х макс = 1,256 (Max); карта цели по вращению (Rotation) оси Y из источника оси X (Y Sourse Axis X), мин = 0 (Min), макс = 360 (Max). Для перерасчета перемещения во вращение используется значение длинны окружности колеса. То есть при перемещении кости "mch" по оси Х на длину окружности 0,4(диаметр колеса)*Пи = 1,256 м., колесо делает 1 оборот = 360 градусам.
Для второго колеса, чтобы упростить себе задачу, можно просто скопировать констрейнт вместе с настройками. Для этого нужно выделить косточку "wheel.ft", затем с зажатым Shift косточку "wheel.bk" и в дополнительном меню констрейнта выбрать скопировать на выделенное [Transformation/ Extra/ Copy to Selected].
Осталось заблокировать для рут кости масштабирование и вращение по осям X и Y. А масштабирование модели можно выполнять в объектном режиме, таким образом вращение колес будет происходить без проскальзывания при любом масштабе модели.

Всем успешного риггинга и прекрасных ассетов!