Is there a way to make the Vellus Geo Shell work in Blender?

Issue #1656 resolved
CookItOff created an issue

I know most got shells work in Blender but for some reason I can’t get the Vellus Geo Shell to work. It applies into the material chain when using Extended but the glancing angles do not show villus hairs like inside of DAZ. Not sure if this is a limitation in Blender or that this shell is used a little differently than normal.

Here is the product page for reference: https://www.daz3d.com/vellus-horizon-20-for-genesis-9

Also including the Quick Guide PDF:

Comments (16)

  1. Alessandro Padovani

    daz studio 4.21.0.5, blender 3.6.1, diffeomorphic 1.7.1.1703

    Ok I believe I got it.

    The vellus is basically a translucent shell with a displacement map, so it relies on the true shell geometry for displacement and offset. In this case we can't use a material shell as usual but we need a geonode shell that will use true geometry.

    Another important factor is the vellus is using a very high level of subdivision for the displacement, that is not good for blender, so we have to use "displacement and bump" as displacement method that will approximate the fine details with a bump map.

    steps:

    1. set geonodes as shell method in the global settings
    2. do not resize the textures or you will lose the displacement details
    3. import as bsdf for best match with iray
    4. in the shell material set the displacement method to "displacement and bump"

    note. displacement mode for @Thomas Larsson . We may change the default displacement method to "displacement and bump" instead of "displacement only". Reason is, daz studio has subdivision levels per material, and also uses simple subdivision for displacement. While blender has subdivision per object, and we can't use the simple subdivision together with catmull. So, though it is possible, it is very unconvenient in blender to use the maximum level of subdivision as daz studio that could be 5 or more for displacement, instead we can use "displacement and bump" that will approximate the fine details with a bump map.

    To be precise, as reported in the blender docs, “displacement and bump“ takes extra memory to generate the bump map, and it’s not necessary if the subdivision level is as required. So we may limit “displacement and bump“ to those cases where daz studio uses a high level of subdivision for displacement.

    https://docs.blender.org/manual/en/latest/render/materials/components/displacement.html

    # displacement mode
    if daz max displacement subdivision > global settings max subdivision
        displacement mode = "displacement and bump"
    else
        displacement mode = "displacement only"
    

  2. CookItOff reporter

    Thanks for testing. This works with Non-HD imports but with HD imports the shell doesn't build a multires modifier. Work around to use HD imports is to add a Sub-D modifier to the shell and then shrink wrap the shell to the OG mesh with zero offset .

    I like your last image, it really adds some realism to the skin.

    I like the look of the geo shell vellus hairs as it covers the entire body, like hairs coming from each pore. And it also seems to be NOT as expensive vs the mesh vellus hairs that only cover portions of the body.

    Thanks!

  3. Alessandro Padovani

    The shell is a geonode, as I understand it the geometry is copied from the main mesh, you will not see HD in the viewport unless you activate the multires viewport subdivision, but it should work for rendering, no need to add subd or shrinkwrap.

  4. CookItOff reporter

    Great! I’m not too up on how y’all are using geo nodes with the Das imports, yet. I did notice that the shell won’t take any FACT morphs (?) I can’t get the shell to move with facial expressions, at the moment. But I’m working through how the GN and Geo Shells work together at this point so correct me if I’m wrong.

  5. Alessandro Padovani

    daz studio 4.21.0.5, blender 3.6.1, diffeomorphic 1.7.1.1703

    bug. “make bones posable” doesn’t work with multires geonode shells

    You’re right, the culprit seems to be “make bones posable“ that doesn’t work with multires geonode shells. Please note that with base resolution everything works fine so this is a bug specifically for multires.

    If we don’t check “make bones posable“ then the geonode shell works fine with multires.

    steps:

    1. in daz studio load the test scene shell.duf and export as HD
    2. in blender set geonode shells in the global settings then import shell.duf
    3. import expressions with “make bones posable“, it works fine without

  6. CookItOff reporter

    Awesome find. I was many, many, many, steps away from diagnosing “Make All Bones Possible” as the culprit. And I use that on pretty much every import so good to know. You the man!

  7. Alessandro Padovani

    update. solution for @Thomas Larsson

    The bug seems to be that the geonode parameters are not updated for multires. If we update the geonode parameters by hand then everything works fine, even with “bones posable“. Then I have no idea what “bones posable“ has to do with the geonode parameters, but I know very little of geonodes.

  8. Thomas Larsson repo owner

    Both issues should be fixed:

    1. Displacement method = displacement and bump for materials that need it.
    2. The shell geometry is set to the HD object, if and HD object with a multires modifier exists.

    Perhaps we should use true HD objects as shell geometry too. However, I expect that that would be very expensive, and the user can easily switch if he wants to.

  9. Alessandro Padovani

    bug. displacement mode. Nope, sorry there’s a bug.

    We have to distinguish the mesh subdivision from the displacement subdivision in daz studio. That is, “displacement and bump” is to be used for the displacement subdivision, not for the mesh subdivision, because the extra bump map will take into account the displacement, not the geometry. Please note that in the pseudo code below we look at the displacement subdivision. Let me know if something is not clear I’ll try to explain better.

    # displacement mode
    if daz max displacement subdivision > global settings max subdivision
        displacement mode = "displacement and bump"
    else
        displacement mode = "displacement only"
    

  10. Log in to comment