IKB - Inverse Kinematics Bundle

Meant to ask, what method are you using for your IK solver? I can’t seem to recognize it judging by the source code.

I’m not sure, I know nothing about the math behind inverse kinematics, I just know how to write code. You would have to ask original creators which I have included in the credits.

Thank you for the module, it’s extremely convenient for humanoids, compared to other generalized solutions out there. Here’s some improvements I can think of:

  • Have an init.lua file which presents a common API between R15 and R6. So you could just tell it which limb you’d like to interact with, and where it should point, and that’s it. The rig type would be detected from Humanoid.RigType, without you having to specify it.
    Just something like IKSolver.new(character, "Left", "Arm") (or IKSolver.new(humanoid, "Left", "Arm") that would just work regardless of R6/R15.
  • Have a possibility to specify the up direction of the wrist/foot in addition to its position. So, if the character is holding a steering wheel, you’d want to be able to rotate the wrists so the arms correctly grab the wheel. On R6, this would just point the entire hand’s up direction that way.
  • Have an option to run the _TransformResetLoop manually instead of it automatically starting as a side effect of instantiating the class.
  • Publish on the Wally package manager (preferably under the full name InverseKinematicsBundle instead of IKB, so it’s easy to find, and discover).
  • Link this post on the GitHub page (I had to go to devforum.roblox.com/t/ikb-inverse-kinematics-bundle and Discourse found the post for me - search didn’t find anything). It’s also allowed to link DevForum posts on Roblox assets’ descriptions.

Again, thank you for publishing this, it’s very convenient.

1 Like

This is awesome! I really love it, but I wonder if there’s anyways to turn it off, like, desactivate, or something like that, so I put back my arms where they are supposed to be.

Oh nevermind, I just saw that we could use “:Destroy()” method.
Thanks anyways!

1 Like

This is a massive W for people who don’t want to sit there and animate for 4 hours.

:smiley: Nice post!

I’m back again, and I would love to now, how to change the hands position,
Capture d’écran 2023-06-25 084648
Thanks in advance.

Try bringing the attachments closer.


  16:31:21.601  Players.NotBugle.Backpack.Debugger.R6.Arm:70: attempt to index nil with '_Torso'  -  Client - Arm:70

Hello, does the system have implemented replication? My IKs dont seem to be replicating for other users.

It does not, and for replication all you need to do is have every player do the IK, given that the 2 points used have position replicated.

If i were to make every IK for every player on local and update them accordingly wouldnt that be heavy on performance?

Nope, the module has been written for maximum performance. If you are planning to use IK on thousands of objects, you will probably want to start utilizing parallel execution.

Is there any way to make this work with steering wheels? I have a seat and I want it so that when you sit on it that you’d be able to see your arms when you’re steering the wheel. I have two attachments, one for the right arm and one for the left. This is also for R15. Thanks!

any idea why this happens?

1 Like

fixed it by making target closer

Is there any way to stop the ik for a little other than destroying it? i need this for animations

Change the weight value. Example : 1 is full weight, meaning the IK has full control. Meanwhile, 0 is the opposite meaning it barely have the control. So the weight value is like a percentage Edit:I thought you’re using IKControl :sweat_smile:

1 Like

Instead of a rig, can this be used to animate or move a mesh that has bones and in IK bone at the end of it?

If so , what would be the steps?


You can only use it for R15, and R6 rigs. Custom rigs are not supported. If you would like to use a custom rig or R15, I would recommend checking out IKControl instance first. It’s official abstraction for inverse kinematics that works on R15, custom rigs which includes the Bone instance, and it also supports physical constraints when IKControlConstraintSupport is set to Enabled on Workspace instance.


Hey im not very Advanced in coding Would you mind showing code that replicates the inverse kinematics for other clients