[Update] July 6, 2023
Hi Developers!
We’re excited to announce the release of the IKControl Joint Constraint Beta. This new feature will let you use certain Constraints, which normally restrict the movement of physically simulated parts, to now also specify how IKControls can move joints. Using Constraints you can now:
- Make elbows and knees only bend about a specific hinge axis, without needing to specify a Pole
- Use limits to avoid impossible joint angles
- Make a robotic arm!
Below are some visual examples, in all of these the Pole property is not being used
To enable the beta in Studio go to File > Beta Features and enable IKControl Joint Constraint Support.
With the beta enabled you can add limits for IKControl using the existing physics Constraints. For this initial release, only the BallSocketConstraint and HingeConstraint are supported. To use them, add a Constraint between the two Parts in your IKControl’s chain that matches the existing Motor6D between those parts. Specifically, the Positions of the Constraint Attachment0 and Attachment1 attachments must match the positions of the corresponding Motor6D C0/C1 CFrames. The attachments do not have to have the same rotation (in fact you may want them to have different rotations to get joint limits oriented correctly). The Constraint must also be a descendant of the same Model as the IKControl.
To summarize, IKControl will use Constraints for which
- The Constraint’s Attachment0/Attachment1 are attached to the same parts as the Motor6D Part0/Part1
- The relative positions of Attachment0/Attachment1 are equal to the corresponding positions of the Motor6D C0/C1 CFrames.
- The Constraint is a descendant of the same Model as the IKControl
R15 characters already have attachments matching their Motor6D C0/C1 CFrames which you can use for this. These attachments may not be oriented the way you want for a given constraint - for example, on Rthro characters the RightElbowRigAttachment Axis is not perpendicular to the elbow. In that case, we recommend adding a nested attachment underneath the default rig attachment, which you can then orient however you need.
We will be updating the Inverse Kinematics Guide with additional details on how to use constraints to control IK movement.
Known issues and limitations:
- Currently only BallSocketConstraint and HingeConstraint are supported. We plan to add support for additional constraint types soon.
- Currently does not support BoneInstances, only Motor6Ds
We are releasing this as a beta because this may slightly change the behavior of existing IKControls.
We want to hear from you!
Please share feedback, questions, or any issues you find with how this behaves. We will make sure to take these into account before fully releasing this feature.
Thank you!