Slider limits in Custom Morphs

Issue #387 closed
garden created an issue

I wrote about it here, but I never understood the answer.

I could just change the limits in Shape Keys.
But what to do with morphs that control other morphs, it seems that blender does not know how to control one Shape Key through another (if you know how to do this, please tell me)

Comments (9)

  1. Thomas Larsson repo owner

    The plugin implements morphs as rig properties (sliders) that drive shapekeys or bone rotations. Morphs that drive other morphs could have been implemented as rig properties that drive properties that drive bones, but this leads to intractable update problems. Or at least it did in previous versions of Blender, not sure if the recoding of the depsgraph in B2.80 changed that.

    Instead, the plugin avoids this problem by duplicating the bone drivers. In DS, EyeBlink drives EyeBlinkL and EyeBlinkR, which in turn drive the eyelid bones. In Blender, the left eyelid bones are driven by both EyeBlinkL and EyeBlink directly. This is what the recursion message is about; in order to construct the EyeBlink driver, the EyeBlinkL file is opened, which in turn may open other files. If some files are corrupt, or more likely there is a bug in my code, this could lead to an infinite loop.

    To complicate things, for some morphs the dependence is specified in the driven morph’s file. E.g. the file CheeksBalloon-SuckIn doesn’t contain any interesting info. Instead, the file for CheeksBalloon-SuckInL specifies that it is driven by CheeksBalloon-SuckIn, and the file CheeksBalloonL both specifies how it drives the face bones and that the morph is itself driven by CheeksBalloon-SuckInL. In order to pick up such dependencies, the plugin goes over the morphs in several passes.

  2. engetudouiti

    basically all fin prop should have same limit with daz parameter limit.

    then keep raw limit as free. (so even though user set too huge or small value,,after all circulated fin value are limitted)

    at same time, I feel shape keys limit need to have same limit as fin value.

    eg even though it is not expected , we set morph value as -1.0 >> shape key as -1.00

    actually we have set such minus value to morph reverse way with daz studio.

    Then if add on not set same limit, (eg -1 to 1) for shape keys. which should be driven the morph (fin) value,, after all we can not get reverse deform what we do for daz studio.

    My thinking way (and it may be correct, and basically work for all case) is when morph dsf , min = -a max = b

    1_ Set same min and max limit for morph(fin) min = -a. max = b.

    2_ if there is shape key which is driven by morph(fin) (shape key value = morph(fin) value) we need to set same limit for the shape key value

    so shapekey (morph name) value min = -a max = b

    it is not matter for me, how default option are offered.. but to use morph limit as same as daz, we should have option which add on set shape key limit as same as fin value limit.

  3. engetudouiti

    The real problem case is,,, now one morph(fin) value we hope to set -0.5 . then actually morph(fin) value = -0.5. (the limit range is min -1 to 1)

    but if the morph shape key limit keep default min0 and max 1.. actually the minus morph value not work at all.

    So if add on default set shape key value as 0 to 1 range.. There should be case, it cause issue.

    The more user free use morph value, the more the shape key limit make annoying user.

    because everytime user manually need to change shape key range too. (even though fin prop range are correctly set)

    There may be 2 way

    A Not set limit for shape key when add on generate. it work because all morph may have fin prop when the shape key driven by add on generate property.so after all shape key limit should be auto set by the morph(fin) min and max. (morph shape key value = morph(fin) value)

    B add on auto set shape key (min and max) = morph(fin) min and max.

    About B may be better as UI,, but when user hope to change limit temporally, they need to change limit for fin prop and shape key prop. (or we can not see the deform what we need) so both ahve pro and con. but at least both way can show deform which we set for the morph(fin)

  4. Thomas Larsson repo owner

    At least the Update Slider Limits tool should work now. It was not updated for the new morph system, so only changed limits of raw rig properties, but not of final armature props. It now also has an option for changing limits of all shapekeys, not only those with the same name as rig props, because the prop and shapekey names are no longer the same. E.g. eCTRLAfraid changes the eJCMAfraid_HD_div2 shapekey.

    Shapekey limits should also be set when the morphs are loaded, but that doesn’t seem to happen.

  5. engetudouiti

    Thanks you take time. you enhance more than what I requested. I only consider simple (not driven by other props) shape key morph import…

  6. engetudouiti

    Thomas, I now thinking what you mentioned, about “the prop and shapekey names are no longer the same. E.g. eCTRLAfraid changes the eJCMAfraid_HD_div2 shapekey.”

    when add on generate eJCMAfraid_HD_div2 shapekey there should be eJCMAfraid_HD_div2(fin) as custom prop.

    I suppose. (you made it so)

    then in ds you should find the eJCMAfraid_HD_div2 property (it maybe hidden, but actually there is the prop as hidden slider) then the property have min and max most of case.

    basically we only need to use the daz property eJCMAfraid_HD_div2 min and max for the blender eJCMAfraid_HD_div2fin prop as same as daz.

    So I do not know it need to relate with eCTRLAfraid (which drive those eJCM) min and max.

    if there is morph which happend to drive the eCTRLAfraid , (user made or vendro offer),, after all, now it should have raw and fin props. (and new res when it need)

    Actually I do not think I use Update slider limit (because slider is raw props which user set and it not include any driven values) but I must use update limit for the Fin prop and shape key min and max. it is key issue I think. I may test again later,, if new commit actually solve my issue or not. (if it not related with my closed issue, I may re-open it)

  7. engetudouiti

    I could confirm, at least when I set Fin as Daz by global option, now it set same min and max for the shape keys too. Thanks. (I only test most simple PHM)

    About advance option, (update and set same limits (min and max) for raw sliders, fin sliders, and shape keys) I do not know user can use it as they expect.

  8. Log in to comment