Inverse Kinematics Control Instance for animation is now in Beta!

Hi Developers!

We are thrilled to announce a new animation control coming to Studio. Today, we are releasing IKControl, which is a new Instance type that allows you to create realistic procedural animations on your rigs using Inverse Kinematics (IK), as a beta in Studio.

For those unfamiliar with IK, inverse kinematics allows an animator to grab and place the end of a kinematic chain, such as a character’s hand or foot, and it will automatically solve the in-between joints positions and orientations to achieve the result you are after. It is used extensively in computer animation to ensure characters can accurately make contact with the environment around them.

Here are just a few of the things you can have your characters do with this new animation tool:

  • Hold weapons and tools
  • Reach for objects, buttons, door handles, and more
  • Place feet appropriately on the ground
  • Aim weapons
  • Look at points of interest
  • Have two characters shake hands or hug
  • Pose characters by just moving their hands or feet

ikcontrol_grounding_comp ikcontrol_placement_comp

ikcontrol_weapon_comp ikcontrol_lookat_comp

To get started, you will first need to enable the beta “IK Controls” in the Studio Beta Features menu. Once enabled, you can then create an IKControl Instance as a child of your Humanoid or AnimationController and set a few properties on it:

  • Type: how you want your control to behave. Try Position or Transform if you are unsure.
  • EndEffector: the joint in your character you want to move. For example the hand.
  • ChainRoot: the first joint in your character that can contribute to the movement. For example the shoulder. Must be an ancestor of EndEffector on the same character.
  • Target: what you want your character to reach for.

Here is the documentation page and a guide for further details on how to use IKControls to set up these examples, and you can find a code snippet below!

-- the character you want to modify. Place this script as a child of your character
local character = script.Parent
local ik = Instance.new("IKControl")
ik.Parent = character:FindFirstChildOfClass("Humanoid") -- or "AnimationController"
ik.Type = Enum.IKControlType.Position
ik.EndEffector = character:FindFirstChild("LeftHand", true)
ik.ChainRoot = character:FindFirstChild("LeftUpperArm", true)
ik.Target = workspace.target -- an Attachment or BasePart you created in your world

We are releasing this feature initially into our beta program to collect feedback and answer your questions. We will continue to add features that you would like to see, so let us know what you think below!

Thank you!

368 Likes

This topic was automatically opened after 11 minutes.

This will revolutionize animations and games, finally the players won’t float in the air. I have been trying to script a module for IK but I no longer need to. Thank you for adding this feature.
But will this be only exclusive to rthro or it can be used for blocky?

51 Likes

This is so cool! I’m genuinely impressed!

Will we also be able to use this in real-time or during run-time for procedural animations and movements created on the fly?
I’d absolutely love that and it’s something I’ve always wanted.

IK in real-time is such a big deal to implement in plain Lua(u) and expensive to calculate for lots of characters.

11 Likes

Thank you!
IKControls can be used for R15, R6, rthro and custom imported characters (skinned meshes).
This is working in real-time, you can create procedural animations on the fly inside your experiences.

58 Likes

Even r6 I am surprised actually, but that’s great as every game can implement it if they want.

8 Likes

Will any guides regarding live animations also be released?

7 Likes

This update would be great for realistic type games.

4 Likes

Yes, we currently have the documentation and a guide available.

6 Likes

Now i have one little additional reason to not learn Blender :skull:

23 Likes

Welp now that I’ve already made IK support
I guess I’ll just use mine, lol

The IK Control instance is going to be easy to use though, I’m excited to see what kind of things people make out of it.

3 Likes

this is INCREDIBLE

thank you SO MUCH for making this

8 Likes

This is just an amazing update with animations. Considering the fact that not so long ago you published Live Animation Creator and talked about its application and properties. Thank you very much for this, I think that in the near future developers will not have to hire animators in their projects.

5 Likes

Fantastic! I really look forward to using this for my game’s bosses.

4 Likes

Is there an estimated release?

2 Likes

I cant seem to get it to work. I added the script from the documentation page to a Dummy. I created a part called target and put it in the workspace as well but nothing happens. I do have the beta Enabled, the IKControl Instance does get added to the Humanoid with all of its properties correctly set.

6 Likes

“DAMN” - This is my first reaction to this announcement, honestly we all waited long for this feature and such improvements will make Roblox Studio act like an actual Game Engine such as Unreal Engine or Unity

7 Likes

I think this is not how it works, considering the fact that it is also in beta so somewhat kind of the bugs still could be here. The nearest solution is probably that IKCotrol does not track hitting objects.

1 Like

This is a great update! I can see this being used for realistic game animations if a game wants it to be as realistic as possible.

3 Likes

Thats not what im trying to do, im trying to get the hand to go to the parts position, using this script from the documentation.

1 Like