Inverse Kinematics Control Instance for animation is now in Beta!

Anything that has either a Humanoid/AnimationController + Animator will scan for IKControls and solve them. That includes also models or skinned meshes/Bones.
The references in the IKControl (EndEffector/Target/…) currently support BasePart, Attachment, Motor6D, and Bone, but it could support anything with a CFrame so if you have suggestions let me know!

4 Likes

Can you provide more info on your setup (the hierarchy of parts and how motors are setup between them) and show the results? To which part is the Transform attachment parented?

We now have a guide linked in the post above that should walk you through a simple example without using code :slightly_smiling_face:

Are you planning to add server replication to IKControls when they are moved locally?

It looks like in this example the dog’s head is not pointing in the forward direction (-Z). That is the direction that is aimed at the target when using Type LookAt, just like CFrame does. You can either fix that or wait for next week when we’ll release a property that allows you to specify which axis should be considered as pointing “forward”.

Yes it does, Bones in skinned meshes are currently supported.

I cannot speak to that, but we do plan on releasing certain features such as foot planting or looking at interesting objects for devs to simply enable in their experiences.

1 Like

Can you show a bit more info on your setup? Do you have Motor6Ds, and if yes how are they set up?

Did you follow the same steps as in the guide, just using Foot/UpperLeg instead? Does it work for you if you disable your torso rotation?

1 Like

Starting from the root part, it goes on like this:

HumanoidRootPart>Torso>LeftUpperArm>LeftMiddleArm>LeftLowerArm>LeftPalm>LeftClaw

LeftClaw is where the Target attachment is stored. The representation above is how Motor6Ds are connected. Here’s a Highlighted screenshot:


I can provide a place file if you need it.

2 Likes

We will share the script that does it soon. But the main idea is to raycast a ray from the hip through the foot and check for intersections. If the intersection happens above the foot (so the foot is clipping through the ground), we adjust the Target of the IKControl to that point and normal. You need to take into consideration the offset to have the bottom of the foot align with the ground. We do this every frame in RunService.Stepped, because that happens after the animation step but before the IK solver step (and physics).

3 Likes

We are still working on which behavior should be available for all avatars, but we do plan on providing some behavior such as foot planting and looking at interesting objects as something that developers can toggle on/off.

1 Like

If the target attachment is parented to the claw, the IKControl will never be able to reach it since when you rotate the arm, the target will move with it. Try putting the target attachment on something not linked to the arm, such as the RootPart or Torso and let me know if that fixes it :slight_smile:

That doesn’t work, since the claw still goes far away from the model and not even the arm moves:

This is great, glad we have this today.

Since the question was ignored for 2 times already, for the 3rd time’s the charm.

Are you planning to add replication from client to server by default?

2 Likes

@sg3cko The issue with the Weight property is, headlook does not work properly if the player has animations running (which they always do). If I use a weight of 0.8 for example, the head does not focus on the gem as it should due tot he animation partly overriding it. Instead, dampening has to be done through a different method (making the IK target an invisible part, and lerping that part to the cframe of the actual object that should be focused on). While this is doable, it’s a bit tedious.

Sorry, checking with the team what our plans are exactly regarding this. At the moment we replicate all of the properties of the IKControl instance like other Instances, and run the IK solver locally on each client. So by moving a target, you’ll get the same (or very similar) results without a lot of data like individual joints being sent over the network. Let me get back to you with more details about future plans :slightly_smiling_face:

5 Likes

okay, send the me place file and I can have a look, thanks

1 Like

Thanks! I will say it’s very difficult to position Motor6Ds. They don’t have their C0 or C1 exposed, so it makes manually creating rigs that can use IKControls very difficult without using a plugin. It’s challenging to make non-player IK enabled objects without being able to easily use these. If we could attach them to attachments or bones, that would be handy.
At any rate, a guide explaining how to use IK models would be nice.

2 Likes