# IK Controls are now out of beta!

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

9 Likes

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

2 Likes

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.

4 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.

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?

28 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
33 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:

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

I’ve seen the docs before, would love to see it explored via a video tutorial

2 Likes

Super excited to get to use this in real work!!

4 Likes

This is definitely gonna be cool to see with physics in games!

4 Likes

NO WAY I was about to ask about it on the original IK beta post. YESS I’m so happy, seriously one of my favourite releases in a long time. Thank you for your efforts sg3cko, it will not go unappreciated!

3 Likes

Not 100% sure whether or not it would work but have you tried setting the pole property to an attachment or part below the tube/arm?

Wow, I was messing with the properties and then roblox studio crashed.
I was able to recreate this error multiple times too with & without beta features enabled.
It seems to happen when creating IKControl instances in the humanoid (R6) on the client while set to position mode and then resetting your character.

File:
IK test.rbxl (59.9 KB)

Script
``````local character = game.Players.LocalPlayer.Character
local humanoid = character.Humanoid
local ik1 = Instance.new("IKControl")
ik1.Name = "LeftSteer"
ik1.Parent = character:FindFirstChildOfClass("Humanoid")
ik1.Type = Enum.IKControlType.Position
ik1.EndEffector = character:FindFirstChild("Left Arm", true)
ik1.ChainRoot = character.Torso:FindFirstChild("Left Shoulder", true)
ik1.Target = workspace.SteeringWheel6.LeftHand

local ik2 = Instance.new("IKControl")
ik2.Name = "RightSteer"
ik2.Parent = character:FindFirstChildOfClass("Humanoid")
ik2.Type = Enum.IKControlType.Position
ik2.EndEffector = character:FindFirstChild("Right Arm", true)
ik2.ChainRoot = character.Torso:FindFirstChild("Right Shoulder", true)
ik2.Target = workspace.SteeringWheel6.RightHand
``````

(I’m on an intel mac if that helps)

4 Likes

I I was really waiting for this! thank you.

1 Like

Interesting. I don’t see what purpose that would serve other than perhaps pivoting relative to the limb’s joint attachment, which can be accomplished numerous other ways. I’m curious to know if you are aware of any other use cases for IKControl on R6?

2 Likes

That is a programmable property and not a visual one!

1 Like