MHX property Left/RIght Forearms Follow hand not work for IK hand

Issue #1047 resolved
engetudouiti created an issue

Thomas I do not clear remember all optiions, but I suppose we could make MHK which can IK <> FK snap

perfectly (though we need to set some options correctly, eg No rotation limit and not follow hand for twist bone, to get perfect snap)

But today I check pose with snap IK <> FK now it show twist bones rotate slightly.. which option I set..

I think I forgot some important option when convert MHX.

Convert MHX auto set those? or I need to set option untill convert as MHX?

(eg,, Connect IK chains etc)

Comments (7)

  1. engetudouiti reporter

    Yes I feel, with recent version, Left / RIght Arms follow hand option, not work. because even though I disable it for perfect snap, when I twist ik hand along with local Y, forarms bond twist >> it should cause snap issue

  2. engetudouiti reporter

    The problem is, with FK, if I switch (Arms follow hand)

    forearms L / R bone constrain for hand FK, copy rotation toggle.

    (disable/enable)

    but with IK, constrain for hand IK, copy rotation not toggle.

    so always it try to copy rotation with influence as 1.00

  3. engetudouiti reporter

    I could confirm, if I disable IK bone constrain (copy rotation)

    for both arms, I can still twist Forearms and hand separatelly with IK, but snap FK<>IK perfect fit (non deform)

    you may just need to set the bone constrain as un-visible with IK, as same as FK. (FK auto toggle , so forearmas not follow hand rotation when disable)

    without it you should see, twist bone rotate when FK<>IK snap, even though you disable forearms follow hands.

  4. engetudouiti reporter

    I can not confirm other setting clear, but in fkik.py 810 >>

    def setForearmFollow(amt, context, prop, suffix):
        rig = getMhxRig(amt, context)
        follows = getattr(amt, prop)
        pb = rig.pose.bones["forearm"+suffix]
        for cns in pb.constraints:
            if (cns.type == 'COPY_ROTATION' and
                cns.subtarget == "hand.fk"+suffix):
                cns.mute = not follows
                break
    
        # add IK mute Start
        for cns in pb.constraints:
            if (cns.type == 'COPY_ROTATION' and
                cns.subtarget == "hand0.ik"+suffix):
                cns.mute = not follows
                break
         # add IK mute End
    

    Then you can toggle (mute) Forearm not follow IK hand constrain for copy rotation.

  5. Log in to comment