Inverse Kinematic constraints don't work for root bone #87923
Labels
No Label
Meta
Good First Issue
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Eevee & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds, Tests & Devices
Module
Python API
Module
Rendering & Cycles
Module
Sculpt, Paint & Texture
Module
User Interface
Module
VFX & Video
Priority
High
Priority
Low
Priority
Normal
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Information from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender-manual#87923
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce GTX 750 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 456.71
Blender Version
Broken: version: 2.91.0, branch: master, commit date: 2020-11-25 08:34, hash:
blender/blender@0f45cab862
Worked: (newest version of Blender that worked as expected)
Short description of error
When using the tools meant to constrain the rotation of bones involved in the IK chain it seems to only apply to the first one. In the example file bone 2 has lock IK X,Y, and Z as well as the limit rotation contraints for X,Y, and Z for good measure. Bone 2 is the one with the IK chain of 2 applied and bone 1 is clearly effected but with the limits and locks applied it shouldn't be moving at all and yet it does.
Exact steps for others to reproduce the error
see that IK locks are applied to bone 1, move the Target bone around and observe that indeed the locks are not being applied.
IKbug.zip
Added subscriber: @lukostello
Added subscriber: @filedescriptor
AFAIK this is intended behavior. See the manual on the Limit Rotation constraint.
Changed status from 'Needs Triage' to: 'Archived'
all it says is "This transform does not constrain the bone if it is manipulated by the IK solver. For constraining the rotation of a bone for IK purposes, see the “Inverse Kinematics” section of Bone properties" which is true for the first bone in the IK chain but as I've demonstrated in this example, it doesn't get applied for any bone after the first one.
my complaint wasn't that limit rotation didn't limit the rotation for the IK solver (although personally this would make sense to me, but I'm sure there is some rational behind why IK constraints are separated) I only included the rotation constraints to show that its not an alternate solution to getting the end result I'm looking for which is having bone 1 be constrained while using IK solver.
Changed status from 'Archived' to: 'Needs Triage'
Added subscriber: @dr.sybren
@dr.sybren Could you take a look at this?
I tested with Blender as old as 2.75, and the behaviour has been the same through the years.
In the example file the IK limits are applied just fine when I change the chain length from 2 to 3; that way the bone is inside the IK chain instead of at its root. If you don't want the root to be influenced by the IK chain, just make it one step shorter (so length 1). Would that be a suitable workaround?
Added subscriber: @Format64
Is this related? https://devtalk.blender.org/t/pole-target-and-inverse-kinematics-limits/5604
From that I've read it's 2.46 limitation: https:*web.archive.org/web/20101224021652/http:*www.blender.org/development/release-logs/blender-246/inverse-kinematics/
Modern manual is less clear and doesn't say that adding pole target will make ik ignore all these limit settings.
Changed status from 'Needs Triage' to: 'Confirmed'
In that case let's consider this a known limitation that is also under-documented. As far as I'm concerned, it can be resolved by simply clarifying this in the manual.
I've at least removed the horror of
see the “Inverse Kinematics” section of Bone properties
in the Limit Rotation Constraint manual chapter, and replaced it with an actual link to the relevant page.Inverse Kinematic constraints only work for first boneto Inverse Kinematic constraints don't work for root boneNo that would not be a suitable work around. I only limited all the axis to demonstrate that none of them work. In my actual workflow, what I'm dealing with is I want to limit a hip joint such that it isn't allowed to go into the ribs, so instead of the locking any particular bone I'm using particular min and maxes on each axis.
I don't see why the constraints of the first bone should be ignored. Results in hips in chests.
The article on pole target and inverse kinematics seems relevant and helpful here. I'm trying to understand the solution they came up with but its hard to understand because they make it seem like they have a bone for the shoulder and a bone for the upper arm. Which seems really weird to me. Maybe they are talking about the clavicle or something because the shoulder is the joint not a bone. It would be really helpful to see what this solution they came up with for the shoulder problem is. How do they handle it in Maya? Is there the same struggle over prioritizing pole targeting and shoulder target limitations?
So if I were working on this solution, my goal would be to program it such that if you have a IK on the shin bone with a length of 2 incorporating the thigh bone in it with a PT for the knee, the hip bone if it has IK constraints such that it prevents the thigh from going in the torso. That when placing the IK and PT targets it results in what would happen if you asked someone "Hey could you put your foot towards here, while your knee points here?"
Added subscriber: @0xb