Установить limit rotation при инверсной кинематике

Board index Blender 3D Анимация

Description: Вопросы и обсуждения аспектов анимации в Blender
Moderator: exooman

Post #1by FNH563C74Q » 06.11.2019, 17:53

Столкнулся с проблемой: применив констрейн инверсной кинематики не могу установить лимиты вращения для костей. Устанавливаю лимиты в панели Bone > свиток Inverse Kinematics.
Image Image Image

но когда тяну за таргет, то лимиты нижней кости не работают

Image
FNH563C74Q
Posts: 7

Post #2by stark » 06.11.2019, 21:32

FNH563C74Q, у тебя IK-цепочка значит 2 кости и для каждой в Bone -> Inverse Kinematics ты поставил ограничения. Ну, значит, всё правильно сделал. Меня смущает зелёный цвет кости "к_шея", что там за ограничитель (Constraint) висит, он точно нужен? Чудес не бывает и должно быть объяснение. Кинь одну арматуру без мешей, гляну.

И зачем тебе вообще IK на голову? Больно причудливо выглядит. Ты и IK Pole Target в этом случае собрался управлять? :-D

P.S. Ух какой непривычный уже интерфейс 2.79 после 2.80.
stark M
Posts: 2246


Post #3by FNH563C74Q » 07.11.2019, 08:15

stark, спасибо, что отреагировал на мой вопрос, не обращай внимание на цвета костей на скриншоте, это я пробовал разные способы, вешал всякие констрейны, но ничего не помогло :facepalm: .
Вот файл проекта (он с мешем, так что если меш мешает, просто выдели его и нажми H, ты это знаешь, я уверен) https://yadi.sk/d/H-aJh9EssbT_YQ

Собственно не важно, на голову применяется IK или на другие части тела, принцип-то один. Что руки, что ноги, что голова, при IK уходят почему-то за лимиты ?:-|

Т.е. проще говоря, мне хочется добиться того, чтобы части тела персонажа имели те же ограничения, что и у нормального человека, а не вращались как им вздумается вокруг своей оси :beer: Но при инверсной кинематике почему-то это не выходит, а хотелось бы избежать вот таких моментов
Image

PS, если хочешь открыть мой проект в версии 2.8, достаточно просто открыть его в предыдущей версии блендера, выделить меш с арматурой, скопировать Ctrl+C и в 2.8 вставить Ctrl+V (думаю, что ты в курсе, так, на всякий случай). Мне просто более привычен 2.79
FNH563C74Q
Posts: 7

Post #4by stark » 07.11.2019, 13:40

FNH563C74Q, проблема в том, что корень IK-цепочки крутится совершенно свободно даже если его ограничить в Bone->Inverse Kinematics. Все младшие звенья IK-цепочки следуют ограничениям и ты можешь в этом убедиться, укоротив или удлинив IK-цепочку.

Можно сделать такой "финт ушами": скопировать эти две кости IK цепочки в параллельную цепочку, разделив управляющую и деформирующую цепочки. Т.е. IK цепочка теперь не деформирует меш, а деформирующие кости копируют с IK-костей поворот через Copy Rotation Constraint, но кроме того ограничены через Limit Rotation Constraint. Но не скажу что это здорово.

Image

Если честно, никогда не задумывался об этой особенности IK и не испытывал всвязи с этой особенностью проблем. Дело в том, что если применять IK к рукам или ногам, то корнем цепочки будет тазобедренный или плечевой сустав, который очень свободно крутится и тут скорее аниматор сам разберётся, до какого угла его нормально поворачивать. Ну а поворот в колене/локте ограничить уже работает.

Может стоит задать вопрос разработчикам почему IK Solver игнорирует ограничения на поворот у корневой кости цепочки.

Added after 29 minutes 14 seconds:
P.S. ИМХО ты слишком много внимания уделяешь ограничениям. Вот ты точно знаешь, что тебе надо, допустим 20 градусов ограничение, а не 21, 22, 25? Почему не оставить это на усмотрение аниматора? Вдруг ему надо будет чуть сильнее чем ты разрешаешь и неважно что что-то при этом чуть испортится или будет немного неанатомично? Может наоборот нужна выраженно неестественная поза?

По мне надо просто дать удобные "ручки" с минимальным набором ограничений (вроде нога в колене только по одной оси поворачивается и т.п.). IK для головы выглядит неудобным. А удобным выглядит завести отдельную кость в основании шеи и объявить её ручкой. Копировать с неё вращение на голову на 100% а на кости шеи дробно, там 50% если кость шеи одна, 33% и 66% если две.
Для удобства аниматора назначить на ручку shape и рисовать его не в основании шеи а на месте деформирующей кости головы. Чтобы как-будто аниматор за голову берёт и крутит. Для полноты эффекта иметь ориентацию ручки и кости головы одинаковой через копирование в СК World или Pose на 100%.

Это я в CG Cookie FlexRig подсмотрел, вроде не дураки делали ;) Его тяжело изучать правда с его-то заморочками адаптации под разных персонажей. Он так-то открытый, но почему-то непонятно как скачать и ссылка на Blendswap ведёт вникуда. Но если интересно - то вот его кто-то выложил в баг-репортах Blender.
stark M
Posts: 2246


Post #5by FNH563C74Q » 07.11.2019, 16:45

stark, большое спасибо за разъяснения и, что потратил на меня своё свободное время. В общем-то я так и предполагал, что в блендере просто не реализована возможность ограничивать корень IK цепочки. Твоя идея выглядит перспективно, пусть сдвоенные цепочки выглядят не очень изящно, но это работает. Для моего проекта это шаг вперёд. Премного благодарен за помощь!
FNH563C74Q
Posts: 7

Post #6by stark » 07.11.2019, 17:03

FNH563C74Q, и тебе спасибо, шаг вперёд - это хорошо :)
stark M
Posts: 2246



Return to Анимация

Who is online (over the past 5 minutes)

Users browsing this forum: 2 guests