G8F NeckHead bend controller not working

Issue #137 resolved
jeroen b created an issue

Hi,

After importing every body morph (pose control) for basic G8F character into Blender, I notice that the neckhead bend controller does not work (all others are OK) This happens both in stable version 1.4.2 & latest Dev version.

In Blender nothing unusual as far as I can see, the only thing that I can find is in DAZ , the parameters for neckheadbend control show; “keyed” instead of “delta add”

Thanks for taking a look at it.

Comments (7)

  1. engetudouiti

    I actually concerned this issue. Though I am not G8 user, then did not test it.. I hope Thomas may confirm at current add on can not manage key type ERC . Though I can mimic it with manually edit driver F-curve as average, then directly input key as same as daz (but daz use TCB, so I do not have perfect way to reproduce same animation curve for driver F-curve..

    eg about this case, the controller bend 3 bone at same time. as TCB curve, animation. (and I do not know how daz set TCB curve, just there discribe, frame and key, and type (TCB)

    animation frame = ctrl value as X , (animation frame) key value = each bone roation. f(X)

    when pctrNeckHeadBend(x) = - 1 neck lower bone bend rotation (f(x)) = - 27 (degree) [f(-1) = -27]

    pctr = 0, neck lower bone bend rotation = 0 [f(0)=0]

    pctr = 0.8, neck lower bone bend rotation = 35 [f(0.8) = 35]

    then the ctrl do same thing for neck upper, and head.. (of course frame value, and key value is different about each bone, but about this controller only set 3 keys for each bone. between -1 to 1 frame ( min -1 and max 1 as the controller value limit)

    So what we actually need is set driver for those 3 bone bend rotation in blender,, then set F-curve for driver (which mimic the TCB curve). with set pctrNeckHeadBend value as driver target. I suppose all those key , frame, value are discribed in dsf.. so we can set key but how mimic TCB curve in blender is difficult ehough for me.. (it can change as Linea ,TCB, constant, for each sub-component (driven value animation) curve. at least in DAZ property editor, I can not find option which can change cruve type for each key. so one animation curve seems use only one animation type, about this case, all bone rotation are driven by TCB curve. (without describe any tension or exponent value, so I suppose daz only use fix value for tension and vias (TCB parameter)

  2. Thomas Larsson repo owner

    Actually, the plugin does support TCB spline drivers, but only for shapekeys. I don’t have an example at hand, because it is quite rare, but the driver expression involves ifs and elses. Splines are not supported for bone drivers, though. I’m not sure it is worth the effort to try to fix it, but I will have a look.

    Looking back at similar bug reports, I noticed that in issue #6 engetudouiti pointed out that neck JCMs should be driven by both the upper and lower neck bones. That bug has been fixed now.

  3. engetudouiti

    Yes I may not request it, because I seldom import body pose controller, then I do not know another case this type ERC is used for pose controller. But I clear remember there was case which used Key type (ERC) to drive multi morphs (shape key), though do not remember clear if it was TCB or not. And I remember you solved it . (so at that time I expected, if add on already manage all key type ERC as driver already)

    The merit of Key type (TBC) is it can adjust effect along with animation curve, (so not linear) and can set multiple keys and target values in the controller range min to max, Then I remember some product morph offer this type ERC, and can show multi character shape by one controller. (it seems use “constant “ not TBC, I suppose)

    When I found key type offered for ERC option,, I supposed it will be used for JCM (it may work better change value along with curve) , but do not know what product use it etc.

    Unfortunately DSON doc not offer detail about this type ERC formula. so I can only guess how daz discribed with compare dsf and property hieralchy pane. but to reald from dsf, seems not so complex.

    The OP request is not product morph, (neck head bend controller) , it is daz offer default pose controller for G8. So you can check it when you need. I do not know way to generate TCB curve as driver expression. (at least I need to get daz default TCB setting values I suppose)

    btw Thanks, you return option for transfer morphs.

  4. Thomas Larsson repo owner

    This has sort of been fixed by cheating. Instead of using the full spline, I replace it with a linear curve that passes through the origin and the last point on the spline. This works reasonably for the head bend morph; the bones rotate correctly when the head bends forward, but a little bit too far when it bends back. Much better than nothing, anyway.

    This kind of cheat could in principle lead to problems for other morphs, but head bend is the only standard morph that uses splines

  5. engetudouiti

    Thanks Thomas it seems reasonable aploach for me. I just remember key type ERC, then hoped you confirm how it could be imported. I might plan to make custom key ERC controller, which may animate 2 other morphs, (with key TCB type ERC) in daz, and import. but might not hope to take more time this issue. untill I really need it. then if you use linea, I suppose there seems some function which can convert it smooth, like log or power, but I do not know how decide to use one of them. (and as I said in dsf there is no TCB setting which may used to adjust curve after the key frame. just suppose basically thoes key will be connected as smooth curve ^^;)

    maybe DAZ use default TCB setting for ERC morphs, Tension, Continuity, Bias, but I had not touched it in daz timeline long time. (I did not notice,daz up-dated time line for daz studio, which seems show animation curve without use graph mate ^^;)

  6. Log in to comment