IK Controls are now out of beta!

We are pleased to announce that IKControls are now fully released for you to use in your experiences!

This release has multiple improvements since the Beta was originally announced that we would like to highlight:

  • Fixes several bugs, improves performance, and adds support for custom rigs.

  • Adds support for smoothing with IKControl.SmoothTime, which specifies a value in seconds that it takes for the end-effector to smoothly reach the target.

  • Exposes IKControl.Pole, a property that allows you to control how the IK chains bend.

  • Adds support for using Attachments as end-effectors, to specify which point of the end-effector should reach the target. This effectively serves as an additional offset in end-effector space just like EndEffectorOffset.

  • Specifying a BasePart as EndEffector now moves its center to the target, not the motor or joint.

  • Allows specifying which axis to use as a forward axis in LookAt constraints to have custom characters look in the right direction by using Attachments or IKControl.EndEffectorOffset.

We want to thank you for all of your testing and feedback - we would not have crossed the finish line without you.

If you have any additional questions or feedback, please comment below.

ik_mrcrash_salute_ty

236 Likes

This topic was automatically opened after 10 minutes.

Super great progress from the previous post - thank you for the hard work! IK controls are amazing for use in-game, especially for ship sailing and footplanting systems.
I haven’t gotten time to use this feature since last, so out of curiosity - does R6 work with this now? I haven’t been able to get it working prior, and it’s understandable if the answer would be no.

21 Likes

LETS FREAKING GOOOOOOOOOOO
Glad to see this has finally been released to public! I’ll definitely be using this in the future for my own animations. Huge W update from Roblox Corporation.

20 Likes

Inverse kinematics allows one joint of a rig (like a person’s hand or leg) to move freely while also bending the other parent joints (lower and upper arm) accordingly using some math. It’s existed for quite a while in other game engines, but Roblox developers can finally make good use of this feature, especially when most, if not all, of the bugs from the beta have been fixed.

IK is especially useful because for animating complex rigs like R15 characters, you can just move a single foot or hand and the other joints it is connected to will do the extra work to bend while doing their best to look natural, and then you can refine it later on. Just see the GIF at the end of the OP for yourself if you don’t know what I’m trying to say.

Also, please read through the post before commenting. Thanks.

15 Likes

I’m happy to see this out of Beta! I’m also happy I contributed a lil’ bit when I reported some bugs! Will there be new stuff adding onto the Instance?

8 Likes

Just curious, where am I supposed to find and set the Pole property?

image

9 Likes

I love it lol
So it only works on characters that have animations running?
Or does it work with just an Animator?

22 Likes

Since IKControls are currently limited to R15 rigs, are there any plans to allow for custom setups in other rigs with something like an IKConstraint? These could be added or imported to control how IKControls are supposed to function so we can easily setup IK for non-R15 rigs (Tools, Custom Characters, Accessories).

Adding onto this, IK support for Armatures is a must. I know Blender has some constraints for bones that I’m sure can be saved as FBX metadata. Being able to export those into Roblox with resembling behavior would be awesome.

14 Likes

YESSSS
I was depending on this for my game!
(it uses IKControls for holding animations)

3 Likes

Waiting for someone to make a good tutorial on this :smile:

8 Likes

You can find information on how to use it here: Inverse Kinematics | Roblox Creator Documentation

1 Like

To my knowledge, you are able to use IKControls on non-R15 rigs. It just needs an AnimationController with an Animator. You can read about that here: IKControl | Roblox Creator Documentation

5 Likes

Inverse Kinematics (IK) works by figuring out how to bend/rotate/move a chain of objects for the end of the chain to reach a certain point (IKControl.Target). Using the example of an arm in R15, there is the UpperArm, LowerArm, and Hand – the end of the chain. IKControls does all the mathematical calculations to determine how the shoulder, elbow, and wrist should bend in order for the hand to reach a given target. Now if we consider R6, there is no chain in the arm, as it consists of a single part. Due to this, it does not make sense to use IK on R6.

3 Likes

There is an issue when it comes to more complicated chains that span multiple bones, the rotations twist like a candy wrapper and disregard rest positions destroying the form and resemblance of the mesh.

If you don’t get what I mean just look at both of these GIFs.
problem

As we can see down here, Blender elegantly handles IK and treats it like memory foam, being able to change while still maintaining form, is it possible for Roblox to add this algorithm for more complex bones?
solution

24 Likes

I also would like to mention, that Blender’s solution to their IK is open source (I tried to read it but its ALOT) and I believe there is a book called “Building a better IK solver” by Aragorn Crozier that goes into detail about it. They said it was an algorithm fast enough to run in interpreted languages like Python, but I gave it my best to remake in Lua and couldn’t because it was above my level.

4 Likes

27 Likes


Docs are still outdated (Inverse Kinematics | Roblox Creator Documentation)

I’m well aware of how IK functions & what it is. According to the original thread, they were supposed to function on R6 also, hence the question:
image

4 Likes

ooh wow that’s awesome! I wanted to make a prototype involving this technology since last year but i never had time, it seems i’ll have to make some space to test it!

1 Like