Skip to main content

Inverse Kinematics for Constraints Now Available in Studio

December 07, 2017

by ContextLost


Product & Tech Creators

Last year, we introduced new mechanical constraints which enabled all kinds of possibilities for building a multitude of complex systems that were physically robust and stable. Now to help make building with constraints easier (and a lot more fun), we’re excited to introduce some new tools that are available now in Roblox Studio!

“Constraints” Drag Mode

When you enable the new “Constraints” drag mode in Studio, we will use inverse kinematics (IK) to solve any constraints affecting the parts you’re dragging. Movement will also be restricted by that configuration of constraints.

The new “Constraints” drag mode in Studio is analogous to the existing “Collisions” drag mode that honors collisions and prevents you from positioning parts so they overlap each other. You can find the button to enable it in the “Tools” section of the ribbon bar in Roblox Studio.

This feature is a small step towards making it easier to “build with precision” in Roblox Studio. These new tools should allow you to build and manipulate complicated systems of constraints while keeping them in a valid configuration. When you run your game, everything should already be in a stable configuration. No “snapping,” no unpleasant surprises. Don’t be afraid to make mistakes in this mode either, because Undo is supported too. This makes it easy to explore how your mechanisms move and also makes it easy to pose them.

It’s also a lot of fun. I used it to help this robot get ready for a job at the Roblox toy factory in record time:

The robot is a basic 6-axis industrial robot with six HingeConstraints with servo actuators. I wrote a small script to change TargetAngle and AngularSpeed to animate through a series of poses over time. This animation is entirely driven with physical constraints! Setting up those poses for the animations without inverse kinematics in Roblox Studio would have been a painful trial-and-error process, but with this new feature it was easy.

I’m sure you can imagine many more exciting ways to use this. What will you build with IK?

It’s been exciting to see the impressive things the community has built with constraints already, and we’re looking forward to seeing what kind of new and complex systems they’ll build now! Also, if you try it out and have any feedback on this feature we’d really love to hear it! Did you find it useful? Did something not behave the way you expected? Pop on the Developer Forums and let us know. We’re listening!