Is there way to change min and max of slider but keep min and max of final value as global setting?

Issue #404 resolved
engetudouiti created an issue

It is not matter where fin value will be shown or hidden. without it, final value range will be limit by raw value limit too.That means, now I have one shape key morph A. then morph A is driven by morph B and morph C by most simple delta add.

morph B and morph C set min = -1 to 1. so now set min -1 for morph B and morph C.

morph A value = morph A raw + morph B(-1) + morph C(-1)

morph A value = morph A raw - 2

at same time the morph A value have min and max value. -1 to 1. Those limit is important to adjust driven morph effect.

you may expect, morph A value change -1 to 1 range, but to work it , About this case we need to input morph A raw = 3. then morph A final value can get max = 1.

But if morph A slider set min and max as -1 to 1.. the morph A value stop as -1 . (when we mix use morph B and morph C).

So ideally, we may only use min and max limit for the final value, but remove min and max limit from raw slider value. I think Blender may not offer such option, then I suppose at least we need global setting min and max which only change about taw slider min and max, but keep fin value as same as daz setting.

(maybe I may change row prop min and max as -10 to 10 etc, to cover full range of the final value (min and max). unfortunately we can not decide which min and max work for the raw value, to cover range of fin value, (it depend by driver expression,) so aproximately set wide range than final value.

If the min and max setting not work for blender morph fin value, (the range change by raw min and max), I suppose it may easy cause issue to see same final effect. because all daz morph (with driver) not expect, we set range for raw value. only consider final value limit.

Comments (20)

  1. engetudouiti reporter

    I think the commit which set min and max for Fin value cause problem too.

    I test with G3 morphs, now many face unit only work as plus. (only one side)

    eg Tongue side-side, Tongue up-down, Mouth side-side etc.

    This is not problem of the raw silder min and max, but it caused by the fin value min and max. these are auto set, as min = 0, max as 1 (it should not be)

    My current global setting is

    active “Daz Property limit,” with set property min and max as -10 and 10

    so actually raw slider now try to input -3 etc, but fin value limit set as >=0 , so those morph only work as one side morph.

    No I check , low and fin slider of those one side move props (raw and Fin), but both propa set as min = 0, max=1, then my global setting (-10 , 10) seems simply ignored.

    The interesting thing is, eye-side to side still work as same as before (min -1 to max 1). but mouth and tongue side-to side not work so. (do not know what cause difference though)

  2. Thomas Larsson repo owner

    The idea is that you should turn off DAZ Property Limits, because otherwise the limits are taken from the daz file. But it won’t work with the new morph system yet. And the interface should be changed, since the minima and maxima sliders are ignored with DAZ Property Limits are enabled.

  3. engetudouiti reporter

    Can you make it,, use daz property limit (take from file prop setting), then use it only for Fin props?

    As I described, there is no actual limit about row prop value. Then we need not to set limit for raw slider (all user change prop value should be raw value) , because when fin value out of limit, it stop . (though you can still change raw value, or move slider, but fin value is only matter, to deform mesh)

    Then to know when fin value reach min and max, we need to check fin value. (so user may understand, even though change slider value(raw), it may not effect fin value any-more now fin value reach min or max.

    if we apply limit for law slider value, fin value range change. some case, user may show as if fin value is almost locked perfectly. (it auto add new unnecessary limit for final value = can not deform as it need any-more, when other property mix used.

  4. Thomas Larsson repo owner

    In the last commit, the raw sliders are unlimited, only the final values are limited. I now understand that that corresponds to what happens in DS. An aesthetical problem is that it is easy to push the raw sliders very far outside the reasonable domain. It doesn’t affect the final values and hence not the morphs, though.

  5. engetudouiti reporter

    Thanks . And as you said, I feel, no limit slider is difficult to tweak value , and user may easy set no meaning value. I suppose.. But to keep fin value range, we need to set raw slider as no limit..

    If many user say no limit slider is really difficult to use,, you may add option, (no limit or set by user), then user can choose it . About fin value, I believe, we must need limit ,,. I remember some jcm may only work correctly with limit . (for JCM the range is important )

  6. engetudouiti reporter
    • changed status to open

    It still not work. That means, I can not use different limit setting for raw slider prop and fin prop value.

    I suppose,, even though script not set min and max,, custom prop seems auto set default value. then I suppose there is no way ,to set un-limit for custom prop like transform property. (do not know reason though)

    in bpy doc, the default min and max seems. 3.402823e+38. so I suppose if your global setting auto-overwrite raw slider limit without intention. (which option combination I used, I can not make it work. as I need)

    As I said, we need to set daz min and mix for fin value. (driven property as final value) then we need to set min and max more large range (it depend user) or no limit. I can not find to set min and max for raw. (eg I may set as min -10 then max 10 for raw slider props, then fin value keep min -1 to 1 for many case.)

    If actually there is way generate custom prop without limit, I welcom (i hope to use or test it), but if it auto set- default value for min and max, we need to customize raw limit by our-self. at least, same limit as Fin value never work.

    The problem is if I uncheck daz limit, (then use -10 =min 10 = max) the prop are auto applied for the final value too.

    if I check daz limit, it auto set as -1 to 1 for all props at current.

    To confirm this issue is solved. I need to set different min and max for raw. but fin min and max use daz property min and max with only use global setting. Thomas check it please. it seem caused, global setting overwrite the default min and max of float prop (when you not set min and max, in script) I suspect so.

    eg blender transform value is no limit, usually. we need to get same type prop (slider) for raw slider. (do not know we can generate such slider or not,,but I feel default min and max is almost no limit from bpy doc)

    =====

    Then if I manually set min and max for each custom prop (if script can not do it), I can use soft-limit, but the problem is, wit soft limit ,, I need to input value directly when the value over the limit. (not change value as slider, slider simply stop with the limit) then actually it is not useful.. because,, we may input value with move slider. for raw value. (then it is not useful for this purpose at all)

    I suppose only way is, in global setting, change way.

    check daz property limit on = use daz morph dsf describe limit for fin props min and max only.

    then you may add new option,, custom min and max (for raw slider only) or script use default (no-limit) for raw slider.

    If I miss understand, simply tell me, your recommend global setting, it work as I described.

    (fin value use dsf limit, raw slider no limit) please..

  7. engetudouiti reporter

    OK now I confirm it work.. (so at current with daz property limit, fin use dsf file limit, and raw have no limit thanks )

    if un-check daz property limit, custom min and max is used for both (raw and fin)

    For me it is ok. (though I do not know, if there will be user request, to set individually for raw and fin. Thanks.

    (If I miss up-date then it cause issue, I am sorry ^^; when I test it not worked. (I might miss use different blender version,,, )

  8. Thomas Larsson repo owner
    • changed status to open

    I open this because I think you make good points, as always. Now it works like this:

    The raw sliders are limited by the Slider Min/Max settings.

    The final sliders use Daz values, unless Daz Slider Limits is disabled. In that case the final sliders use the same limits as the raw sliders.

  9. Thomas Larsson repo owner

    A related problem: If you click on a final slider, you can edit the driving expression. I typed a number by mistake and then the driver stopped working. Do you know how to grey out a property, so it cannot be edited by mistake? For operators we can add a poll function, but how to achieve that for properties.

  10. engetudouiti reporter

    Thomas thanks, then Can I reauest one more option ^^;

    Because, now so user must need to set limit for min and max about slider.. (it basically OK, if you set min and max like -10 to 10, but it simply depend by antoher morph count which may drive the morph. and if you consider multiple ERC, it may change drastic. I hope to keep this option 1.

    1. use non limit for law min and max, use limit for final value min and max.. (most reliable, there will be no issue, but not easy to use slider )
    2. ‌ use custom limit for law min and max, use daz limit for final value min and max (it depedn your custom limit seeting for raw.. sometimes fin value limist still effect)
    3. use same custom limit for law and fin,, (It simply try to get wide range for both,, but after all,, real lmit of fin wil change,, (not work as user expected limit for fin value)

    At current you offer 2 and 3.. user can not use 1. Then actually 3 is not useful as you think…

    Because if user hope to set wide range for fin (value) than daz,, , we can not use same limit for raw and fin…. you can do same test with

    morph B and morph C set min = -10 to 10. so now set min -10 for morph B and morph C.

    morph A value = morph A raw + morph B(-10) + morph C(-10)

    morph A value = morph A raw - 20

    if you get morph A value = 0 you need to input morph A raw as 20 (but same setting not forgive user to set so,, you can only input 10 as max of raw)

    Then my request is,, please keep option 1… then if you add option 3,,, you may need to offer option, which can set separate min and max (not use daz dsf min and max) as user like. so user may try to set more wide range,, like (-100 to 100) for raw, then set (-10 to 10) for fin.

  11. engetudouiti reporter

    Yes,, I saw same diver input problem ^^; I froget to report it,, I actually plan to ask the way.. to avoid it.

    I suppose if there is option, of bpy UI layput prop, un-editable value? I may need to check how you apply the UI fin value .prop (you use UI label? or UI prop?)

  12. engetudouiti reporter

    Unfortunately if you use UIlayout.prop and set path for the custom prop,, I feel there is no way.. to avoid the issue.

    I can do same thing in blender property panell > custom props,, I can input value >> it break driver expression. Then I can not find any option to avoid it.

    I know it is not good idea,, (it may make code more dirty), but if you need to avoid the issue, we may need to use UIlayout.label

    label(text=''text_ctxt=''translate=Trueicon='NONE'icon_value=0)

    Item. Displays text and/or icon in the layout

    Parameters

    • text (string, (optional)) – Override automatic text of the item
    • text_ctxt (string, (optional)) – Override automatic translation context of the given text

    so the text is string, then user can not edit it, just show the value (float) as text,.

    then you may need to set the prop(fin) .value as “text” arguments when generate each raw slider . I can confirm, if I use labell, the text is not editable. I afraid if it cause up-date problem, but with my simple test (add new custom prop then driven by object transform, and show the value as UI label, it seems work for me.

    but you may need to convert prop value as fix digit, then set the prop path for text variable.

    txt = act.name
    trans ="{:.2f}".format(act["AAA_test"])
    row.label(text = "Active Object: " + txt)
    row.label(text = str(trans))
    

  13. engetudouiti reporter

    Then return my request,, I only need to keep the option 1. I now understand your new offered options (use same custom liimt for raw and fin) still useful.

    so keep them as same as before.

    We may do not know how fin value will be limit (change min and max), untill import all morphs and check driver, so basically use wide range for raw, and set same range for final sitll have meaning. so you do not need to add new option, but return option 1 please (if you can^^; for a while I could use the option 1 . (no limit for slider, but limit fin range by daz dsf limit == most reliable for me,,

  14. Thomas Larsson repo owner

    Now two options control slider limits:

    • Daz Limits: Final prop use daz limits or custom limits.
    • Raw Limits: Raw props use custom limits or no limits

    The custom limits are the values below in the global settings window. Also, final morph values are displayed as labels.

  15. Log in to comment