I seem to have managed to set up a humanoid character in a way that consistently changes the C0 and C1 properties of all the Motor6D joints on the character. This affects the animations and makes the game look terribly buggy:
(That is the Idle animation)
Repro place with the bugged rig: BugRepro_Joints.rbxl (181.7 KB)
The only script I have there is the Animate script copied to a server script to demonstrate how the bug affects animations.
It seems to be changing the C0/C1’s orientation in 180 degree increments, and often, but not always, for both properties.
I think the only changes I made to it from a typical avatar were adding the AlignOrientation and IKControls.
I’ve tried fixing it with scripts, but various interactions will cause the bug to occur again.
Expected behavior
I would expect the C0/C1 properties on the Motor6Ds to remain unchanged when I run the game:
Hey, thanks for the report. I opened the file expecting to see
a rig that’s correct at edit time
the rig enters the bugged state when I press play
I was hoping to capture the moment this rig became bugged, but it looks like it might already be bugged in the file you sent. Do you see this in the file too? If so, we probably need a file with the rig in its correct state so we can watch the moment it becomes bugged.
for k,v:Motor6D in workspace.Bugged_Rig:GetDescendants() do
if not v:IsA("Motor6D") then continue end
v.C0 = CFrame.new(v.C0.Position);
v.C1 = CFrame.new(v.C1.Position);
end
It seems the bug triggers whenever the Bugged_Rig is copied, loaded, or created.
Chiming in to report this is still happening. Another trigger for the bug is attaching and breaking constraints connected to the character.
An example that’s breaking a live game is Primal Hunt, if you want to see the glitch on your avatar. I actually tried using the fix in the above post for when the character spawned, and it worked back then, so the causes of the bug are increasing.
In the game I’m currently working on, I’m having to constantly reset the C0/C1 orientations just to be safe, but it’s still somewhat visible there since the server can’t afford to do that for every character every frame.
By the way, that repro place was saved with the rig fixed, so you don’t even need to press play to break it.
I’ve managed to solve the issue by changing how I set up constraints for ragdolls, using the setup given with the avatar joint upgrade beta.
The bug appears to be caused by changing the orientation of the avatar’s ‘rig’ attachments (like NeckRigAttachment). It seems the Motor6Ds are getting the C0/C1 from those attachments over their own data.
If this isn’t a bug, it needs some indication since it isn’t intuitive.