Inverse Kinematic Drag Tools Now Available!

We’re really excited to share something I and the rest of the physics team have been working on for a while: Inverse Kinematics for PGS Constraints in Roblox Studio!

We just call it the IK Dragger.

The goal of this project is to take a small step towards one of our larger goals of making it easier to “build with precision” in Studio. We would like any user to be able to build and edit mechanisms in Studio while keeping them intact. When you run the game everything should already naturally be in stable configuration. No surprises, no snapping, no explosions.

What it Does

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

We’ve added a new toggle button to the ribbon in Studio under “Collisions” in the Home or Model tabs.

When you enable this setting the Move, Scale, and Rotate drag tools will use a specially tuned PGS solver to maintain mechanism integrity by solving PGS constraints and welds. This is kind of analogous to the existing collisions toggle. It’s compatible with collisions as well!

I hope you all have fun with this. Please let us know if you run in to any issues or if you just made something really cool with it. Can’t wait to see what you build.

Known Issues

  • A part welded to an anchored part cannot be moved with the IK dragger. We made the decision to consider welds a constraint.
  • The IK dragger will not break surface welds. Welds are constraints and we honor them. The unfortunate fact that surface joints are hidden in JointsService makes this annoying…
  • You can’t move anchored parts with the IK dragger. We made the decision to consider the Anchored property a constraint. Should a selected anchored part be movable? This is easy to change, and we’re open to feedback.
  • Collisions are sometimes jittery.

Unfinished Features

  • Transform tool isn’t supported yet
  • “Select” dragger doesn’t apply IK yet – not decided how this should behave yet, but it will probably just move the whole mechanism together.
  • Studio plugin API
  • Documentation / Wiki pages

I wish we could get a “reset” state somehow that undoes all of our movements.


Undo works!

1 Like

But what if I’ve added new parts since? History could get fuzzy at that point I guess… maybe undo specifically for the dragger or something?


Could there be any reason why this doesn’t work?
I have the button enabled, constraint set, but after I move it, it completely ignores the constraint :frowning:

Edit: It rotates the parts a bit if I move it too far away, but that’s all.
Edit2: It only works on other places.

1 Like

Hey @Veldaren could you send a picture of a video of the situation or send me a place file with the mechanism that has this behavior?

If you haven’t, try it with the collisions button also enabled at the same time. Let me know if it works in that case, because that would narrow down a possible bug I’m looking at.

Sure, the place isn’t mine, but I will send you a file in few moments via PM.
I tried with Collisions enabled as well, but it didn’t solve anything.