Piercings on G8F not parenting to body and stay afloat ** aka better rigid followers **

Issue #2084 resolved
Balkazzaar created an issue

After importing the model into blender using the addon, i tried parenting the piercings to armature using Ctrl + P (tried with empty groups and with automatic weights) and also tried parenting to body as well with both methods and both did not work.

as you can see in the picture below, after doing a pose, the hair braid jewellery and earrings and piercings stay afloat instead of moving with the pose.
What am i missing or doing wrong here?

Comments (71)

  1. Alessandro Padovani

    The importer will parent the items for you if you export them with the figure from daz studio. Otherwise you can parent to bones. Otherwise you can parent to vertices. If you just parent to the armature of course they will not follow.

  2. Balkazzaar reporter

    @padone

    I am ofcourse exporting the figured with all the accessories parented properly, but i did not see them parented in blender when imported.

    If i do parent it vertices, should i parent each accessory to vertex/vertices close to it or to a common one?

  3. Alessandro Padovani

    That’s odd. Be sure to update to the latest dev version, then post a simple test scene in duf format with just one item parented to a base figure, also link the product pages if you use anything but the base packs. I’ll give a look.

    Can you parent successfully any prop or primitive ?

  4. Balkazzaar reporter

    @padone

    I am using the latest dev version from bitbucket. I will do a simple test as you asked and share my findings.

  5. Balkazzaar reporter

    I used a simple base G8f figure with the following assets attached to it DAZ.

    1. https://www.daz3d.com/mrl-amara-braids-for-genesis-3-and-8-female-s Used the G8F version hair with accessories attached to hair.
    2. https://www.daz3d.com/dforce-v-neck-dress-outfit-and-hair-for-genesis-8-and-81-females Used V Neck necklace.
    3. https://www.daz3d.com/make-me-punk-shaders-and-decals Clicked on “Make Me Punk ! Piercings LOAD ALL“ for G8F from accessories tab.
    4. https://www.daz3d.com/alternative-piercing-pack-for-genesis-8-female Clicked on Accessories tab and loaded “AP Nipple Left 01”, “AP Nipple Left 02”,”AP Nipple Right 01” and “AP Nipple Right 02”.

    Saved the DAZ file. Exported as DBZ and imported into DAZ and saw the following errors. I am using the latest version of the dev plugin and i got the following errors:

    Read prefs: "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\config\userpref.blend"
    
    Loading DAZ Importer v 4.1.0
    DAZ loaded
    Register DAZ Importer
    Load settings from C:/Users/Balkazzaar/Documents/DAZ Importer/import_daz_settings.json
    Loading BVH Retargeter
    BVH Retargeter loaded
    Load settings from "C:\Users\Balkazzaar/Documents/DAZ Importer/retarget_bvh_settings.json"
    
    Loading MHX RTS v 4.1.0
    MHX RTS loaded
    Reloading external rigs...
    Reloading external metarigs...
    
    Loading E:\My DAZ3D Library\Scenes\test.duf
    Parsing data
    Preprocessing...
    Fitting objects with dbz file...
    Building objects...
    Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 287, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 184, in loadDazFile
        asset.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 130, in postbuild
        self.tree.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 2137, in postbuild
        marked = pruneNodeTree(self, active)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 624, in pruneNodeTree
        makeDazImages(tree)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 746, in makeDazImages
        cnode = copyNode(node, ctree)
                ^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 838, in copyNode
        copy_attributes( input_attributes, inp, new_node.inputs[i] )
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 820, in copy_attributes
        setattr( new_prop, attr, getattr( old_prop, attr ) )
    ValueError: bpy_struct: item.attr = val: sequence expected at dimension 1, not 'float'
    Error: Python: Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 287, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 184, in loadDazFile
        asset.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 130, in postbuild
        self.tree.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 2137, in postbuild
        marked = pruneNodeTree(self, active)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\BlenderTraceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 758, in run
        self.easyImport(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 767, in easyImport
        bpy.ops.daz.import_daz_manually(
      File "C:\Program Files\Blender Foundation\Blender 4.1\4.1\scripts\modules\bpy\ops.py", line 109, in __call__
        ret = _op_call(self.idname_py(), kw)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    RuntimeError: Error: Python: Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 287, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 184, in loadDazFile
        asset.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 130, in postbuild
        self.tree.postbuild()
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\cycles.py", line 2137, in postbuild
        marked = pruneNodeTree(self, active)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 624, in pruneNodeTree
        makeDazImages(tree)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 746, in makeDazImages
        cnode = copyNode(node, ctree)
                ^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 838, in copyNode
        copy_attributes( input_attributes, inp, new_node.inputs[i] )
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\tree.py", line 820, in copy_attributes
        setattr( new_prop, attr, getattr( old_prop, attr ) )
    ValueError: bpy_struct: item.attr = val: sequence expected at dimension 1, not 'float'
    Location: C:\Program Files\Blender Foundation\Blender 4.1\4.1\scripts\modules\bpy\ops.py:109
    

  6. Balkazzaar reporter

    @padone

    If you need anything else, please let me know. I can share the scene file with the assets as a zip file if you need.

  7. Thomas Larsson repo owner

    As for the crash it is the same as in #2083, which was fixed after the release of 4.1.0. But it happens late in the import process and I don’t think it affects parenting.

  8. Alessandro Padovani

    4.1.0.2153, blender 3.6 and 4.1

    update. bug for Thomas. rigid follow.

    The parenting works fine in that it follows the head, so the issue reported by Balkazar doesn’t apply. However, the piercings don’t follow the face expressions. In daz studio we have a rigid follow, that should be imported in blender as a vertex parenting, see #1423.

    If I set vertex parenting by hand then the piercings follow the face expressions.

    steps:

    1. easy import the test scene piercing.duf with the default preset plus expressions
    2. check the expressions, the piercings don’t follow

    steps to fix:

    1. select all the piercings
    2. clear parent: alt-p clear and keep transform
    3. shift select the figure mesh
    4. make parent: ctrl-p vertex triangle

  9. Thomas Larsson repo owner

    Vertex parenting is implemented in last commit. It sort of was implemented before, but it wasn’t used in this case because the piercings are parented to the head bone rather than to the figure itself.

    The piercings are parented to a single vertex, namely the first of the six vertices listed in the duf file. Triangles are not used, because that caused unwanted extra rotations when doing the parenting without operators. This could cause incorrect movements in some cases, but it is better than nothing and works quite well for the piercings.

  10. Alessandro Padovani

    4.1.0.2155

    That doesn’t work fine, because the piercings rotate when we rotate the head, instead of staying attached to the face. When we have a rigid follow it doesn’t really matter what the object is parented to in daz studio, because in blender it will be parented to the mesh anyway. See my steps above for a correct solution.

    p.s. In some way with the last commit it seems you also managed to break the vertex parenting in blender, that I wouldn’t dream it is possible. That is, even if we try to fix it by hand it doesn't work anymore. Reverting to the previous commit and fixing by hand works fine.

  11. Thomas Larsson repo owner

    Fixed in last commit. Now all rigid followers are just collected during the import phase, and then parenting is done with operators in a final step. Seems to work, although the needle on the left upper lip sometimes disappear under the skin.

  12. Alessandro Padovani

    Commit 390ea06.

    Nope. I mean the piercings work fine this time, but something breaks vertex parenting. That is, if we clear parent then redo the vertex parenting by hand it doesn’t work anymore. This doesn’t happen with commit f72d86e where the manual fix works fine and we can redo it at will.

    If this can be a clue there’s some strange relation lines in the imported mesh that shouldn’t be there. At least it doesn’t happen when we do it by hand. Did you clear parents before doing vertex parenting as my steps above ?

  13. Thomas Larsson repo owner

    To really see what is imported, use manual import instead of easy import. The piercing meshes are parented to empties that are vertex parented to the mesh. To get the result of easy import, first eliminate empties then merge rigs.

  14. Alessandro Padovani

    Commit 390ea06.

    Nope. Here it works fine if I do it by hand with the standard import, no strange lines are generated and I can redo the parenting any time. The empties are vertex parented as you noted but this doesn’t really matter.

    steps:

    1. standard import the test scene
    2. select all empties and delete, this leaves all the piercings with no parents
    3. merge rigs
    4. select all the piercings then vertex parent

  15. Thomas Larsson repo owner

    Manual import cleared parents before vertex parenting, but the eliminate empties tool did not. Fixed now.

    The strange lines come from the Apply Transforms option in easy import. Easy import no longer applies transforms of vertex parented objects.

  16. Alessandro Padovani

    note. important. about apply transforms.

    Unless there’s a reason to, I believe apply transforms should only apply the scale, not location and rotation. Otherwise the pivot points of objects is changed. This is especially noticeable when we import multiple figures at different positions in the scene. Applying the scale makes sense if we want to bake the figure size.

    I see that parented objects are excluded from apply transforms, to preserve the pivot points. But we could apply the scale for them too.

    As a consequence we could also rename “apply transforms“ as “apply scale“. Of course we could just disable “apply transforms“ in the import options and eventually apply scale by hand where needed. I’m just wondering if there’s any reason to keep “apply transforms“ as it is. Let us know.

  17. Thomas Larsson repo owner

    There are a number of tools that won’t work correctly with object transforms. Basically anything that uses operators that act on transformed objects; make hair, merge geografts and transfer shapekeys come to mind, but there might be others as well. Transforms are applied to avoid error messages with these tools, but as you said there are tradeoffs.

  18. Thomas Larsson repo owner

    Apply transforms is disabled in the last commit, and the code has been extracted to a separate tool in the Corrections panel.

  19. Alessandro Padovani

    I am under the impression that recently you enhanced some tools to work with transformations, that wasn’t possible before. Anyway I agree that having apply turned off and eventually the tools to warn is a better default, so we know when and why apply is needed.

  20. Balkazzaar reporter

    @Alessandro Padovani @Thomas Larsson

    I downloaded the latest commit and this time i used my original character itself with some tattoos and an outfit as well and i m still get the error and also viewport shows all white shading instead of the usual beige and red color shading.

    Using Blender 4.1

    Below are the errors i saw in the blender console.

    Read prefs: "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\config\userpref.blend"
    
    Loading DAZ Importer v 4.1.0
    DAZ loaded
    Register DAZ Importer
    Load settings from C:/Users/Balkazzaar/Documents/DAZ Importer/import_daz_settings.json
    Loading BVH Retargeter
    BVH Retargeter loaded
    Load settings from "C:\Users\Balkazzaar/Documents/DAZ Importer/retarget_bvh_settings.json"
    
    Loading MHX RTS v 4.1.0
    MHX RTS loaded
    Reloading external rigs...
    Reloading external metarigs...
    
    Loading E:\My DAZ3D Library\Scenes\testpiercingg8f.duf
    Parsing data
    Smashing character 547204
    Smashing character 460003
    Smashing character 1148586
    Preprocessing...
    Missing shell material
    Material: GoldenPalace_2254_GP_Torso
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Vagina
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Labia Minora
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Rectum
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Torso
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Vagina
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Labia Minora
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Rectum
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Fitting objects with dbz file...
    Building objects...
    Duplicate geometry definition:
      <Geometry /data/daz%203d/genesis%208/female/genesis8female.dsf#geometry Genesis8Female ['geometry-4', 'geometry-1']>
    Material "Face_Eye Mask" not found in geometry Genesis8Female
    Ignore <Instance Tonemapper%20Options-1 L:Tonemapper Options 0 N: Tonemapper Options P: None R: None>
    Ignore <Instance Environment%20Options-1 L:Environment Options 0 N: Environment Options P: None R: None>
    Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 290, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 182, in loadDazFile
        inst.finalize(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\node.py", line 504, in finalize
        follows = LS.rigidFollow.get(mesh.name)
                                     ^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'name'
    Error: Python: Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 290, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 182, in loadDazFile
        inst.finalize(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\node.py", line 504, in finalize
        follows = LS.rigidFollow.get(mesh.name)
                                     ^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'name'
    Location: C:\Program Files\Blender Foundation\Blender 4.1\4.1\scripts\modules\bpy\ops.py:109
    Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 761, in run
        self.easyImport(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 770, in easyImport
        bpy.ops.daz.import_daz_manually(
      File "C:\Program Files\Blender Foundation\Blender 4.1\4.1\scripts\modules\bpy\ops.py", line 109, in __call__
        ret = _op_call(self.idname_py(), kw)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    RuntimeError: Error: Python: Traceback (most recent call last):
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\error.py", line 223, in execute
        self.run(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 290, in run
        self.loadDazFile(filepath, context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\main.py", line 182, in loadDazFile
        inst.finalize(context)
      File "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addons\import_daz\node.py", line 504, in finalize
        follows = LS.rigidFollow.get(mesh.name)
                                     ^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'name'
    Location: C:\Program Files\Blender Foundation\Blender 4.1\4.1\scripts\modules\bpy\ops.py:109
    

    I am attaching the Daz scene and the generated dbz files to this ticket for your perusal, so that you can see the issue hopefully this time.

    The file name is testpiercingg8f. The DAZ file looks as shown below. Please let me know if you need the product names of the tattoos i used. Hopefully the errors will reveal the product names.

  21. Alessandro Padovani

    You should try to make the test scene as simple as possible, if the issue is the piercings then include a test scene using only them, please exclude everything that is not needed. Unless you notice that the piercings alone work fine and you need that exact combination to trigger the issue.

    p.s. From your log my guess is that you may have a messed up content folder, in this case you should also have errors in the daz log when you load the scene, then daz studio could be more “forgiving“ than blender handling duplicate files. Be sure that your content folders are the same in daz and blender.

    https://bitbucket.org/Diffeomorphic/import_daz/wiki/Install/Save the DAZ root paths

    Then this is only a guess of mine. Thomas can understand better what’s going on in the log.

  22. Alessandro Padovani

    4.1.0.2158

    bug for @Thomas. rigid follower parented to shell.

    I stripped down the test scene provided by Balkazar of items I can’t read, leaving only the piercings, and I noticed the rigid followers are parented to an invisible shell. Now I have no idea why Balkazar did that, it makes no sense to me, but this way the importer is confused and python crashes.

    steps:

    1. easy import the test scene testpiercings-g8f-r2.duf

    Again, we should not really care what a rigid follower is parented to in daz studio, we only need to know what the “follow target” is that’s a rigid follow property, that’s the geometry the item will be parented to in blender.

  23. Thomas Larsson repo owner

    I have tested Balkazar’s original file, and while I don’t get exactly this error, I got others, which have been fixed in the last commit.

    One error was caused by pruning the node tree when the code still had references to some nodes. If those nodes are pruned, anything could happen. This is avoided by moving pruning to the very end of manual import.

    The imported file contains lots of hidden empties that are rigid followers. They have to be unhidden before they can be vertex parented, because parenting is done with operators which only work on unhidden objects. This has been fixed, but the plugin uses operators in many other places, and I’m not sure that it unhides things everywhere.

  24. Thomas Larsson repo owner

    Update. In the previous commit only a few of the empties actually followed the mesh. In the last commit all of them should work.

  25. Balkazzaar reporter

    @Alessandro Padovani

    Now I have no idea why Balkazar did that, it makes no sense to me, but this way the importer is confused and python crashes.

    I did not do this myself. In the https://www.daz3d.com/make-me-punk-shaders-and-decals product, there is single click function which will put ALL the piercings on the figure. I guess they figured to parent it to a shell like you said. This was not done by me, its the product itself. What i dont get is that how come these same errors did not show up in the earlier iteration, because its the same thing i did that scene file too..

  26. Alessandro Padovani

    Commit 33c9d47.

    Works almost fine, but a couple notes, in the stripped test scene testpiercing-g8f-r2.duf:

    bug. rigid follower with multiple items. Some piercings move when we move the head, same as happened before. In daz studio there’s two items parented to the same rigid follower, only one works fine while the other doesn’t. Probably you don’t clear parents for all.

    bug. right nipple rod. The right nipple rod has a wrong position in rest pose, no idea why. The left nipple rod is fine which should be the same.

  27. Thomas Larsson repo owner

    The right ear dagger looks fine here. Or at least it looks like it does in DS, the upper and lower parts do not quite fit together there either.

    However, you must import the file with dbz fitting. The piercings end up in weird places if they are imported with one of the unmorphed options. But this shouldn’t be a problem in this case since you normally import characters with dbz fitting.

  28. Balkazzaar reporter

    @Alessandro Padovani

    Regarding the nipple rod/nipple rings not parenting or being in the wrong position, i had no control over it. In DAZ, when i clicked the button to put the nipple rod/nipple ring, it would never be in the right place. Either the nipple ring/nipple rod would be behind the breast /nipple mesh and not visible, or it would on the breast mesh away from the nipple area…so only solution was to manually adjust the position of these assets using the mouse or the x/y/z coordinates…i dont even think they were parented properly…

    What about the rings or jewellery on the hair braids not getting parented? Is the whole import process failing because of one error and hence all the parenting fails?

  29. Alessandro Padovani

    @Thomas the ear daggers are fine in rest pose, but they move if we move the head, as described above. Did you move the head ?

    @Balkazar Here the braid rings are parented fine, though some favorites don’t seem to work, but I understand favorites have some limits depending on the morphs, so this may be expected. Also the braid rings are parented to bones they don’t use rigid followers, the braid bones are in the custom layer.

    steps:

    1. import with daz favorites for the braids
    2. test the braids morphs

  30. Balkazzaar reporter

    @Alessandro Padovani

    At no point in this ticket, i mentioned that i use favorites. I did not use any favorites here and never have and dont intend to.

    So i dont exactly know or understand what cause or why the braid rings are not parenting. I have not tried the latest commit since your/ @Thomas Larsson 's fix.

    Can the braid rings be parented without using favorites? or does it have to use favorites?

  31. Thomas Larsson repo owner

    In the Options panel there is now info about the parent vertices and a button that selects them.

    Blender doesn’t seem to do a very good job at selecting parent vertices, which leads to bad deformation. E.g. the dagger disappears when the character opens her jaw. Here are the parent vertices for the upper and lower dagger, respectively. I get the same vertices when doing manual parenting.

  32. Thomas Larsson repo owner

    In this case it is probably better to disable Eliminate Empties in easy import, and hide all empties instead. Since empties are just single points it should be easier for Blender to find the parent vertices.

    Now I see that the empty corresponding to the dagger meshes is not located at the right place. That may be the cause of the problem.

  33. Alessandro Padovani

    @Thomas Thank you for looking into this. Yes, I can confirm that reparenting by hand works fine. In this case the automatic parenting can’t guess what “good” vertices are to keep the dagger in place, but we can always reparent by hand.

    This doesn’t explain why the nipple rod is out of place in rest pose though.

    note. important. reference vertices.

    In the duf file there’s reference vertices for the rigid follow nodes, which we could use to get the three vertices for blender, at least this way we know that they’re inside the intended selection and this will work better than the automatic parenting. May still need manual correction in some extreme cases.

    Let us know.

    https://www.daz3d.com/forums/discussion/203481/setting-up-items-with-rigid-follow-nodes-tutorial

    p.s. I’d go with the first and last and a middle vertices to try and cover the whole daz selection.

  34. Thomas Larsson repo owner

    Using the reference verts is not straightforward. If you change the parent verts after parenting, the dagger jumps to another position. There doesn’t seem to be any way to specify the vertices when using the operator, so this would require doing parenting without operators. The plugin does that with objects that have bone parents, but it doesn’t seem to work with vertex parents.

    But if the empty is located properly, it should be easier for Blender to find good parent vertices.

    I will probably disable the eliminate empties option by default, and let users use the corresponding button if they need to.

  35. Alessandro Padovani

    If it helps, below it’s how we can do it with operators. Otherwise if you can import the reference vertices as vertex groups I can do some tests. Then if we don’t find anything better we can be happy with fixing it by hand when needed, that’s not terrible anyway.

    Let us know.

    parent to selected vertices:

    1. object mode
    2. select source (the object to be parented)
    3. select target as active (the parent object)
    4. edit mode
    5. select three vertices on target (the daz reference vertices should be valid at this point)
    6. ctrl-p make vertex parent
    7. object mode

  36. Thomas Larsson repo owner

    This issue was tricky. For some reason the G8F armature is distorted, but the empties and eyelash armature is not. If we import the file with unmorphed mesh fitting, both armature are undistorted.

    So the empties where not placed correctly relative to the G8F armature. Now the empties are also included in the dbz file, so they are placed in the right positions.

  37. Thomas Larsson repo owner

    Since the export_to_blender.dsa script has changed, it must be copied to the DS scripts folder before exporting the dbz file. The HD export script will be updated later. The eliminate empties option in easy import has been disabled. I tried to select body vertices before vertex parenting the piercings, but Blender ignored that and choose bad parent verts anyway. Empties seem to work better.

  38. Alessandro Padovani

    Commit ee8b59a.

    Works amazing even for complex cases you got it, that seems perfect at least in my tests. A couple notes.

    empties should not be needed. In my steps above you have to select only three vertices for the vertex parent to work, not the whole daz selection. Did you select three vertices ?

    The empties location is not relevant in any way for rigid followers. In this case the empties are just placeholders for the rigid followers, what matters is the “follow maps” and the “follow items” which are children of the rigid followers. In blender the “follow items“ baked in the dbz can be vertex parented using the “follow maps“.

    That said having the baked location for empties may be useful for other cases, as objects parented to empties for animation. Just not for rigid followers.

    scale empties. When empties are really needed, you may want to scale them to a better size for daz figures. This is done when creating the empty.

    bug. right nipple rod. The right nipple rod in my test scene testpiercing-g8f-r2.duf stills out of place.

    p.s. On a comparison with the daz scene it seems there’s also a wrong rotation, this is odd since the mesh is baked in the dbz, unless empties come into play. Again the left rod is fine.

  39. Thomas Larsson repo owner

    There is something fishy about this piercing, because the corresponding empty is misplaced in DS too. Although the mesh is in the right position.

    Perhaps one should scale the empties to be 1 cm, which is the basic unit in DS.

    I don’t get vertex parenting to work properly even when I do it manually.

    1. Unparent the piercing mesh.
    2. Select three verts in the body mesh.
    3. Parent to three vertices.
    4. Check the parent vertices with the Select Parent Vertices button described above (and which I forgot to upload yesterday).

    The parent verts are not the same as the ones I selected first. Unless I’m doing something wrong.

  40. Alessandro Padovani

    explanation. You are right that the empty position does matter, I was misleading about this. In my test scene I moved the empty from its original position, instead of moving the piercing item, this causes the strange behavior in blender. In daz studio the original position of the empty is created with the rigid follow and it is its pivot point. Then if we move the empty it will rotate around its pivot.

    https://www.daz3d.com/forums/discussion/203481/setting-up-items-with-rigid-follow-nodes-tutorial

    # final transformation for rigid followers
    empty rest position (pivot) > empty scene position (translation) > item position
    

    Now unfortunately the empty pivot is not included in the duf file as far as I can see. We only have the empty location in word coordinates and the rigid vertices on the mesh.

    proof. Test scene included rigid-test.duf, I created a rigid follow then moved it from its original location aka its pivot. In daz studio, when I open the mouth with the jaw bone the empty rotates around the pivot, while in blender it doesn't.

    possible solution. It is to be said that moving the empty in daz studio is probably my mistake, I guess the rigid follow is supposed to stay in its original position and we only move the parented items if needed. In this situation it is as I "misleaded" before, that is, the empty does not matter and we can vertex parent the items.

    In any case vertex parenting the empties does not work if we moved them from their pivot. And there's no information in the duf file to fix this. So we can ignore the empties as a simplified solution which works fine if the empty is not moved from the pivot. Though the pivot could probably be the middle point of the rigid vertices, but I’d not bother about this.

    manual steps. As for the manual steps I don't know what to say, they work fine here. That is, "select parent vertices" does show the last vertices I selected and does follow correctly if I change them. You have to follow exactly my steps reported above though, that are not the same as you described, but I suppose you just simplified the description and you did follow my steps correctly, if not please do.

    Of course you have to select the item, not the empty.

  41. Thomas Larsson repo owner

    I did get vertex parenting to work manually, but there was another problem with doing it in code: the vertex selection can not be changed in edit mode, so it is not possible to select the parent vertices. Instead we must create a bmesh from the editmode mesh, set the relevant bmesh vertices, and finally update the mesh from the bmesh. This is implemented in the last commit when eliminating empties, so emiminating empties is now enabled by default again. It is not yet done during manual import though.

  42. Thomas Larsson repo owner

    No, I do that in lots of places, but it didn’t work here. Creating a bmesh object is not that bad. The docs say that it is freed automatically when it isn’t used anymore.

  43. Alessandro Padovani

    Commit e57a6ff works fine, thank you for your work on this. I have a minor note.

    If we open the mouth we see that the right rings don’t move fine. Looking at the parent vertices we see they are selected inside the lips thus the strange movement. This may be fine it is expected for extreme cases that we may have to reparent by hand. I’m just wondering if you selected the first and last and middle vertices of the daz selection as I suggested, to try and cover most of the selection area. Let me know.

  44. Thomas Larsson repo owner

    No, so far it is only the eliminate empties tool that explicitly select vertices. It should be done for the original parenting of the empties, but it hasn’t been done yet. It will have to wait until next week because now I’m off to celebrate the summer solstice.

  45. Thomas Larsson repo owner

    Actually, I did find some time before leaving. The plugin now use three of the daz reference vertices for parenting.

    As for the three right rings, they are parented to the “Lip Right” empty, which has vertex parents [7144, 7150, 12906]. In the duf file the reference vertices are [ 7144, 7145, 7148, 7149, 7150, 7277, 12894, 12905, 12906 ]. Perhaps we could make a better selection than just first, last, middle. E.g. we could choose the three vertices that maximizes the area of the triangle.

  46. Alessandro Padovani

    Commit f3a3b97 works great here. Thank you for your work on this. As for maximizing the triangle area I don’t have a strong opinion, I guess it depends on the daz selection what’s better. Probably maximizing the area would select vertices far away to each other, missing a middle point and possibly rotating “too much“ compared to the underlying geometry. But tests should be done on this.

    Thank you again and have a nice vacation, here in Italy we celebrate on August 15.

    @Balkazar. Favorites is for morphs, not for parenting. The rings on the braids are not rigid follows, they parent to bones so there should be no issues. Be sure to update both the addon and the daz script since Thomas changed both. Anyway eventually this would be another issue similar to #2101.

    So if there’s nothing to add about rigid follows we can close as resolved.

  47. Balkazzaar reporter

    @Alessandro Padovani @Thomas Larsson

    I downloaded the latest commit, updated the blender side, updated the daz side of the scripts (both clean installs)

    Tested the same file i shared with you, and am still seeing the issue.

    Below is the Blender Console output.

    Read prefs: "C:\Users\Balkazzaar\AppData\Roaming\Blender Foundation\Blender\4.1\config\userpref.blend"
    
    Loading DAZ Importer v 4.1.0
    DAZ loaded
    Register DAZ Importer
    Load settings from C:/Users/Balkazzaar/Documents/DAZ Importer/import_daz_settings.json
    Loading BVH Retargeter
    BVH Retargeter loaded
    Load settings from "C:\Users\Balkazzaar/Documents/DAZ Importer/retarget_bvh_settings.json"
    
    Loading MHX RTS v 4.1.0
    MHX RTS loaded
    Reloading external rigs...
    Reloading external metarigs...
    
    Loading E:\My DAZ3D Library\Scenes\testpiercingg8f.duf
    Parsing data
    Smashing character 547204
    Smashing character 460003
    Smashing character 1148586
    Fitting objects with dbz file...
    Preprocessing...
    Missing shell material
    Material: GoldenPalace_2254_GP_Torso
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Vagina
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Labia Minora
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Rectum
    Node: Shell
    Inst: Piercings
    Shell: Genesis 8 Female
    UV set: Default UVs
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Torso
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Vagina
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Labia Minora
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Missing shell material
    Material: GoldenPalace_2254_GP_Rectum
    Node: Shell
    Inst: GoldenPalace_Shell
    Shell: Genesis 8 Female
    UV set: Golden Palace
    
    Building objects...
    Duplicate geometry definition:
      <Geometry /data/daz%203d/genesis%208/female/genesis8female.dsf#geometry Genesis8Female ['geometry-4', 'geometry-1']>
    Material "Face_Eye Mask" not found in geometry Genesis8Female
    Ignore <Instance Tonemapper%20Options-1 L:Tonemapper Options 0 N: Tonemapper Options P: None R: None>
    Ignore <Instance Environment%20Options-1 L:Environment Options 0 N: Environment Options P: None R: None>
    Remove UV layer Default UVs
    File "E:\My DAZ3D Library\Scenes\testpiercingg8f.duf" loaded in 152.845 seconds
    Draw environment 0
    Draw Dome turned off
    WARN (bpy.rna): C:\Users\blender\git\blender-v410\blender.git\source\blender\python\intern\bpy_rna.cc:1366 pyrna_enum_to_py: current value '0' matches no enum in 'Scene', 'Scene', 'DazMorphCatsContent'
    WARN (bpy.rna): C:\Users\blender\git\blender-v410\blender.git\source\blender\python\intern\bpy_rna.cc:1366 pyrna_enum_to_py: current value '0' matches no enum in 'Scene', 'Scene', 'DazMorphCatsContent'
    
    Some assets were not found. Check that all DAZ root paths have been set up correctly.
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupr/rshldrbend_ctrlmd_n_zrotate_40.dsf
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupl/lshldrbend_ctrlmd_n_zrotate_n40.dsf
      /data/daz 3d/genesis 8/female/morphs/k.h. image studio/ultima/ultimate natural bend morphs for victoria 8.dsf
    Unsupported or partially supported shaders found:
      support/DAZ/Uber/shaderDefinitions/surface/omUberSurfaceDef.dse
      V3D Tanned Skins G8
      Cast Iron
    
    Transfer to clothes
    Transfer to face meshes
    Main character: True
    Merge rigs
    Mesh with no vertex groups: RingBraid1
    Mesh with no vertex groups: RingBraid2
    Mesh with no vertex groups: Rings LHS
    Mesh with no vertex groups: Rings RHS
    Merge materials
    Load Units to Genesis 8 Female Mesh (121 morphs)
     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = = * = = * = = * * * * * * * * = = * = = * = = * * * * * = = * * * * * * = = * * * = = * = = * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = = * = = * = = * = = * = = * = = * = = *
    
    Load Units to Genesis 8 Female Eyelashes (0 morphs)
    Units loaded in 1.2 seconds
    Load Expressions to Genesis 8 Female Mesh (80 morphs)
     = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * = = * * * = = * = = * * = = * * = = * * = = * *
    
    Load Expressions to Genesis 8 Female Eyelashes (0 morphs)
    Expressions loaded in 6.5 seconds
    Load Visemes to Genesis 8 Female Mesh (17 morphs)
     * * * * * * * * * * * * * * * * *
    
    Load Visemes to Genesis 8 Female Eyelashes (0 morphs)
    Visemes loaded in 0.8 seconds
    Load Head to Genesis 8 Female Mesh (134 morphs)
     * * * * * * * * * * * * * = * = * = * * * * * * * * * * * = * * *Baked PHMEyelashesCurl = 0
     * * *Baked PHMEyelashesLengthLower = 0
     *Baked PHMEyelashesLengthUpper = 0
     * * * * = * * * * = * = * * * * * * * * * * * * = * * * * * * * * * * * * = * * * * * * * * * * * * * = * = * * * * * = * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = * = * = * = * * * * * * * * = * *
    
    Load Head to Genesis 8 Female Eyelashes (6 morphs)
     * * * * * *
    
    Head loaded in 8.0 seconds
    Load Facs to Genesis 8 Female Mesh (159 morphs)
     = = * = = * * * = = * = = * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = * = * = * = * = * * * = * * * = * * * = * * * = * * * = * * * * * * * * * = * = * * * * * * * * * * * * * * * * * * * * * * * = = * * * * * * * * * * * * * * * * = = * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = = * = = * * * * * * * * * *
    
    Load Facs to Genesis 8 Female Eyelashes (0 morphs)
    Facs loaded in 6.7 seconds
    Load Facsdetails to Genesis 8 Female Mesh (0 morphs)
    Load Facsdetails to Genesis 8 Female Eyelashes (0 morphs)
    Facsdetails loaded in 0.0 seconds
    Load Facsexpr to Genesis 8 Female Mesh (8 morphs)
     * * * * * * * *
     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
    
    Load Facsexpr to Genesis 8 Female Eyelashes (0 morphs)
    Facsexpr loaded in 0.5 seconds
    Load Body to Genesis 8 Female Mesh (99 morphs)
     * * = * * * = * = * = * * * * * = * = * = * = = * * * * * * = = * = = * = = * = = * = = * = = * * * * * * * = = * = * = * * * = = * = = * * = = * * * = = * * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * * = = * = = * = * = * * * = = * = = * * = = * * * = = * * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * * = = *
    
    Load Body to Genesis 8 Female Eyelashes (0 morphs)
    Body loaded in 0.9 seconds
    Load Jcms to Genesis 8 Female Mesh (101 morphs)
     * * * * * * * * * = * = * * * * * * * * * = * = * = * = * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    
    Load Jcms to Genesis 8 Female Eyelashes (0 morphs)
    Jcms loaded in 5.4 seconds
    Load Flexions to Genesis 8 Female Mesh (14 morphs)
     * * * * * * * * * * * * * *
    
    Load Flexions to Genesis 8 Female Eyelashes (0 morphs)
    Flexions loaded in 0.8 seconds
    Transfer to geografts
    Transfer morphs Genesis 8 Female Mesh => Golden Palace Gens
     0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + * * * * * * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + - - - - 0 0
    Morphs transferred in 5.3 seconds
    Transfer to clothes
    Transfer morphs Genesis 8 Female Mesh => G8F Swimsuit 26
     + + + + + + + + + + 0 0 + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 - + 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + + + + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + 0 0 - - 0 0
    Transfer morphs Genesis 8 Female Mesh => V Neck Dress Necklace
     + + + + 0 0 0 0 0 0 0 0 0 - - + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0
    Transfer morphs Genesis 8 Female Mesh => Car Wash Girl Shoes
     0 0 0 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 * * + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * * 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    Morphs transferred in 13.0 seconds
    Transfer to face meshes
    Transfer morphs Genesis 8 Female Mesh => Genesis 8 Female Eyelashes
     + 0 0 0 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 + + + + + + + + + + + - + + + - - + + - - + + + + + + - + - + - 0 0 0 0 0 0 0 - 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 + + - - + - + 0 + - - + 0 0 0 - + - 0 - 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 - 0 + + + + + + - - + + + + + + + + 0 0 0 0 0 0 - 0 0 - - 0 - 0 0 0 - + + 0 0 + + 0 + + 0 0 0 0 0 + + 0 0 + + + + + + + + + + + + + + + + + + + + + + + + + + 0 0 0 0 0 - - - - - 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    Transfer morphs Genesis 8 Female Mesh => AshlynBrows
     + 0 0 0 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 0 0 0 0 0 0 0 0 + - - 0 0 0 0 0 0 0 0 + 0 0 0 - + - - + + + 0 + + + + + 0 + 0 0 + + + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 + + + 0 + 0 + 0 0 - 0 + 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 + + + + + + 0 0 + + + + - - + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 0 0 0 0 + + 0 0 0 0 0 + + 0 0 0 0 0 - - 0 0 + - 0 0 0 - - 0 - + - + + + + + + + + 0 0 0 0 0 - - - - - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    Morphs transferred in 110.5 seconds
    Make all bones posable
    WARN (bke.object): C:\Users\blender\git\blender-v410\blender.git\source\blender\blenkernel\intern\object.cc:3065 ob_parbone: Parent Bone: 'head(drv)' for Object: 'Rings RHS' doesn't exist
    WARN (bke.object): C:\Users\blender\git\blender-v410\blender.git\source\blender\blenkernel\intern\object.cc:3065 ob_parbone: Parent Bone: 'head(drv)' for Object: 'Rings LHS' doesn't exist
    Make All Bones Posable completed in 5.7 seconds
    File E:\My DAZ3D Library\Scenes\testpiercingg8f.duf loaded in 328.564 seconds
    

  48. Balkazzaar reporter

    @Padone

    I downloaded the latest commit, updated the blender side, updated the daz side of the scripts (both clean installs)

    In the above statement, i did do that. Did re-install on the daz export script and the blender size and re-export, the scene file.

    I saved all root paths again.

    Duplicate geometry definition:
      <Geometry /data/daz%203d/genesis%208/female/genesis8female.dsf#geometry Genesis8Female ['geometry-4', 'geometry-1']>
    Material "Face_Eye Mask" not found in geometry Genesis8Female
    Ignore <Instance Tonemapper%20Options-1 L:Tonemapper Options 0 N: Tonemapper Options P: None R: None>
    Ignore <Instance Environment%20Options-1 L:Environment Options 0 N: Environment Options P: None R: None>
    Remove UV layer Default UVs
    File "E:\My PC\My DAZ3D Library\Scenes\testpiercingg8f.duf" loaded in 197.457 seconds
    Draw environment 0
    Draw Dome turned off
    WARN (bpy.rna): C:\Users\blender\git\blender-v410\blender.git\source\blender\python\intern\bpy_rna.cc:1366 pyrna_enum_to_py: current value '0' matches no enum in 'Scene', 'Scene', 'DazMorphCatsContent'
    WARN (bpy.rna): C:\Users\blender\git\blender-v410\blender.git\source\blender\python\intern\bpy_rna.cc:1366 pyrna_enum_to_py: current value '0' matches no enum in 'Scene', 'Scene', 'DazMorphCatsContent'
    
    Some assets were not found. Check that all DAZ root paths have been set up correctly.
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupr/rshldrbend_ctrlmd_n_zrotate_40.dsf
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupl/lshldrbend_ctrlmd_n_zrotate_n40.dsf
      /data/daz 3d/genesis 8/female/morphs/k.h. image studio/ultima/ultimate natural bend morphs for victoria 8.dsf
    Unsupported or partially supported shaders found:
      support/DAZ/Uber/shaderDefinitions/surface/omUberSurfaceDef.dse
      V3D Tanned Skins G8
      Cast Iron
    

    Regarding the above errors in the console, i will try to explain one or few errors at a time.

    The below errors for example, i dont even have those folders in my DAZ library. Why is the scene file storing dead references?

    Some assets were not found. Check that all DAZ root paths have been set up correctly.
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupr/rshldrbend_ctrlmd_n_zrotate_40.dsf
      /data/daz 3d/genesis 8/female/morphs/g8 female george data/deepsea/george/jcms/jcmgeorgeshoulderupl/lshldrbend_ctrlmd_n_zrotate_n40.dsf
      /data/daz 3d/genesis 8/female/morphs/k.h. image studio/ultima/ultimate natural bend morphs for victoria 8.dsf
    

    Unsupported or partially supported shaders found:
      support/DAZ/Uber/shaderDefinitions/surface/omUberSurfaceDef.dse
      V3D Tanned Skins G8
      Cast Iron
    

    As for the above errors, i checked the Runtime/Textures folder and also Runtime/Support folder and cannot even find these files anywhere in my library after also doing an entire library search.

    Also, what do the below errors even mean? Face_eye_mask? I do not even know where its finding all this?

    Building objects...
    Duplicate geometry definition:
      <Geometry /data/daz%203d/genesis%208/female/genesis8female.dsf#geometry Genesis8Female ['geometry-4', 'geometry-1']>
    Material "Face_Eye Mask" not found in geometry Genesis8Female
    Ignore <Instance Tonemapper%20Options-1 L:Tonemapper Options 0 N: Tonemapper Options P: None R: None>
    Ignore <Instance Environment%20Options-1 L:Environment Options 0 N: Environment Options P: None R: None>
    Remove UV layer Default UVs
    File "E:\My PC\My DAZ3D Library\Scenes\testpiercingg8f.duf" loaded in 197.457 seconds
    

    I swear, i have followed the instructions to a T. After saving root paths, i even opened the daz importer menu and loaded all json file to load all root paths for the blender side of things.

    Below is my import-daz-paths.json file and the daz importer global settings. please tell me if something is missing or i am doing wrong.

    I am using Windows 10 and Blender 4.1

    Does that help in anyway?

    How can the same scene run in your machines and then throw the same errors again with the updated code? i am so done and frustrated with this.

  49. Alessandro Padovani

    It’s the duplicate geometry that seems most interesting. If you use daz connect you may have duplicated content there, in this case I’m not sure how the addon handles this. You better wait for Thomas on monday who may have some ideas about.

  50. Balkazzaar reporter

    @Padone

    CC:@Thomas Larsson

    That would actually make a lot of sense.

    It may be the one thing different between your setup and mine.

    Whenever i open any DAZ scene or create a new G8F character, i get the Duplicate Formula message and then the scene loads.

    But i am so damn frustrated as to why, the test scene works for you guys and not me. I swear, i have not made a single change to the scene file.

  51. Alessandro Padovani

    @Balkazar There’s a fix in #2101 for parented bones, that may be your case too.

    In any case the issue with rigid followers is fixed here. The errors you get in the console are about the daz content folders. There’s some users having a massive daz library spread across a lot of content folders mixed between dim and connect, in this situation the addon is prone to be confused.

    The best way to work with blender is to use a single content folder where you only install the assets you need for the current project. Then when you change the project you change the content folder. Indeed this is also the best way for daz studio since it speeds up and simplifies things a lot, as daz studio itself often has issues with a large database. Personally I work this way and this is essentially the solution to your errors. Unless @Thomas has other ideas.

  52. Balkazzaar reporter

    @Alessandro Padovani

    My DAZ library used to be massive. When i say massive, even loading a basic G8F figure took 45 minutes. It was nearly a TB.

    After several years of iterations, i have rebuilt my library from scratch which has only the absolute necessary files and addons i need for DAZ. Now loading a basic G8F takes 2 to 3 mins max. My library is not massive anymore.

    Keeping a separate folder for each project like you ask is very much tedious and counterproductive and defeats the purpose of the plugin.

  53. Alessandro Padovani

    I’m afraid there’s no other way to try and keep the content folder clean and free of errors. Unfortunately any odd asset installed can easily corrupt one or more base figures, and the more assets you have the harder it is to find out the culprit. This is the same in daz studio. Though admittedly the addon may be more “sensible” to errors due to its simplified management of the content folder.

    If there’s nothing to add, since @Thomas has no additional clues and rigid followers are fixed, I’d close as resolved.

  54. Balkazzaar reporter

    @Diffeomorphic

    Please tell me there is some solution to this issue.

    Or will this plugin’s purpose be to import only basic or minimalistic models?

    All i added were piercings from one asset.

    Does not make sense to mark it as resolved.

  55. Alessandro Padovani

    While I understand your need for a solution, this is an error in your daz content folder, not a bug in the addon. Your test scene will work fine if you reinstall the assets in a clean content folder. It works for us.

    Anyway I’ll wait for a reasonable time a reply by @Thomas, before closing. Usually when Thomas doesn’t answer it means he’s not interested.

  56. Log in to comment