So I’ve finally got back to animating and returned to this virtual bone problem. It would appear that whatever the issue was with the hand virtual bones was resolved in a patch since I no longer observed any problems with those bones (they behaved as expected). The feet were still not updating their positions. After tinkering around with virtual bones, I found out that a virtual bone created from the root to the foot would behave as expected. However my set up requires a virtual bone root, so a virtual bone made from the root that targets the root (VB Curves). It would appear that this bone (and possibly the VB ik_foot_root as well, that also targets the root) is responsible for preventing the updating of its children. I really don’t know how this information is handled under the hood, so this is as far as I’ve gotten with finding out what the issue is.
However there does appear to be a simple work around. Simply exporting the animation as a FBX file and reimport it will cause all virtual bones in the animation to update and behave normally. I’m guessing the animation obtained from the retargeting process isn’t saving quite right. So the steps to fix the virtual bone problem are:
- Open the animation
- Export Asset dropdown button → animation data (you don’t need the preview mesh)
- Save the animation anywhere you like
- Click the reimport animation button
- Select the animation you just saved
- The animation should update with all virtual bones fixed *
*I did occasionally get a error when reimporting, something along the lines of improper alembic file. I’m not sure why this happens but all you have to do is open the animation you tried to reimport and reimport again, it always worked on the second try.
*Also beware step interpolation animations, you may have to change the interpolation to linear, then export and reimport, then change interpolation back to step.
It was a bit tedious but it seemed to do the trick, I closed and reopened the editor and everything was still working just fine. I think it’s ultimately a bug but hopefully this workaround helps people in the meantime.