IKControls jittering at varying FPS

Howdy,

I’ve been utilizing IKControls in my experience for upper body movement. When using IK, I have discovered that on the client, the solved position and orientation can vary wildly from that of the server’s, and is very much dependent on FPS (frames per second.) I have tried many different IK configurations, but there doesn’t seem to be a way to quell the jittering and it can be quite invasive during gameplay.

I’ve done multiple tests with IKControls, and I’ve found that on the client at 60FPS rendering cap, when looking up and down, hands, arms and shoulders do not follow the path of the weapon, using UserInputService for camera movement which is then converted to IK position and orientation. (see video 1) (Left is Server POV, Right is Client POV)

I’ve also gone ahead and tested completely scripted movement, simulating a player moving their cursor using math.sin() and math.cos() and I was able to replicate similar behavior above. As well, when tabbing out of the game, Inverse Kinematics follows the weapon path perfectly, but when tabbed back in (higher FPS cap) Inverse Kinematics stops tracking well and continues to jitter like the behavior I showed above. As well, IK behavior when running keyframed animations can vary wildly.

(Video 2: Tabbing out of the game causes IK Controls to solve correctly, also caps framerate lower)

The setup I have been testing with has IK Controls controlling left/right arm movement as well as UpperTorso & Head movement. I’ve included a Roblox place file with my current avatar setup and script to simulate player camera input!

IKControls are an extremely promising feature, but with the current state of IKControls I don’t think I will be able to utilize it for production work until these issues have been rectified.

System Specs: AMD Ryzen 7 9700X, 32gb, NVIDIA GeForce RTX 4060 Ti

Expected behavior

Ideally, IKControls should solve similarly on both the client and the server, and shouldn’t jitter as heavily.

A private message is associated with this bug report

3 Likes

Hi, thank you for the report, we’ll investigate the issue. It seems related to some lag. Just to double check, is the .SmoothTime property on IKs set to 0?
The message mentions a placefile, could you share that with me? A dm is also fine. Thanks

2 Likes

Correct! The SmoothTime property located in each IKControl is set to 0. As well, I experimented with the priority property, but to no avail. I’ll shoot you a DM with place file.

1 Like

I have the same issue, and yes, SmoothTime is also on 0 on my end. It is as if the IKs do lag a frame or two behind.

In my case, the jittering happens the most when the character moves (physics) or when animations play. I don’t know the internal working of the IK system, but it feels at times as if the IKs are either solving one frame behind, or at an incorrect time, as if they solve before animations and physics are computed, so you have IK updating, then animations and physics are computed, then the frame is rendered, when the IK should update after animations and physics, before the frame renders.

Again, that’s just a guess because of how it feels. I don’t know the how the IKs work internally. I’ve tried to make them update in Stepped, without physics or animation movement, and the jitter doesn’t happen for me.
Granted, it may be not be noticeable in my case because the gun is directly welded to the arm, and both arms are targeting an attachment, otherwise they’ll be constantly separating.

Exactly! The jitter in IKControls become much more apparent when using keyframed animations. Any movement animation causes IKControls to really lose their target and begin to solve incorrectly ± a few studs, and seems to be completely dependent on FPS. This video I took in June highlights the problem pretty well. (60FPS bad targetting, 240FPS fair targetting)