- edited description
Importing Custom JCM/Flexions doesnt create driver
Want to take a second to thank you for the amazing work you have done on this plugin. Been using it since 2019, and the progress you have made lately is awesome!
So the issue im having is trying to import the Zevo Bend control morphs. (https://www.daz3d.com/bend-control-for-genesis-8-male-s)
When I import them as custom JCM, it says why am I trying to import flexions? So I tried using the custom flexions instead, and here it imports the morphs, but it just creates shapekeys and doesn't create any drivers.
Comments (22)
-
reporter -
Don’t know if this helps, but did you try to import flexions ?
-
reporter Yes, but that just imports the default flexions. It doesnt select the bend control ones. I have to use custom to be able to select them.
-
custom flextion bascially only work when you bend etc, so it may not generate controller, but may work when you pose bone (driven by bone)
-
I think, add on can not full support about your link prodcut..
usually zevo shape controller need many ERC to it work in daz studio, I do not think add on can full support (import all with auto set driver for each morph relation) the product.
Maybe you can import shape morph individually as custom morph,, or you can import basic flexion morphs, (which may change with bone pose) but may not auto set ERC as same as daz way. so some controler may not generated,. and even though you can import all , some morph, controller may not keep relation.
do you check log in console? it may offer which file could not import .
-
reporter Its not a compatibility issue with the morphs. The bend control JCMs worked fine in version 1.41 with 2.79, They stopped working when I switched over to 2.81 and 1.42. Figured it would come back since it was the dev version and just kept using 2.79 to import and add the bend control, then finished up in 2.81. But I have now switched to over to the latest version and noticed its still not working, hence opening this issue.
-
Yes, I agree with Steven, there are cases where the addon could create drivers, but doesn’t. The hard part, the code for reading formulas and creating Drivers, is already there, so it would make sense to fix that (at least for Steven’s case that is basically a JCM).
Related: see the last message in
#311. -
repo owner This part of the code has been quite messy. It still is, but I think that I have brought some order to it. In the last commits, there is a change to the UI: the Import Custom JCMs and Import Custom Flexions buttons are gone, and instead all kinds of custom morphs are handled by Import Custom Morphs. This button has some new options:
- Property Drivers: Drive morph with rig properties.
- Bone Drivers: Drive morph with bone rotations (JCMs).
- Double Drivers: Drive morph with both type of drivers.
Property drivers are only created if no bone driver is found, or if Double Drivers is enabled. The advantage of collecting everything into a single tool, apart from reducing the number of buttons, is that you can import all morphs in a directory, and they are automatically divided into different types.
-
Yes, I really like that change. Much cleaner, and allows for future new cases to be handled there too, without cluttering the UI with an ever increasing number of buttons.
I will test it later or tomorrow. Thanks again Thomas.
-
reporter @Thomas Larsson Wow That was fast! Thank you so much, I really Appreciate it! Just tried it out, works great, all drivers loaded properly, JCMs working nicely
I like the UI change as wellFYI, Import custom JCM button is still there
PS, where can I go to ask a few questions about the material converter? Dont want to start an “issue” for that since its just a question.
-
reporter Just noticed the drivers for the FlexBiceps are incorrect, Set to Forearm twist bone instead of forearm bend bone.
-
If double driver option work well, huge progress thanks.Then I have bunch of questions about current import morphs. I think it related with this topic, but I may make new topic, if you hope to close as solved)
what I need to know is,, when it may not work. .Some vendor offer master controller for their morph package, which can adjust each morph effect .
master controller are usually just multiple with other morphs value so user can adjust how it work. it may be offered as ON and OFF all controller (boolean) type, or sometimes vendor offer each JCM multipler with jcm name. to adjust effect as advance option.
and Xin case,, (characterJCM which made to work only for sepcific character morph like PBMVictoria7 . there are many type morph which work only with character morph.)
Then I hope to know these sepcific case.
1_ jcmCustom1.dsf (bone move this shape key) = it already work. then usually this morphs are hidden. so we need not controller.
2_ F(P)BMXXX.dsf (partially OK though edit bone not auto adjust to shape, then may not use often. and if user already include this morph value, I suppose plug in not keep current FBM or PBM value. (so when we import this morph, , even though we already use FBMXXX as 0.3 for character, it will be shown as 0 )
3_ pjcmXXXCustom1.dsf ( this morph are multipled with F(P)BMXXX.dsf . and JCMcustom 1 value. It is supposed to adjust jcmCustom1.dsf effect, only for the character(XXX) . Then it change effect with the F(P)BMXXX value. )
4_ mutliple controller of vendor JCMs or Flextions . There are 2 cases, it only change one JCM effect. or it change multiple JCMs effect at same time (like group master controller)
I mainly hope Thomas confitm about 3 and 4. they will be imported correctly, with current options?
about 3 ,I think when user import type 3 character JCMs, it may not show right effect with many case.
because usually we mix Aiko7 or Victoria7 etc. so if user mix Aiko7 as 0.3. the Aiko7 character JCM need to be multipled as 0.3 , but add on can not find the value when we import I think.
So I may request, if there is way user can control it when import. (eg,, when import character specific JCMs,, offer mutliple controller,,, which can only change same character JCMs . like group.
then we can manually input correct value. for them. actually I have not imported those character jcms, but as read your document, and current progress,, if we import those character jcm often,, it may need. (or it not work as user expect)
-
repo owner Steven, the biceps bug should be gone. Well, not really. The code currently only allows shapekeys to be driven by a single bone, because all jcms behave like that. The biceps morph is driven by both the bend and twist bones, however, and the second bone was chosen. Now it is only driven by the bend bone. This is not correct, but the influence of the twist bone is not so easy to see.
-
repo owner engetudouiti, the plugin loads JCMs driven by bones (actually only by a single bone, but that should change), and other morphs driven by properties.
If you want to mix JCMs for Aiko and Victoria you need to import both and use the Mix Shapekeys tool. Both JCMs are imported at full strength. There used to be a strength parameter that multiplied the shapekeys, but I never used it and removed it at some point. It might be an idea to bring it back. The plugin doesn’t keep track of the character mix, but if you import Aiko JCMs at strength 0.3 and Victoria JCMs at strength 0.7 you should get the right mix, provided that the shapekey names don’t clash.
-
reporter Just grabbed the latest build with the bicep fix, this build is giving an error on the custom morph import.
ython: Traceback (most recent call last):
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\error.py", line 247, in execute
self.run(context)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\morphing.py", line 949, in run
props = self.getAllMorphs(namepaths, context)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\morphing.py", line 702, in getAllMorphs
missing = self.getPass(passidx, list(namepaths.items()), props, scn)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\morphing.py", line 731, in getPass
props1,miss = self.getSingleMorph(name, path, scn)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\morphing.py", line 600, in getSingleMorph
isBoneDriven = self.buildShapeFormula(asset, scn, self.rig, self.mesh)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\formula.py", line 384, in buildShapeFormula
ok = self.buildSingleShapeFormula(expr["value"], rig, ob, skey, verbose)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\formula.py", line 408, in buildSingleShapeFormula
makeSomeBoneDriver(expr, skey, "value", rig, ob, bname, -1)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Diffeomorphic-import_daz-adf7f7afb8f2\formula.py", line 424, in makeSomeBoneDriver
uvec = convertDualVector(vec/D, pb, False)
TypeError: unsupported operand type(s) for /: 'list' and 'float'location: <unknown location>:-1
-
@Thomas
Yes about character JCM mixing it is what I means. I usually mix Aiko, or Victoria with another G3character .. so mostly single character JCM is matter. or maybe choose most used Character value JCM. (if I really add those JCM to improve bend posing more) ,
after all to work correctly we must need to multiple the character PBM value for all “same character JCMs”. but not need muilitple about “base JCMs” or not multiple different character JCMs
and I think if a few user may miss understand, but we need not import Vicitoria7 PBM to import Victoria7 jcms for this add on improted character. (of cousre you can do it ,if you hope to add some V7 taste,, later,,)
but it is already baked. when we make and exprot from daz,. so we only need to keep victoria 7 PBM value in text. file, which used for the character, then need to multiple the value for all Victoria7 related JCM which we import by add on.
., but not multiple with other shape key, and base JCMs
So I may request or hope to find good way, without manually serch the character JCM shape keys after import, but can group character jcms (which may need multiple) and separate another JCMs (which need not mutliple or need different multiple values) add on will offer as advance option. (but do not know clear how we can do it )
about base JCM we need not any multipler, but as I said, it may not bad if you offer simple all jcm mutlipler too… (so user can check the defomation cuased by JCM or not,, if we hope to remove JCM effect may set as 0. then if JCM happend to work bad for some posing,, we may hope to ease it,, with multipler like 0.5 (though it is simply multiple all base character JCM like genesis3 JCMs)
About these things are basically user need manual work with planning clear,, so I hope some good way or ease our work. as future request.. (of course the importance is quite law I understand)
-
repo owner Steven, the crash should be gone. Strange that it did not happen to me.
engetudouiti, mixing character-specific jcms is for the advanced user only. Such a user can keep track of the character mix in DS, and then import the jcms with the appropriate weights. Or import several types of jcms at full strength and mix them together in Blender. The plugin cannot guess everything that a user wants to do, and better to provide the basic tools only.
-
@Thomas
I agree. I just hoped to know current limitation. In doc you wrote about full Aiko and Aiko JCMs. so I worry if some of user may import those character JCMs, without care mixing value. (or believe plug in auto adjust it , when it need)
-
reporter Thomas, I am now getting this error with the latest build.
Traceback (most recent call last):
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\error.py", line 247, in execute
self.run(context)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\morphing.py", line 949, in run
props = self.getAllMorphs(namepaths, context)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\morphing.py", line 702, in getAllMorphs
missing = self.getPass(passidx, list(namepaths.items()), props, scn)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\morphing.py", line 731, in getPass
props1,miss = self.getSingleMorph(name, path, scn)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\morphing.py", line 600, in getSingleMorph
isBoneDriven = self.buildShapeFormula(asset, scn, self.rig, self.mesh)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\formula.py", line 382, in buildShapeFormula
ok = self.buildSingleShapeFormula(expr["value"], rig, ob, skey, verbose)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\formula.py", line 406, in buildSingleShapeFormula
makeSomeBoneDriver(expr, skey, "value", rig, ob, bname, -1)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\formula.py", line 422, in makeSomeBoneDriver
uvec = convertDualVector(vec, pb, False)
File "C:\Users\Steven\AppData\Roaming\Blender Foundation\Blender\2.83\scripts\addons\Diffeomorphic-import_daz-03a9cf8494e4\formula.py", line 465, in convertDualVector
nvec[i] = uvec.dot(Vector(euler))
AttributeError: 'list' object has no attribute 'dot'location: <unknown location>:-1
-
repo owner Steven, now I was able to reproduce the bug. It should be gone now. With the last commit, I have imported all standard jcms, flexions, and the bend control morphs. Nothing crashed and the results look reasonable.
-
reporter Just tested it, working great! Thank you so much for all of your hard work!
-
reporter - changed status to resolved
- Log in to comment