Missing textures with "Merge Shell Materials"

Issue #790 resolved
VoidStaff created an issue

Hello,

The issue I am encountering is that the imported models from DAZ with the "Merge Shell Materials" option enabled import partially without the body texture (see attachment). Switching "Merge Shell Materials" to off does repair that issue, however I lose all shell effects ie. body gloss, blush, bodypaints etc.


DAZ render of the character:


Blender render with "Merge Shell Materials" off. Body texture present, but no shell effects.

Blender render with "Merge Shell Materials" turned on. Shell effects present, but partially missing body textures.


It’s worth noting that this issue does appear only on some characters. For example the other char in the scene is perfectly fine with "Merge Shell Materials" on.

Any possible fixes for that?

Thanks,

VoidStaff

Comments (28)

  1. Thomas Larsson repo owner

    The Merge Shell Materials option is for debugging only and should always be turned on, otherwise the shell information is absent. Apart from that it is hard to tell what happened without knowing which shell it is. Perhaps some transparency map is missing or has the wrong UVs.

    Could you make a screenshot of the shell node in the torso material, together with the uv map node that goes into it, like this:

    And also what’s inside the shell node group. In particular which texture node is mixed with transparency.

  2. Alessandro Padovani

    Can you provide a link to the product you’re using ? I mean the commercial page, or the distribution page if it’s free.

  3. VoidStaff reporter

    As for the Thomas request, here is the screenshot of the nodes. For some reason I can’t see the default Genesis 8 Female shell, so I can’t see it’s group. I might be looking in the wrong place though.

  4. Alessandro Padovani

    From your pictures it seems you miss the base female uv for some reason. Couple questions please.

    1. If I understand correctly you use Alessiah HD + Ash Nuin + golden palace + ultimate moisture. The body paints are those included in the figures, and each one uses her own body paint. Is that right ?
    2. Do you export HD or base resolution ?
    3. Do you have the same issue both with HD and base resolution ?
    4. Do you have the same issue if you remove golden palace and ultimate moisture ?
    5. Do you have the same issue both with Alessiah and Ash Nuin ?
    6. I see that’s blender 3.0, do you have the same issue with blender 2.93 ?

  5. VoidStaff reporter

    Alessandro,

    Answering your questions,

    1. I use either Alessiah HD or Ash Nuin. So it would be Alessiah HD+ golden palace + ultimate moisture or Ash Nuin+ golden palace + ultimate moisture. Didn’t use both chars in the same scene.
    2. I export base resolution. I did try HD and had some strange artifacts on the body texture (multiple small scale textures over entire body).
    3. As noted above.
    4. Correct
    5. Correct, even the same body area is missing the texture.
    6. Yes, both on 3.0 on my desktop and on laptop where I use 2.93.

  6. Alessandro Padovani

    That’s odd. I mean your answer 4. Without golden palace it should work.

    Just tested and it works apart an issue with golden palace. That is, the shell fix script in golden palace doesn’t work with G81 and I have to hide the body and head surfaces myself in the shell. Apart that everything works fine here. Test scene included ash.duf, that’s Hash + moisture + golden palace.

    note for Thomas. In daz studio the shell is rendered correctly because in the shell some surfaces are not hidden, but the face groups are. That is, daz studio makes the shell visibility per face group, while blender makes the shell visibility per surface. Usually this is not an issue since both the face groups and the surfaces are hidden. I guess this can’t be fixed since we get shells per material, so may be a note in the docs could make everyone aware of the issue and how to fix it if this happens.

    Below the test scene rendered in cycles.

  7. VoidStaff reporter

    Alessandro,

    I can’t recall the exact way I was exporting the file in case `4. In that case I will attempt to do it the way you noted. Will update once I get results. Thank you for possible fix.

  8. Thomas Larsson repo owner

    How did this work in DS? When I try to add GP to a G8.1F character I cannot copy materials, and that is even without adding a shell. I get an error message that no G8F character is selected, so the GP mesh is grey even in DS. I use GP v2, perhaps there is a newer version that knows about G8.1.

  9. Alessandro Padovani

    Yes you have to use the latest version that supports G81. It’s in a separate folder.

    There’s something I don’t understand though. I tried to uncheck the torso material in GP for G8 so to get the shell in blender. But the shell for torso is not generated. So I guess I miss something about shells, does diffeo actually check for face groups too ? And if so why it works for G8 but not for G81 ?

    edit. I got the answer. The G81 shell gets 50% opacity in the body and head materials, while all the other unused shell materials get 0% opacity. That’s why body and head are generated in blender. Then daz doesn’t render them because of the face groups as explained above.

    So to reproduce the “bug“ with G8F:

    1. in daz studio load GP for G8F
    2. in the GP shell make the face material visible and 100% opaque, daz studio will not render it anyway because the face groups for the face material are all invisible.
    3. export to blender and render, the shell is imported and rendered white in blender, because in blender shells are associated to materials and face groups are ignored (we don’t have a geometry for the shell).

    Test scene included gp.duf that's G8F + GP with the steps above, it renders fine in daz studio but in blender the face is white.

    note. Please note that, if I understand it correctly, we have no way to do the same as daz studio. That is, we can’t hide just a few groups for a shell, because in blender shells are associated to materials. So this is not really a bug but rather a design limitation. Again usually there are no issues since most shells in daz assets are intended for materials anyway.

  10. Thomas Larsson repo owner

    Yes, I can confirm that this is how things work. Perhaps one could make some workaround, e.g. don’t generate the shell node if all faces using the material belong to hidden face groups, but this could easily introduce new bugs and I don’t want to go down that road. Once you know what the problem is it is easy to fix, either in DS (disable shell materials) or in Blender (set Influence = 0 for the shell node).

  11. Alessandro Padovani

    If VoidStaff has nothing to add we may mark as resolved. Then a note in the docs about this would be useful to be aware of the limitation and how to work around it.

  12. VoidStaff reporter

    Sorry for the late reply, but I’ve been a little busy,

    turning visibility off does fix the issue indeed for the Ash nuin, however Alessiah still has this strange looking missing bodypaint. The gloss is visible along with other skin effects.

  13. VoidStaff reporter

    You can see the gloss is not missing. However the bodypaint is.

    This is result with "Merge Shell Materials" on, body surface visibility of Golden Palace is set to “off” exported to blender 2.93. It does work fine for the Ash Nuin as I mentioned previously.

  14. Alessandro Padovani

    I believe I got it.

    As for Alessiah it seems the plugin gets confused by the texture names. As example “Alessiah_BaseColor.001“ is loaded in the makeup instead of “Alessiah_BeseColor.1003“. If I look at the textures there are a lot of them with the same name and .xxx as suffix so may be the plugin gets confused by the .xxx suffix I don’t know.

    Please Thomas let me know if this is enough information for you to look at something, otherwise I can try to track it down to a minimum test scene to reproduce the issue but this may take a while.

    update. important. I fear this may be a blender bug. That is, if I try to load by hand the missing texture “Alessiah_BeseColor.1003.jpg“ then blender doesn’t allow me to load the texture. But if I rename the texture to “Alessiah_BeseColor_1003.jpg“ then blender loads it just fine. May be in this case there’s some conflict between the texture name and the numeric suffix that blender does for duplicate items.

    update. possible solution. If I go to the texture properties and I change the property name to “Alessiah_BeseColor_1003“ then I can load the texture just fine. So it seems this is a conflict in the property name rather than in the texture name itself. So Thomas may be you could change the property names with underscores instead of dots when there are dots in the file names ?

  15. Thomas Larsson repo owner

    The plugin now calls bpy.path.clean_name when the image is loaded. That might do the trick.

  16. VoidStaff reporter

    Nothing to add, thank you very much for provided assistance. I highly appreciate your effort.

  17. Log in to comment