Still remain fail to generate scale constrain, (only drv bone scale)
When I import G3, and import basic morphs only, I often see add on set driver for a few facial lip drv bones.
At current I find 2 lip bones usually set Z scale(blender bone axis) driver.
LipLowerMiddle(drv) and LipUpperMiddle(drv)
I do not know which morph drive it clear, then I check some lip bones in daz studio,
Then actually these 2 lip bone daz Y scale was driven by visemes
LipLowerMiddel was driven by eCtrlLvW = (W)
LipUpperMiddel was driven by eCtrlLvF = (F)
as my simple test, generated driver seems scale drv bone for blender axis, correctly.
But even though drv bone driven and change scale, without you set Scale Constrain for deform bone, it never deform.
I think you currently set Scale as False not to generate scale driver constrain. But at least about facial bone, and some body bone can easy attach scale constrain without complex chain scale, or connected/not problem.
I may recommend these things, to work facial scale bone controller
1_ set drv bone scale driver as same as before. when import basic morphs
2_ current add on seems failed to generate driver when Daz use general scale as key (not describe each bone axis , but use General scale) as key. (see issue #1117), iimporter seems try to set driver for first axis only. but general scale is most simple one, so it need to generate driver correctly for al scale axis. (no need to convert axis ^^; it should be more easy)
(seems general scale problem already solved thanks ^^)
3_ you may make bone list then when add scale constrain, if it not break rig , you add constrain. (if you think, all scale morph should work for all pose bone, simply generate scale constrain, as same as rotation/ translate, but I afraid some bone will cause issue, when user try to import complex control, which change each chain bone scale.. (so this is option.. if some bone not work well, I may report , so you can remove constrain, only about these bone)
4. you may better to change current “Make bones posable” function, at current all scene which saved before, simply can not add new constrain type. if other constrain already used for the deform bone. (then there seems no meaning to finalize mesh I feel,,without user remove some custom morphs >> but when user tyr it, UI easy break,,,so maybe you not recommend it..
===============================
about lip scale constrain it seems work now. (but it may depend how we install morphs with many options) see my last reply.
then sometimes add on may generate all constrain, but sometimes, miss, when user try to import new morph. which use transfomr bone. The main problem is, “Make all bones posable” function.
Comments (14)
-
reporter -
reporter - edited description
-
reporter It now partially solve issue. but it remain case which not work.
I think new version add Copy scale for facial lip bone when I import thanks. (it seems depend which option I use to install morphs, Then I notice, there remain case which not generate scale constraint) .
I test with easy import (it may try to import all facial bone basic morphs)
I test with import as standard morphs (it also try to import all facial bone basic morphs at same time)
About these case, add on seems generate scale constrain for both lips as same as other const.
but then now I add new custom controller, which try to change scale for other bone.
eg at current Pectoral bone only have Transform and rotation constrain.
Then I import general scale pectoral morph (cotroller). now add on can generate drv for al axis scale.
(thanks!), but it not generate scale constraints for pectoral bone.
Then now I use Finish> make all bones posable but it not generate scale constrain for pectoral.
That means same thing will happen for many facial bone. some bone may have 3 constrain. but some not have scale constrain. then when I import new vendor morph which try to scale them, it not work.
So I keep open this topic.
untill you can offer “Make all bones posable” should generate constrain which currently used for drv,
at same time if it can remove un-necessary one, it is best. (my script not do it at current = not finalize, but must add constrain which currently used for drv) Then we no need to use “Finalize armature”
====
then my purpose was simply add some scale, rot, loc controller for merged gen bone. my G3 gen is really simple structure, it only have 2 merged bone, then I may need to control without import many shape morphs,but for these issue, add on miss generate constrain often. (maybe it only work when I import morph which use all constrain first,,) if I add new one later, add on often miss generate constrain. and there is no way without user manually add it.. but new morph system driver is complex = it is not easy to add driver forumula , so I hope, simply import as custom morph >> generate drv, and constrain correctly.
(though to it work, I must need to make daz controller morph first, I think it is usual to work with current add on morph system )
-
reporter - edited description
- changed title to Still remain fail to generate scale constrain, (only drv bone scale)
-
repo owner Make All Bones Posable now creates a copy scale constraint too. I thought I could get away with skipping that, but apparently not.
-
reporter Thanks I am already made test Scale morph for head and pectoral so if it work correctly , I can happy close this issue^^
As you said I do not hope to add un-necessary constrain, if we can.. but at current I can not confirm actually hand-made or added vendor morphed worked correctly or not. so up-date function is most important.
-
reporter No it still not work unfortunatelly,, or you think make all bones posable only work when I generate rig from scratch?
I clear see, drv are made when import scale control morphs. correctly added. (general scale oK) but no scale constrain generated..
I checked make all bones posable when I import these morphs, + after import, I click “make all bones posable”
I confirm currently used version and source with git up-date, then I can see I use recent version. (I de-activate and activate add on to confirm up-date) So you may need to check how your “make all bones posable” work ..
As for me I can correct it with my script, but if others try to use it, >. finalize armature >> convert rig >> it may remain some un-suable controller,
and there is no way easy correct it. at same time finalize armature make things more difficult when user notice problem and try to correct it, I suppose.
-
reporter - attached update_drv_const.py
check source please..
-
reporter I now try to read your script, then check Make all bones posable class, function,
but I do not know why it miss up-date.. I see you actually try to check each drv types…
But how I use “make all bones posable”, it never add new constrain, when I import morph which need to add new constrain.. and FInish >> make all bones posable.
you may check this output log?
Rig Genesis 3 Female already has extra driven bones Rename bones Change constraints Restore bone drivers Restore sum drivers Update scripted drivers Update drivers Update vertex groups Update shapekeys Make All Bones Posable completed in 2.3 seconds Rig Genesis 3 Female already has extra driven bones Rename bones Change constraints Restore bone drivers Restore sum drivers Update scripted drivers Update drivers Update vertex groups Update shapekeys Make All Bones Posable completed in 2.3 seconds
My import 2 facial bone morphs were, one try to use facial bone scale, another try to use rotation for facial bones.
to make it work, I must need to add new constrain, for some facial bones. (which have no constrain for the transform)
-
reporter I may hope you modify your out-put log, when I use make all bones posable (import option / finish option)
to show each constrain for each bone. (temporally to solve this issue)
I suppose if it failed, or even though add on notice, it, it simply miss generate constrain I suppose.. it seems only check which type drv used,, (loc , rot, scale) but do nothing for deform bone… I suppose you do almost same thing more smart way (so I really know only about basic python)
about this scene,, my scirpt catch these (I run my script after use “make all bones posable” compledted)
as you can see, there are many constrain, which actually need to generate.. (@ start)
Make All Bones Posable completed in 2.3 seconds lHeel(drv) lHeel rotation rHeel(drv) rHeel rotation lowerJaw(drv) lowerJaw location lowerJaw(drv) lowerJaw rotation rBrowInner(drv) rBrowInner location rBrowInner(drv) rBrowInner rotation rBrowMid(drv) rBrowMid location rBrowOuter(drv) rBrowOuter location lBrowInner(drv) lBrowInner location lBrowInner(drv) lBrowInner rotation lBrowMid(drv) lBrowMid location lBrowOuter(drv) lBrowOuter location CenterBrow(drv) CenterBrow location CenterBrow(drv) CenterBrow rotation @Add CenterBrow add rot constrain MidNoseBridge(drv) MidNoseBridge location MidNoseBridge(drv) MidNoseBridge rotation lEyelidInner(drv) lEyelidInner location lEyelidInner(drv) lEyelidInner rotation lEyelidUpperInner(drv) lEyelidUpperInner location lEyelidUpperInner(drv) lEyelidUpperInner rotation lEyelidUpper(drv) lEyelidUpper location lEyelidUpper(drv) lEyelidUpper rotation lEyelidUpperOuter(drv) lEyelidUpperOuter location lEyelidUpperOuter(drv) lEyelidUpperOuter rotation lEyelidOuter(drv) lEyelidOuter location lEyelidOuter(drv) lEyelidOuter rotation lEyelidLowerOuter(drv) lEyelidLowerOuter location lEyelidLowerOuter(drv) lEyelidLowerOuter rotation lEyelidLower(drv) lEyelidLower location lEyelidLower(drv) lEyelidLower rotation lEyelidLowerInner(drv) lEyelidLowerInner location lEyelidLowerInner(drv) lEyelidLowerInner rotation rEyelidInner(drv) rEyelidInner location rEyelidInner(drv) rEyelidInner rotation rEyelidUpperInner(drv) rEyelidUpperInner location rEyelidUpperInner(drv) rEyelidUpperInner rotation rEyelidUpper(drv) rEyelidUpper location rEyelidUpper(drv) rEyelidUpper rotation rEyelidUpperOuter(drv) rEyelidUpperOuter location rEyelidUpperOuter(drv) rEyelidUpperOuter rotation rEyelidOuter(drv) rEyelidOuter location rEyelidOuter(drv) rEyelidOuter rotation rEyelidLowerOuter(drv) rEyelidLowerOuter location rEyelidLowerOuter(drv) rEyelidLowerOuter rotation rEyelidLower(drv) rEyelidLower location rEyelidLower(drv) rEyelidLower rotation rEyelidLowerInner(drv) rEyelidLowerInner location rEyelidLowerInner(drv) rEyelidLowerInner rotation lSquintInner(drv) lSquintInner location lSquintOuter(drv) lSquintOuter location rSquintInner(drv) rSquintInner location rSquintOuter(drv) rSquintOuter location lCheekUpper(drv) lCheekUpper location rCheekUpper(drv) rCheekUpper location Nose(drv) Nose location Nose(drv) Nose rotation Nose(drv) Nose scale @Add Nose add scale constrain lNostril(drv) lNostril location lNostril(drv) lNostril rotation rNostril(drv) rNostril location rNostril(drv) rNostril rotation lLipBelowNose(drv) lLipBelowNose location lLipBelowNose(drv) lLipBelowNose rotation rLipBelowNose(drv) rLipBelowNose location rLipBelowNose(drv) rLipBelowNose rotation lLipUpperOuter(drv) lLipUpperOuter location lLipUpperOuter(drv) lLipUpperOuter rotation lLipUpperInner(drv) lLipUpperInner location lLipUpperInner(drv) lLipUpperInner rotation LipUpperMiddle(drv) LipUpperMiddle location LipUpperMiddle(drv) LipUpperMiddle rotation LipUpperMiddle(drv) LipUpperMiddle scale rLipUpperInner(drv) rLipUpperInner location rLipUpperInner(drv) rLipUpperInner rotation rLipUpperOuter(drv) rLipUpperOuter location rLipUpperOuter(drv) rLipUpperOuter rotation lLipNasolabialCrease(drv) lLipNasolabialCrease location rLipNasolabialCrease(drv) rLipNasolabialCrease location lNasolabialUpper(drv) lNasolabialUpper location rNasolabialUpper(drv) rNasolabialUpper location lNasolabialMiddle(drv) lNasolabialMiddle location rNasolabialMiddle(drv) rNasolabialMiddle location lEye(drv) lEye rotation rEye(drv) rEye rotation lNasolabialLower(drv) lNasolabialLower location lNasolabialLower(drv) lNasolabialLower rotation rNasolabialLower(drv) rNasolabialLower location rNasolabialLower(drv) rNasolabialLower rotation lNasolabialMouthCorner(drv) lNasolabialMouthCorner location lNasolabialMouthCorner(drv) lNasolabialMouthCorner rotation @Add lNasolabialMouthCorner add rot constrain rNasolabialMouthCorner(drv) rNasolabialMouthCorner location rNasolabialMouthCorner(drv) rNasolabialMouthCorner rotation @Add rNasolabialMouthCorner add rot constrain lLipCorner(drv) lLipCorner location lLipCorner(drv) lLipCorner rotation lLipLowerOuter(drv) lLipLowerOuter location lLipLowerOuter(drv) lLipLowerOuter rotation lLipLowerInner(drv) lLipLowerInner location lLipLowerInner(drv) lLipLowerInner rotation LipLowerMiddle(drv) LipLowerMiddle location LipLowerMiddle(drv) LipLowerMiddle rotation LipLowerMiddle(drv) LipLowerMiddle scale rLipLowerInner(drv) rLipLowerInner location rLipLowerInner(drv) rLipLowerInner rotation rLipLowerOuter(drv) rLipLowerOuter location rLipLowerOuter(drv) rLipLowerOuter rotation rLipCorner(drv) rLipCorner location rLipCorner(drv) rLipCorner rotation LipBelow(drv) LipBelow location LipBelow(drv) LipBelow rotation Chin(drv) Chin location Chin(drv) Chin rotation lCheekLower(drv) lCheekLower location lCheekLower(drv) lCheekLower rotation @Add lCheekLower add rot constrain lCheekLower(drv) lCheekLower scale @Add lCheekLower add scale constrain rCheekLower(drv) rCheekLower location rCheekLower(drv) rCheekLower rotation @Add rCheekLower add rot constrain rCheekLower(drv) rCheekLower scale @Add rCheekLower add scale constrain BelowJaw(drv) BelowJaw location BelowJaw(drv) BelowJaw rotation @Add BelowJaw add rot constrain lJawClench(drv) lJawClench location lJawClench(drv) lJawClench scale @Add lJawClench add scale constrain rJawClench(drv) rJawClench location rJawClench(drv) rJawClench scale @Add rJawClench add scale constrain lPectoral(drv) lPectoral rotation rPectoral(drv) rPectoral rotation
-
repo owner All copy constraints are created the first time the bone is made posable. So if you made the bone posable with the previous version that missed the scale constraints, those are not generated, no.
I don’t want to mess too much with the code that works.If it is important to you I could make a tool that removes the drv bones, so you could regenerate them from scratch.
-
reporter Thomas almost all G3 figure scene, which user had made with make all bones posable with other version may keep to lost lip scale modify, even though it is used by basic morphs Vismes. and you had set driver for drv bone.
Then pectoral bone auto added Rotation constrain, because it is used by sholder move.. then when you import transform pose controll, it only generate drv, and they never worked.
So about those scene, your “Make all bones posable” can correct those when user first use it?
or you think no, they need to re-generate ? (I just ask how it work, if you confirm I understand, your tool how work. or I really do not know how I can use “all bones posable” correctly.
-
reporter mmm,,, Ok I may close it, because at least I have script for g3,, so without I miss something it work for me,
but I really think you may better to make (and rename) function to up-date constrain (or resume for up-date)
because you have offered Make all bones posable always. and it not means, Up-date (resume) constrain. it is for set driver, and drv bone + make constrain (sometimes it have failed)
I think you needed to add it as different function. eg “Update Constrain” (so it only used to re-sume constrain, when some constrain broken or miss, then if it not work, you can correct it without touch “make all bones posable”
-
reporter - changed status to closed
- Log in to comment
Then I already set constrain with script,, so some scene lip have scale constrain .but some not. (but I do not remember, which scene I run script clear )
But import new g3 scene >> import basic morphs with all bones posable option, current add on not add scale constraints for these lip bones (but drv bone only scale Z axis)
you may think it is small effect, but actually not, it add thick for lip clear with W. (scale along with Z axis)
if it work correctly.
= it is real correction. (then user can check what is going on, and which constrain was added clear)
Then If we do not have scale constrain >>just use add on offer, Make all bones posable >> Finalize armature
it simply freeze and remove un-necessary one (if it was generated), without necessary constrain. then not forgive user to add new constrain with your add on any-more. so I think it is simply un-useful. then recommend just change your up-date function more reliable one first.