IK Constraint Dragger should not rotate unconstrained meshparts and unions

Currently, the inverse kinematics dragger in Studio will mysteriously rotate MeshParts and Unions if moved with the Move Tool handles, even if they have no constraints. This should probably not happen.

The setting to enable IK dragging is a very small button in the top bar that is easy to enable accidentally, or forget to disable. Developers with this setting enabled are confused when this happens and have reported this as a bug in the past. There have been a couple of threads regarding this issue, and dozens of posts about this in both the new member and member Discord servers.

Since this only seems to occur for MeshParts and Unions, this seems like unintentional behavior and should probably be changed. Parts should not be mysteriously rotating.

I was told this might be a feature request but it feels like a bug report to me.


I feel like this is just something they didn’t thought was necessary to fix/implement into the IK Dragger when they were making it.
It’s just another tool that should be used only to test constraint systems, and not anywhere else, so they made it that way, not caring about what it does to unconstrained objects.
It’s not a big issue IMO. If you want to test constraints, turn it on. If not, turn it off because it will otherwise disturb you - just like Collisions button restrains your freedom to move things.

But IK Dragger and Collisions button aren’t the same.
First has only two consequences - either allows for surface collision when moving/resizing/rotating or it doesn’t.
The second has four consequences. It simulates constraints’ behavior or it doesn’t. It locks any anchored objects in their place, which also confuses inexperienced developers, but it’s absolutely necessary for the simulation to work. And then there’s the last consequence of rotating unconstrained objects.

While I do believe it’s not necessary for this to be fixed due to natural consequences of using a tool when you shouldn’t, I think it wouldn’t hurt to get rid of it. Just to make it easier for those who like to have certain functions/tools enabled, without disturbing their workflow too much.

1 Like

Models & Folders have the same behavior, on a lower scale. (They don’t rotate that much that fast.)

1 Like

Does this still happen if you raise the MeshPart/Union above the ground?

IK Dragger processes friction, and the way friction interacts with complicated shapes like CSGs and Unions is… complicated.

EDIT: It’s a trap, I necroed the thread.

1 Like

Thread is still alive, its ok.

Yes it does.
If I move a MeshPart in a big circle above the baseplate it will do flips and eventually stabilize if I keep wiggling it on one axis. The amount the part ends up rotating is sensitive to initial rotation and likely some kind of internal state related to the constraint dragger. More intricate meshes also seem(?) to rotate more than simpler “aerodynamic” meshes. The part will eventually stabilize if you keep moving it along the same axis whether or not you’re holding the tool handles uninterrupted.

Very interesting. We’ll have to take a look. Now that its clear that it isn’t friction, I wonder if the “drag” is happening off center of mass, and when you drag something away from its center of mass, you may apply a torque.

If you keep dragging it in one direction, and it eventually stops rotating when dragging in that specific direction, it might be the COFM issue I am describing.

We can ping @ContextLost, since he implemented IK dragger!

The thing about Unions and Mesh Parts is that their center of mass is not at the center of the bounding box, like it is for Spheres, Blocks and other symmetric objects.

1 Like

It definitely looks like center of mass actually.
The heavy end of the below mesh always drags behind the direction the part is moving, and if you wiggle it on one axis, the part will always settle into a balanced position such that there’s no direction for the heavy end to want to move.