I've been working on an anatomically accurate armature system for some time and I'm about 90% of the way there mechanically speaking, but now I've encountered a rather strange phenomenon whilst trying to render a sample animation. I had noticed this happening while I was making the armature, but I assumed it was lag, and wouldn't show up in a rendered animation, but observe below:
I tried to make this a gif but it kept spitting out at 4.6mb for some reason, so here's a link to three seconds of .webm to demonstrate my problem. Weird fingers
I have seen this question, but I have a hard time accepting that the only solution is to add more bones to the fingers. And I'm not even sure how I would do so to achieve the same results in that case.
One thing I tried to do was keyframe the IK target and pole bones in line with the rest of the animation, but that changed nothing. The affected bones seem to be the actual finger bones, just after the knuckles.
If I move the hand guide bone to somewhere, the fingers won't update until I select another bone, then they catch up and go where they're supposed to. Is there a way to force an update like that every frame?
Update:
I read some more and I began to suspect that the IK may be part of my problem, so I tried 2 things. First I tried disabling the IK entirely, and that seemed to solve it, though of course then I'd have to control the fingers some other way (eyeroll). Then I tried setting the IK to include the bone before the knuckle area, which also solved the lag issue, but then of course that bone moves entirely too much to be realistic, and when I try to constrain it, it looks even worse.
So obviously neither of those are ideal, but if I have to do without the IK, I could make some overcomplicated driver stack to perform the same functions, like freaking rigify, eugh.
Update #2
I have done some more experimentation and discovered that I had a dependency cycle with a Maintain Volume constraint on the main finger bone. Now, I can't tell why that's creating a dependency cycle, but if I disable the driver, the fingers don't lag anymore. But then of course, the squish I made that driver to combat comes back, and I really don't have any other way to fix that.
I really wish Blender's armature and Driver system could do more than elementary school math.
Anyway, knowing that's what was doing that doesn't really solve the problem, because now I need a way to drive that constraint that won't create a dependency cycle.