easy mode ?

Issue #396 resolved
Alessandro Padovani created an issue

The plugin has evolved into a very powerful tool. Thus some complexity is unavoidable. But, there is often request in the daz forum for some simplification, since daz artists are more used to premade content just ready to use.

So, what about an option to load figures just ready with the main features ? The steps below may be done automatically by the plugin when we check the "easy mode" flag on import, so to get a ready to go figure.

steps

  1. merge armatures
  2. delete unnecessary base meshes for HD figures and make a single HD collection
  3. if there are geografts import the geograft morphs (only pose, not actor) and merge geografts
  4. import jcms
  5. transfer jcms to the outfit
  6. import face expressions and units
  7. if there's sbh hair then convert to particles
  8. convert rig to mhx

I don't know how much of this is easy to do, or doable at all. But this is the idea. Then it is important for this to be an option, to allow more experienced users to better customize the figure with manual steps as it is now.

Comments (36)

  1. Luke Graybill

    I think this is a great idea, and I’d like to go a step further, in addition to an overall “easy import” that does most things for you, having an “easy mode” button for each major step of the process could be a nice middle ground when “easy import” is too broad strokes but also just need to get the standard morphs set up and a fast shortcut for that would be handy.

    On a related note, it would also be nice to have a bit more clarity in the UI about which steps have already been done, and which steps are meant to be done next. It’s easy sometimes to walk away for a moment while waiting for morphs to load (for example) and then come back later and forget what exactly was being done when I got up.

  2. Thomas Larsson repo owner

    Such a tool is implemented in the last commit. There are options that lets the user decide which steps to include. HD meshes and hair are not considered yet, but will be later. There is also some new issue with the JCMs, which means that they cannot be transferred atm.

    I changed the default option for drivers back to the old custom drivers, because loading the sum drivers became painfully slow.

  3. Alessandro Padovani reporter

    That was so fast .. I was expecting for this to take a long time to be implemented .. Ok that’s just great going to check it ..

  4. Alessandro Padovani reporter

    Thomas this is just insane !

    We can now import a working figure with just a few clicks. May be we could replace the old import dialog with this new one, where the old import is done anyway if we don’t select any option.

    I can confirm jcms don’t work .. below is the bended elbow after import.

  5. Alessandro Padovani reporter

    update. As for commit de96e31 the issue above isn’t fixed. This is not related to the easy importer though, even if I convert to mhx by hand the jcms are lost. This is the same for rigify. The daz rig works fine.

    steps

    1. import G8F
    2. import jcms
    3. convert to mhx

    Below a comparison among daz, mhx and rigify.

    Then tested with 1.5.1 that works fine.

  6. Thomas Larsson repo owner

    This particular problem should be gone now. The tool renames bones, and used to replace bone names in shapekey drivers. However, with the new morph system, the shapekeys are driven by rig properties, which are in turn driven by bone transforms. So now the tool replaces bone names in drivers for rig properties instead.

    This seems to work well for rigify, but for mhx is causes nasty dependency cycles. You can see that when you bend the mhx forearm. First the arm looks really weird, but if you click on the armature again it pops into place, and the values of the shapekeys are right.

    Dependency cycles have been a problem for mhx since the introduction of the new morph system, but before the problems only showed up as warnings in the terminal window but were not visible. It is not clear to me why they happen.

  7. Alessandro Padovani reporter

    Unfortunately I can’t help with rigs. I do simple rigs myself that also work quite fine for animation, but nothing complex. I fear if there isn’t a solution we may go back to the old rig because this way it’s honestly unusable. I hope Xin and Engetudouiti can help better.

    Below it’s commit 4ea2651.

  8. Thomas Larsson repo owner

    If you click on any bone again, without dragging it, the mesh should snap into place. I think that the problem is that I use rig properties as intermediate values. Some of these properties are unnecessary, e.g. a rig property is constructed to drive shapekeys, when the shapekey value could be used itself. Getting rid of such extra properties should improve the situation.

  9. Thomas Larsson repo owner

    Well, I got rid of the extra layer of indirection, and things indeed work much better. There are still some warnings about loops, which involves the track-to constraint to the gaze bone, but that is more manageable.

  10. Alessandro Padovani reporter

    Thomas you got it, commit cf9a7f5 seems to work fine for the mhx rig. But the rigify properties are missing.

    edit. Sorry it’s my fault I didn’t enter pose mode, it’s late .. rigify works fine too.

  11. Thomas Larsson repo owner

    Hm. I have never noticed those properties before, and if I rigify a standard metarig it does not appear. What is it good for?

  12. engetudouiti

    I think, if you may better add prop for armature data, not object, when pose bone drive custom prop? Of course when bone transform only change shape key no problem. as your new commit, use shape key value as fin value.

    Why I think so, at least, if I add custom prop for armature data, then it driven by pose bone rotation, visual value up-date correctly. but if I make custom prop for object, then simply drive the prop for pose bone rotation, at least about recent 2.92 I see this issue.

    https://developer.blender.org/T86562

    if we use widgt it usually up-date correctly, but if I direct input pose bone rotation value, the prop not up-date as visual in UI.

    Actually if I set shape key which driven by object.prop, and Armature.data.prop, there is no difference. (shape key is driven by, both custom props value when I pose bone)

    pose bone>> custom prop (armature data/object) >> shape key value.

    ,But I think it seems relate reason why MHX rig may show problem, when you set layered prop for Armature object.

    bone pose data is more related with armature data. Then I just suspect when we need to make custom prop which controlled by pose bone, the custom prop may better to add for Armature.data not for Object .

  13. engetudouiti

    btw this is not relate with this topic, so I thought to make new issue, but at current it is just my guess. But I sometimes think there is case to add custom prop not Armature object, but Armature data (pose) make it work better, when it relate with pose. If it need to use driver deep layer.

  14. Alessandro Padovani reporter

    daz 4.15, blender 2.92, commit c20afc1

    It seems “merge lashes” doesn’t work fine. That is, if there’s hair then it merges the hair instead of the eyelashes. Also if I don’t select “merge rigs” first, then “merge lashes” does nothing. That may make sense, but if so may be “merge rigs” should disable and enable the dependent checkboxes. Test scene included g8f-basic.duf, that may be good to also test other options later.

  15. engetudouiti

    With recent commit, I got this error , it seems conflict with current user global setting? then could not generate any morphs. with easy mode.?

    RuntimeError: Error: Python: Traceback (most recent call last):
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\error.py", line 246, in execute
        self.run(context)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\morphing.py", line 875, in run
        self.getAllMorphs(self.namepaths, context)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\morphing.py", line 643, in getAllMorphs
        self.loadAllMorphs(list(namepaths.items()))
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\load_morph.py", line 47, in loadAllMorphs
        self.makeAllMorphs(namepaths)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\load_morph.py", line 74, in makeAllMorphs
        char = self.makeSingleMorph(name, path)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\load_morph.py", line 93, in makeSingleMorph
        self.makeFormulas(asset, sname)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\load_morph.py", line 137, in makeFormulas
        self.addNewProp(asset.getName(), asset, sname)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\load_morph.py", line 181, in addNewProp
        self.addToMorphSet(raw, asset, False)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\morphing.py", line 909, in addToMorphSet
        addToMorphSet(self.rig, morphset, prop, asset, hidden=hidden)
      File "C:\Users\TAKE\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons\import_daz\morphing.py", line 178, in addToMorphSet
        pg = getattr(ob, "Daz"+morphset)
    AttributeError: 'Object' object has no attribute 'DazStandard'
    
    location: C:\myprograms\blender-2.92.0-windows64\2.92\scripts\modules\bpy\ops.py:132
    

    I tried to change some global setting, but still do not know which option may cause issue.

    My current easy mode import setting is like this

    I really worry about “Body” check option of easy import mode, (do not know what means body morph,,, and can I activate all bones posable with this stage too?

    Before, we must need to use “all bones posable” after import all pose controller . at current, we use easy mode, then still import new pose controller (eg new vendor product) , then can use all bones posable again?

    (actually I hoped to test it how work about morphs , but at current, I fail as 1st stage ^^; this error sto p to import morphs, so can not check any morph with easy mode option)

  16. engetudouiti

    I could get narrow this problem. add on complain only when I activate morph option.

    I test, with only check merge-rigs and Extra facial bone >> load without error.

    merge rigs, Extra Facial boen and Facs units check box. >> cause the AttributeError: 'Object' object has no attribute 'DazStandard'

  17. Thomas Larsson repo owner

    engetudouiti, I tried to move the properties to the armature data (pose can not have ID-properties). It seems to work but there are a lot of error messages in the console, so I made it optional. This feature is controlled by the option Armature Drivers. I would appreciate if you could test and figure out what causes the errors.

  18. Alessandro Padovani reporter

    As for commit a18a59a I get an error when importing the g8f-basic.duf test scene. Tried with and without “custom drivers”, with and without “combine drivers” in the global settings, it’s the same. Import options as below.

  19. engetudouiti

    Alessandro I may not test merge eyelash etc at current. (because it may actually change mesh? so I feel, it seems test with last step, after confirm import all morphs (shape keys) anyway it must need to test though.

    @Thomas

    I thanks you add test option I test later. (maybe I need to busy this week from tocay, to finish some work , Then I understand you need not keep JCM fin props. and apreciate you use shape key value as final. My guess, add prop for armature data (not object) is one idea, only when you need to generate custom prop which driven by pose bone, to make more complex daz morph work.

    At current I clear understand for most of jcm you need not. And I think directly set driver for shape key work better (it no need to check custom prop value, anyway,

    I may test your new option and at same time, untill we can confirm, add prop for armature data work better for MHX .. we keep it as only test option. I really sorry if it not cause any difference. and just to take your time to test thing, (but I hope to test the difference, then may check console erroer too)

    at same time, I make topic about hidden raw slider for JCM or MCM etc,, #413

    It is my main request which related about those new morph system. So if you can test it,,I really apreciate. I really hope to keep raw slider for those JCM shape keys. (I do not think to it work we need to set raw prop for armature, I suppose raw slider prop (jcm) as object may work with MHX. (though you may not like this much I feel,, only fin prop (pose bone drive those) might cause issue for MHX, I hope so.

    (if actually raw slider (custom prop) for JCM cause problem for MHX etc, I never request again, you try it…. it is just my thinking which may offer more flexible, and may easy import vendor custom JCM morphs which use those raw value.)

  20. engetudouiti

    @Alessandro

    if you need quick fix, use attached file, then temporally over-rite it please, I test with no Armature Drivers first for others who may no need to test this option.

    It seems work for me (but not test with merge graft or merge eye rash,, it return default option, (I hope so) without new erroer which related my request.

    or you may modify just for test as I menitoned here

    https://bitbucket.org/Diffeomorphic/import_daz/issues/415/test-for-new-prop-atatcched-for-rigdata

    I now could import facs unit, and expression with easy mode. (though new un-crasified option is difficult for me,,)

  21. Alessandro Padovani reporter

    Thank you Engetudouiti for your comments, no rush at all I understand it takes time to get the new rig stable. I’m just reporting bugs trying to help the little I can. Then we always have 1.5.1 until the job gets done.

  22. Thomas Larsson repo owner

    The import crash should be fixed, and lashes should be merge. The identication of lashes is really simple-minded: any mesh with a vertex group containing the string “Eyelid” in position 2-7 is considered to be an eyelash. But it seems to work.

  23. Thomas Larsson repo owner

    I’m not sure what I did, but now the armature drivers seem to work, for all face units, expressions and visemes, and all jcms except found shoulder morphs. The rig can be converted to mhx and there are no dependency loops anymore.

    Hm. This was tested with Victoria 8.1. Have to check G8F too.

  24. Thomas Larsson repo owner

    The warnings for the remaining jcms are gone too. Now all kind of morphs load without errors and work with mhx.

  25. engetudouiti

    Thanks, the new easy mode actually help me lot. I have question about “all pose bones posable” about easy import mode. Can I everytime check this option. and I can still import new pose controll later?

  26. Alessandro Padovani reporter

    I can confirm that both the import error and the lashes issue are fixed. I’ll post other issues not related to easy import in separate discussions so to not bog here. In my opinion the old import dialog is no more needed and could be replaced by easy import.

  27. Thomas Larsson repo owner

    Alessandro, yes, nested geografts do not work. There is now a warning about that in the tooltip. Once all bugs have been ironed out, I will write something about easy import and its limitations:

    1. Mainly intended for a single character in rest pose (other types of scenes may work).
    2. Custom morphs must be added later.
    3. Nested geografts do not work
    4. Morphs cannot be added later if geografts or lashes have been merged.

  28. Thomas Larsson repo owner

    engetudouiti, the intention is that morphs can be added both before and after you make all morph posable. You may need to use the button several times, if you load morphs that drive previously undriven bones. Well, that is the intention anyway.

    Until today, the tool was painfully slow if your character had many drivers, for the same reason that loading drivers with many variables took a long time. I applied Xin’s trick of first adding drivers to a temporary object first, and it lead to a great performance boost in this case too. However, I had to make a rather major code rearrangement, which may have broken other things.

    There are a few more places which deals with many drivers, e.g. conversion to mhx and rigify. The same technique should improve performance there as well.

  29. engetudouiti

    Thomas thank you. I hope to you confrim it. (I can still import pose controller morph, after I make all bones posable or not, so I just need to click it several times, when i import new pose controller, it is not problem for me.

    I seldom try to import pose controll which may add new child bone for body rig and rig hieralchy. but at least I need it for pectoral drv and foot drv (for G3) I suppose. then anyway I click it once. (then I afraid if I can import pose controller still or not)

    about face bone it is clear for me, but , when we import pose controller which drive limbs each bone, how add on generate hieralchy with drv bone,, so I pefer to avoid it usually.

    ,but if it work well I may try for hand fingers pose first.. Then I sometimes feel do we still need “add facial bone”? because even though I do not use it, maybe add on generate drv bone, if we have installed face unit and expresiosns. though it seems more reliable, untill make all bones posable.generate all drv bone about facial bone.

  30. Log in to comment