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.
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.
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.
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.
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?
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.
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
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.
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?
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.
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!