Enabling the Avatar Joint Upgrade appears to interfere with IKControl on characters using IK-driven limbs.
With Avatar Joint Upgrade disabled, the IK behaves normally and the arm is able to follow the target smoothly.
With Avatar Joint Upgrade enabled, the exact same IK setup becomes visibly constrained. The arm does not fully follow the target and the shoulder/elbow can end up in awkward or restricted poses.
From testing, this appears to be related to the upgraded avatar joints using generated BallSocketConstraint s with joint limits enabled.
Reproduction
- Create a character using
IKControlfor an arm. - Configure the IK so the hand follows a moving target.
- Test the character with Avatar Joint Upgrade disabled .
- Observe that the arm follows the IK target normally.
- Enable Avatar Joint Upgrade .
- Test the exact same IK setup again.
Expected behavior
Avatar Joint Upgrade should not cause an existing IKControl setup to become significantly more restricted or produce visibly incorrect poses. The IK-controlled limb should be able to reach approximately the same intended poses, unless the developer has explicitly configured joint constraints that are meant to limit the IK.
Actual behavior
With Avatar Joint Upgrade enabled, the arm becomes noticeably more restricted.
In the attached comparison videos:
-
Avatar Joint Upgrade disabled: the IK arm follows the target correctly and has a natural range of motion.
-
Avatar Joint Upgrade enabled: the arm appears to fight against the upgraded joint restrictions. The shoulder/elbow cannot rotate as freely, causing the arm to stop short or bend into an incorrect pose.
Suspected cause
The issue seems related to the BallSocketConstraint generated or used by Avatar Joint Upgrade.
In particular, properties such as:
- LimitsEnabled
- TwistLimitsEnabled
- UpperAngle
- TwistLowerAngle
- TwistUpperAngle
can restrict the rotations that IKControl is attempting to produce.This creates a situation where the IK solver is trying to move the limb toward its target, while the upgraded joint limits prevent the limb from reaching the requested orientation. Disabling Avatar Joint Upgrade removes the issue in my test.
Workaround
As a workaround, I disabled the generated BallSocketConstraint limits (LimitsEnabled / TwistLimitsEnabled) on the affected joints, which resolved the issue. However, I’d appreciate any suggestions on a better or more intended way to handle this with Avatar Joint Upgrade
Important note
I understand that BallSocketConstraint limits affecting IKControl can be intentional behavior, since constraints can be used to restrict an IK chain.
The issue I am reporting is specifically that Avatar Joint Upgrade automatically introduces/uses these constrained joints and causes an existing IK setup to behave very differently without any changes being made to the IK itself .
So the problem is not necessarily that IKControl respects BallSocket limits. The problem is that enabling Avatar Joint Upgrade can automatically introduce limits that make previously working IK poses become restricted or incorrect.
In my comparison, the IK setup is unchanged. The only meaningful difference is whether Avatar Joint Upgrade is enabled.