Applying new poses to joints (other than rootPose) doesn't work?

I modified the HandsProcessor.cs code that’s attached to the HandsVisualizer in the XR Rig in XRI 2.5.4 with the hope of applying smoothing to individual joints in the hand data using joint.SetPose(jointPose). Looks like the joint data is not updated, however. I can see in the original smoothing use-case that the root pose is smoothed, but when I even apply conspicuous poses like (Vector3.zero, Quaternion.identity) to any individiual joint, such as the proximal index, it behaves as though nothing has changed at all.

Curious if anyone else has encountered this or has some better way of filtering joint data…

I may do a repro project for the issue but wanted to get some initial feedback first in case I’m just missing something.

Sounds like you’re not setting the joint back in the array on the XRHand - XRHandJoint is a struct, so changes you apply to it without changing it in the array on the hand is just altering a copy. You need to call GetRawJointArray on the XRHand and copy the altered joint in (for example, xrHand.GetRawJointArray()[joint.id] = alteredJoint; ). [edited end because of emoji auto-formatting]

Hm, I tried that but it says “Cannot modify the return value of ‘XRHandProcessingUtility.GetRawJointArray(XRHand)’ because it is not a variable.”

Guess I’m too used to C++. Try storing it in a variable and then changing it, like:
var jointArray = xrHand.GetRawJointArray();
jointArray[joint.id.ToIndex()] = alteredJoint;