Inverse kinematic constraint for blender importer

Hey everyone :slight_smile:

Today I have made a commit that adds support for Inverse Kinematic constraint for bones.

The IK constraint is very very very … very simple yet, but I hope to improve it with time.
It works only for the most simple cases now and has lots of limitations.

The following options are not yet supported:

  • rotation
  • pole target
  • subtarget for targets that are objects in blender scene
  • influence
  • stretch
  • use tail

Most of them (except perhaps rotation) should not be extremely difficult to add so I hope to add support for them soon :slight_smile:

The constraint will not work correctly in a chain that has more than one bone with IK. I still need to figure out how blender solves this situation (so if anyone could explain it to me I would be grateful :wink: ).

The quality of the result is not yet perfect and will probably not look very natural, but I hope to improve this by improving the algorithm I used.
I implemented the triangulation algorithm to solve the IK problem. It is described here:
Triangulation algorithm description (in pdf)

I know that my commit has almost only flaws. But I decided to post it now because it contains several bugfixes:

  • applying and reading bones transformations in world space
  • fixed a bug of lack of tracks for bones whose constraint made the bone move

and improved the bones loading from blender file :slight_smile:

I do not expect you to like the way the IK is loaded at the moment because as I said - it still needs lots of improvements :wink:

9 Likes

I’m glad to hear you’re working on this!!
This is THE missing feature of the blender loader.
I’m really looking forward to this

1 Like

wicked! good luck

I’ve been waiting 3 years for this feature XD Awesome.

nice one :slight_smile:

Just a short update on the situation :slight_smile:

During my work on IK constraint I made a serious bug that caused ClassCastException to be raised when constraint was applied to an object and not to a bone. Sorry about that. Please upgrade to the newest version. I commited a fix to that yesterday :wink:

I also fixed a bug in position limitation constraints (Copy location, limit location, limit distance) that cause the constraint not to be applied when bone was not attached to its parent.

And I added a support for influence factor in IK constraint :slight_smile:

I will inform you here on further progress.

2 Likes