transfer jcms doesn't work

Issue #416 resolved
Alessandro Padovani created an issue

daz studio 4.15, blender 2.92, commit af9c67f

It seems transfer jcms doesn’t work. I used “custom drivers” off, “armature drivers” on, “combine drivers” off in global settings, since I understand these are the new options to test. Also may be these options should be in the debug section, if they are intended for debug purposes.

steps:

  1. import the test scene g8f-basic.duf, it’s g8f with toulouse and basic wear
  2. merge rigs
  3. import jcms
  4. transfer jcms to shorts and bra

Comments (9)

  1. Alessandro Padovani reporter

    update. I also tried “custom drivers“ on, “armature drivers” off, “combine drivers” on in global settings, that I understand should be the same as 1.5.1. But transfer jcms doesn’t seem to work either.

  2. Thomas Larsson repo owner

    With the new morph system it is not so easy to distinguish jcms from other shapekeys. But it is not really interesting either, because things will look weird unless all shapekeys are transferred, wherever they came from. Therefore I removed the Transfer JCMs and Transfer Other Shapekeys buttons, and only retained the Transfer Shapekeys button.

    If you specifically want to transfer jcms, you can use “jcm” as a filter. Otherwise the tool tries to transfer face shapekeys too, but very little time is lost doing so. Before the actual transfer takes place, the tool checks the bounding boxes of the shapekey and the piece of clothing, and if they don’t overlap the shapekey is immediately dismissed.

  3. Thomas Larsson repo owner

    The easy import tool has an option to transfer shapekeys to clothes. Shapekeys are always transferred to geografts and eyelashes before merging irrespective of this setting.

  4. Alessandro Padovani reporter

    Commit 160dcd9 works great as for the outfit jcms.

    But I see it’s not good as for face morphs. That is, actually the face morphs such as expressions are transferred to the hair. And I guess they will be transferred to a helmet or sunglasses too if the figure wears them. As well body morphs could be transferred to long hair that’s not desirable since long hair usually get their own morphs for fitting.

    For manual transfer we can select both the source morphs and the target so we can avoid the issue, though the jcm filter is not useful because face expressions do have jcms too.

    For easy import this is an issue.

    As for a possible solution I don’t have a clear picture. May be we could just exclude “transfer shapekyes” from easy import and leave it as a manual tool. Then some distinction among jcms and face morphs and body morphs will be useful anyway to make “transfer shapekeys” easier, I mean to avoid selecting every single morph by hand.

    edit. In daz studio we get a clear picture of all the morphs. There are “actor” morphs, that are usually baked to dbz because they can change the rest pose. Then “pose controls”, that we need to import to get the daz poses and animations working. Then “hidden” morphs that are jcms and flexions, that we need to import to get the figure deformations, that’s menu > preferences > show hidden properties.

    I don’t know if it is possible to get the daz categories in the plugin, or how hard this would be. But if it is possible then this could be a general solution, even for figures other than genesis, since every daz figure gets its own menu with the relative categories.

    edit. Or, the simple way, is to leave everything as is and just publish a “known issues”. So the user is warned that easy import has issues, and manual transfer is to be done with filters because there are no categories anymore.

    edit. Or may be we could let the user define his own custom categories for morphs. So when the morphs are imported he can place them into categories, and then use categories other than filters to transfer morphs.

  5. Thomas Larsson repo owner

    OK, I think it works now. When shapekeys are loaded, the morph type is stored in a mesh collection property, with one entry for each shapekey. Transfer shapekeys uses this property to select which shapekeys will be transferred. Easy import transfers shapekeys of all types to lashes and geografts, but only JCMs and flexions to other meshes.

  6. Alessandro Padovani reporter

    Thomas this can’t work. That is, in the general case the plugin can’t guess what type of morphs the user wants to transfer.

    The easy import will fail with hair, even if the bounding box is used, because hair don’t need jcms to be trasferred, they have their own morphs for fitting. Then hair may need to import body morphs if the user wants to use actor morphs to change the body shape in animation, but this doesn’t include expressions that are face morphs.

    So in my opinion we need to:

    1. For easy import do not transfer morphs to assets “parented” to the head, that are usually hair, earrings, helmets and glasses that don’t need jcms or expressions. edit. For conforming hair the rig has a typical structure that goes from the hip to the head. edit. Eventually body morphs may be transferred to allow the head assets to follow a shape change, but this doesn’t include expressions.
    2. For the transfer tool we need to add the morph type to the filters, so that the user can select both by morph name and type.

    edit. I see commit 31820c3 already implements point 2, but there’s “all”, “expressions”, “jcms” to choose from. We need the “body” category too to only transfer custom shapes. Then I suppose the “jcms” category includes flexions ? And the “expressions” category includes “face units”, “visemes” and “facs” ? It may be better to expose all the categories so the user can choose better.

    edit. This is really minor but annoying so if it can be fixed it’s nice. In the transfer dialog there’s a misalignment of items that grows with the column, but only after the second row.

    edit. May be it’s also useful to make a point with morph categories. Also to compare with the daz categories. Then all the categories from 1 to 9 should be exposed in the transfer tool.

    1. units > daz head controls (without expressions and visemes)
    2. expressions > daz expressions
    3. visemes > daz visemes
    4. facs units > daz facs
    5. facs expressions > daz expressions 8.1
    6. body morphs > daz body controls (that’s pose controls without head controls)
    7. jcms > daz jcms (correctives without flexions)
    8. flexions > daz flexions
    9. custom > daz actor

    From the comparison above may be some names could be changed to better reflect daz and be more clear to the user. Please note that the names “pose controls” and “actor controls”, with the warning, specify better what is need for posing thus animation, and what is needed to customize the figure, that should be baked to dbz because the armature doesn’t follow.

    1. units > head controls
    2. facs units > facs
    3. body morphs > body controls
    4. standard morphs > pose controls
    5. custom morphs > actor controls (warning: the blender armature is not affected, should be exported to dbz instead)

  7. Thomas Larsson repo owner

    Now each morph type is classified after the body part it affects: face or body. For custom morphs the user can specify the body part himself. Here there is also a third option: custom. Any shapekey that the user creates manually is classified as custom.

    The transfer shapekey tool can select a single body part, or all.

    Easy import transfers face shapekeys to lashes and body shapekeys to geografts and clothes (= anything but lashes or shapekeys that belongs to the same armature). Custom shapekeys are not relevant here. Transfer only happens to meshes that have an armature modifier. That is an easy way to exclude hard objects. Anything that has an armature modifier is probably something deformable which should be affected by shapekeys too.

    This may not cover all cases perfectly, but easy import is intended to work for common cases. You can always turn off the transfer option and transfer specifically what you need later.

    As for your observation that only expressions and jcms show up: 1. This is now obsolete. 2. Only types that have been loaded were displayed.

  8. Alessandro Padovani reporter

    commit 1cf9f0f

    I don’t agree on easy import. That is, jcms should not be transferred to “head” assets, even if they have a rig. The plugin could try to recognize head assets by the rig structure that goes from hip to head without limbs.

    Below an example with the test scene. In daz studio the hair is not affected by the neck jcms.

    I also don’t like too much the body and head categories. They are too simplistic in my opinion. I’d prefer to have all the categories as in the import morphs interface, so it’s easier for the user to select the morphs he wants to transfer. Other than being more consistent between import and transfer. But, being those categories, the user can always select each morph manually.

    These notes are not really bugs though, just different ways to see things. So please let me know what you plan to do so I’ll mark as resolved if you’re not interested.

  9. Alessandro Padovani reporter

    Commit 90cbcc5 works great, marking as resolved. I understand it's not easy to identify hair, but at least now the plugin tries to.

  10. Log in to comment