Skip to content

Conversation

@PROMETHIA-27
Copy link

Improves inverse kinematics to behave better generally and adds support for inverse kinematic poles.

To do this I removed FIK as a dependency and instead wrote a custom, simple FABRIK implementation with a modification to support poles as they function in blender. This should generally give a lot more flexibility when it comes to animating with IK, although it isn't full IK constraints. Constraints (and multiple end effector) support can be added in the future using the techniques described in this paper.

Solves #1775.

Currently unfinished:

  • Localization for the set ik pole action (do all languages need to be added right now or will they be filled in later?)
  • Ideally further testing to ensure it behaves correctly and as desired (I have high confidence but have ultimately not done that much with it so far)
  • Unsure if interface is ideal (in particular I would like the pole target to be a null object, rather than a locator, but null objects seem to cause issues because their update order matters? So sometimes the null object will always report its original rather than animated location).

@HatzDev
Copy link

HatzDev commented Oct 16, 2024

An IK pole without being able to control the rotation doesn't make much sense to me, maybe you could leave it as a null object instead a locator and make the position/rotation of the null object affect the rotation of the IK Bones? (just like it is in blender)

@PROMETHIA-27
Copy link
Author

I tried to make it a null object, but that doesn't work, it can just ignore the null object's position. I think this is due to null object update order (if the target updates before the pole it won't recognize the pole's position) but I'm not certain.

Fix setting IK not working on root null object
Fix solver freezing program
@JannisX11
Copy link
Owner

Just checked this out and fixed some initial issues that I noticed.
IK without poles is working fine with the new implementation, which is great.
I'm noticing the IK chain glitching when it is used inside a bone. See attached file. Maybe I am doing something wrong, but this is how I would expect it to work.
pole IK test.zip
Language strings only for en.json is correct.
Once everything is working with locators I can look into getting null objects to work as well.

@github-actions github-actions bot added the stale label Dec 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants