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