Hezagon and OpenSubdiv

A problem that I have long had is that I export all of my DS assets to Blender, but there are subtle differences in the way that DS and Blender implement OpenSubdiv that creates rather small but unacceptable differences in the model in Blender (I think it has to do with edge weighting). As a result, I have to export heavy, already subdivided models from DS to Blender in order to maintain fidelity.

That in and of itself would not be so bad, but it makes creating morphs in Blender rather difficult because the subd cage I am morphing in Blender and subdividing does not look the same as the morph, once it is applied and subdivided in DS.

But I was wondering if learning just enough Hexagon for creating morphs might solve this problem? Does anyone know if DS and Hexagon produce vertex exact results when subd is applied to the same cage?

Thanks!

Comments

  • Hi,

    I would first ask you to check you sub-d settings in Blender. By default in Blender Sub-d, it will place vertex at the surface based on infinite levels of subdivision (smoothest possible shape). So in Blender sub-d setting, disable "Use limit surface" (drop down advanced setting). That will give you the same result as in DS.

  • is this like smoothing groups and edge creases?

    I noticed long ago DAZ respects both from Carrara and in all likelihood then from Hexagon too whereas it doesn't from Blender.

  • Hi,

    I would first ask you to check you sub-d settings in Blender. By default in Blender Sub-d, it will place vertex at the surface based on infinite levels of subdivision (smoothest possible shape). So in Blender sub-d setting, disable "Use limit surface" (drop down advanced setting). That will give you the same result as in DS.

    Thanks for your reply. I was very happy when they added that feature, a year or two ago. It improves the appearance, approaching closer to the results in DS, but it is still not perfect. For regions of high curvature like the lips surface, it is still noticeable.
  • is this like smoothing groups and edge creases?

    I noticed long ago DAZ respects both from Carrara and in all likelihood then from Hexagon too whereas it doesn't from Blender.

    Thank you, Wendy, you may have solved my ultimate problem. I need to do an experiment: Export an OBJ, which does support smoothing groups, and subdivide that instead. Sagan doesn't currently support the, and maybe that's the problem. Sometimes the answer is right in front of me but I need someone else to point it out because I've beaten my head against it for so long and I'm fixating. I really, really hope this is the problem, and thanks again.
  • TheMysteryIsThePointTheMysteryIsThePoint Posts: 2,959
    edited December 2021

    stem_athome said:

    Hi,

    I would first ask you to check you sub-d settings in Blender. By default in Blender Sub-d, it will place vertex at the surface based on infinite levels of subdivision (smoothest possible shape). So in Blender sub-d setting, disable "Use limit surface" (drop down advanced setting). That will give you the same result as in DS.

    So, I think your advice, together with Wendy's might actually do the trick. Thanks again.

    Edit: Well, that elation was short lived. The "smoothing" in the OBJ spec is referring to normal smoothing, not edge weights. So I'll have to figure out how to get that info from the DS SDK. Without even checking, I am willing to bet anyone right now that it is another thing that is poorly documented, or not documented at all. Gonna give it a try anyway because I really think this could be the cause of the differences in the models and it'd be really nice to export the subd cage, which is super lightweight and get an exact match in Blender.

    Post edited by TheMysteryIsThePoint on
  • Hi,

    I had a search.

    You may want to try the "Diffeomorphic" (daz to blender) plugin. There was a thread concerning the problem you mention:- https://bitbucket.org/Diffeomorphic/import_daz/issues/593/subdivision-algorithm

     

    That may help.

  • stem_athome said:

    Hi,

    I had a search.

    You may want to try the "Diffeomorphic" (daz to blender) plugin. There was a thread concerning the problem you mention:- https://bitbucket.org/Diffeomorphic/import_daz/issues/593/subdivision-algorithm

     

    That may help.

    Thanks @stem_athome

    The discussion you linked to seems to reinforce what the others have caused me to suspect. I scoured the C++ SDK for mentions of edge weights, anf after finding nothing, I thought it might be another case (there seem to be more and more of these cases) of something that is absent from the SDK API but present in the DSON. Good 'ol @Padone had found it in the Geometry Editor and in the DSON. I swear I want to hug that guy :)

    Sagan reads all the nodes' .duf files anyway to do the materials, so I think I can just grab all the edge weights and generate a post-process script to apply them once the Alembic is imported in Blender.

    So thank you, and everyone else... I'll try this when I get a moment.

  • Of course to simply keep an edge one could add those tessellation lines in with Hexagon. That way the model doesn't get any heavier than it has to be for the edges.

  • Catherine3678ab said:

    Of course to simply keep an edge one could add those tessellation lines in with Hexagon. That way the model doesn't get any heavier than it has to be for the edges.

    Thanks for your input, Catherine.

    It's hard to explain; the interesting part is that in Blender the surface shrinks away from the cage much more than it does in DS, even in areas that are relatively flat like the cheek or the middle of the thighs.

    From (out of desperation) looking at the OpenSubdiv spec, I think the issue is that OpenSubdiv has additional configuration options that niether DS nor Blender expose in the GUI, and these hidden parameters must be hardcoded differently in the two softwares. I'm going to crack open the Blender source code and just start trying all the permutations of these options to try to get it to match DS more closely.

    I really wish I weren't so obsessive about small details like this, because in an absolute sense, it is hardly noticeable but to me it's like a needle in my eye.

  • All the best with that. It's been my observation that no 2 programs that have anything to do with 3D, read each other's files in the same manner. Communication problems between programs can make for some quirky end results.

Sign In or Register to comment.