Problems with the IK bones of the fingers

Issue #1703 resolved
zack redfiel created an issue

Hello. when i add a armature mhx by adding ik fingers in the panel and activate the ik fingers the movements and rotation looks like this. Is there any way to fix it?

Comments (32)

  1. Thomas Larsson repo owner

    Yeah, that doesn’t look good. The terms FK and IK are really a misnomer here. The FK bone is essentially what I earlier called a “winder”, except that the individual bones copy translation and scale too, and not only rotation. This is essentially how the Rigify spine is implemented. The IK bone is just the same as the winder, except that the pivot point is located at the tail of the bone.

    The best way to use this is probably to first do posing with the FK bone, then snap to IK and to minor tweaks with the IK bone.

  2. Alessandro Padovani

    In case it’s not clear, what Thomas means is that this is the intended behavior. This was originally designed for the tongue where it is useful, then extended to the fingers where it makes less sense. You can turn off IK for fingers if you don’t like it.

  3. zack redfiel reporter

    now i disable the IK fingers in and use the FK finger s to make a fist but it looks like this.

  4. Thomas Larsson repo owner

    I studied the Rigify spine a bit more, and realized that I made some mistakes. Now the MHX spine works the same as Rigify, except for tweak bones which are done differently but not really important. The same technique seems to work rather well for the neck, tongue and shaft bones (if your character has those), but for the fingers not so much. We probably need proper IK for those. I will study how the Rigify fingers and see if I can come up with something.

  5. Alessandro Padovani

    Thomas, consider that rigify has issues that we don’t wont, for example “jelly“ limbs and “forced” prebending as we can’t use improve ik with it. I mean it is certainly good to learn but for daz figures mhx is actually better. So you may not want to “copy” too much from rigify.

  6. Thomas Larsson repo owner

    I had a look at the Rigify fingers, and it turns out that finger IK is simply an IK chain with three links. MHX had that before but I never managed to get it to work properly, and it seems like the Rigify IK fingers are not easy to use either.

  7. jeroen b

    Not really IK, just a stack of damped & locked track constraints. But it will give some reasonable control of finger movement if you pose the R hand bone and use the custom properties.

  8. Thomas Larsson repo owner

    Jeroen, I had a look at your file and your setup is considerably better than mine, so I implemented it. I really like the idea to have a single master bone that controls all fingers. That is useful for the fk setup too.

  9. bouich jules

    Hi thomas, please note that the convert IK to FK function and vice-versa doesnt work for tongue/fingers.

  10. Alessandro Padovani

    I don’t use mhx myself, but unless I miss something, for the new ik chains Thomas implemented snapping but not baking. That is, probably he has to add spine fingers and tongue to the transfer tool, being this a work in progress. @Thomas Larsson let us know.

  11. bouich jules

    wow how can you not use MHX, it’s probably the best rig i ever saw in my life, it’s supported in blender and even in game engines! it’s complete and far better than rigify or anything else.

    anyway yes IK to FK for MHX bake only arms and legs unfortunately.

  12. Alessandro Padovani

    I don’t like to be dependent on a runtime when I deploy a rig. So I make my own rigs that are similar to simple ik but without snapping, as I don’t use fk to animate. Then yes, I understand I’m probably alone with this and anyone else is using “standard” rigs.

  13. Alessandro Padovani

    @Thomas I had a look at the new mhx changes. I’m not sure what you want to do with the “ik_tongue”, but to me it makes little sense that it is child of “master”, you may want to make it child of “head” instead. Also in my opinion the previous ik tongue was easier to pose. It seems to me you want to use the same rig for fingers and tongue, but they are two different things as the fingers are “rigid” while the tongue is “flexible”, so different rigs may fit better.

  14. Alessandro Padovani

    Commit 6b4cc66.

    I see the old ik tongue is back, it works fine. I understand the ik neck is removed in the last mhx, so I guess the neck panel is a leftover.

  15. Thomas Larsson repo owner

    The neck bones are still controlled by the neck-head winder bone, so snapping them makes sense. But it doesn’t need to be a separate button. In the last commit the neck bone constraints is driven by the same property as the spine, and the snap spine button snaps the neck bones too.

  16. bouich jules

    thank you thomas, please for all those new IK changes, is it possible that the transfer IK to FK function support them also?

    because now the only way is to snap IK/FK every single frame.

  17. bouich jules

    Hi thomas,

    please any update on the transfer from ik to fk for those new ik function like fingers/tongue .. ?

    Thanks!

  18. Thomas Larsson repo owner

    It turned out that the way spine ik is implemented isn’t suitable for the tongue and fingers, and it is not straightforward to switch between fk and ik with the new methods. Spine fk-ik snapping is easier, since spine ik conceptually just changing the pivot point to the tail of the control bone. There are buttons to do it on a single frame, but it should be added to the animation button.

    What can be done for all kinds of chains is snapping the individual links and clearing the control bone. This also disables the control property. This could be useful e.g. if you want to save a pose preset which can be used even if the control bones are absent. The Animation > Transfer To Links button does that for multiple frames.

  19. Thomas Larsson repo owner

    I added spine ik to the tools in the animation panel: Transfer FK=>IK, Transfere IK=>FK, and Clear Animation.

  20. Alessandro Padovani

    mhx commit 2319f29.

    Ok, so we have to transfer IK > FK for arms legs and spine, then transfer to link for fingers and tongue. The difference is that transfer to link is destructive, so to be done as a last pass and saving a backup first.

    What about transfer FK > IK for fingers and tongue ? That would be needed when we load a daz animation.

    note. ik baking simplification. May be it is possible a simplification here. I mean baking IK to FK is usually done to export the animation, otherwise there’s no reason. So it may always be “transfer to link“ for all, renaming “transfer to link“ as a destructive “transfer IK > FK“. Then it is not clear what about mute/unmute when we keep the daz rig, I understand it will not work for fingers and tongue, again this could be replaced by “transfer to link“.

    So we would have just two tools, a destructive “transfer IK > FK“, and a non-destructive “transfer FK > IK“. Eliminating the previous non-destructive “transfer IK > FK“ and “mute/unmute“, because they don’t work anyway. Unless I miss something.

  21. Thomas Larsson repo owner

    I’m not sure what to think. With the present tools we can snap everything for which snapping can be easily implemented. OTOH, it would be useful if Transfer IK > FK would transfer the animation entirely to the bones that correspond to daz bones. But in that case it wouldn’t be possible to do a IK > FK switch for all frames for the spine. But perhaps it is not necessary to be able to do that, because neither bone corresponds to a daz bone.

    One problem is poor naming. The back and ik_back bones are not ik and fk bonese, but a different kind of control bones. Maybe we should come up with better names and reserve fk and ik for the bones that actually have a real ik constraint.

  22. Log in to comment