Эта публикация на сайте автора: http://blenderkey.tilda.ws/2dflatcar_rig23y
В этой публикации опишу процесс создания простого рига для плоского автомобильчика созданного с помощью Grease Pencil. "Простой риг" может означать совершенно разные конструкции, поэтому кратко распишу возможности оснастки. Риг предусматривает наклон вперед, назад и перемещение кузова вверх, вниз относительно позиции установленной моделью. Возможность автоматического вращения колес при перемещении автомобиля и возможность дополнительно анимировать вращение колес. Так же предусматривается отзеркаливание модели (разворот) и возможность масштабировать всю модель.
Модельку автомобильчика можно нарисовать, начертить, или собрать самыми разными способами. Для этой публикации был создан автомобильчик состоящий из трех объектов Grease Pencil: колесо переднее [Wheel.Ft]; колесо заднее [Wheel.Bk]; корпус [Car.Body]. Центры трансформации (ориджины от origin) колес расположены строго по центру, а кузова около центра в нижней части. Такое расположение ориджинов предназначено только лишь для точной установки костей цифрового скелета. Но это не сверх важный момент и если ориждины модельки вдруг окажутся в неизвестном положении, то можно отцентровать кости с помощью 3D-курсора, например.
Материал публикации разделен на три условных части:
- Создание скелета
- Привязка модели
- Настройка рига
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. А масштабирование модели можно выполнять в объектном режиме, таким образом вращение колес будет происходить без проскальзывания при любом масштабе модели.