Home Technical Talk

Maya vertex normals changed after separating part of mesh

grand marshal polycounter
Offline / Send Message
Alex_J grand marshal polycounter
In Maya LT 2018, I separated the chest/head portion of this character. I didn't notice until testing in Unity, but as you can see the vertex normals appear to have changed. The result is that you get a faint but noticeable seam at the border, and it is more pronounced under sharper lighting. 

The normal map texture still displays correctly. I know it is possible to manually adjust vertex normals. But could I avoid this altogether by locking normals before separation? Or is there a tool for quickly reorienting the vertex normals? Why does this even happen in the first place? 

Thanks for any help.

Replies

  • sprunghunt
    Offline / Send Message
    sprunghunt polycounter
    For something simple like this you could just not use separate. Instead duplicate the mesh and delete the parts you don’t want on each mesh. 
  • coldside
    Offline / Send Message
    coldside polycounter lvl 10
    Here's a script I use all the time for what sprunghunt is suggesting:

    https://www.highend3d.com/maya/script/detachseparate-mel-for-maya
  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    Brilliant! This is the kind of solution that's too simple to realize at the end of a long day. For me anyway. 

    Thanks. I'll give that script a go as well. Always good to have another tool in the bucket.
  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    Just want to update with a problem I had. 

    So, I followed @sprunghunt 's advice, duplicated the mesh, deleted the unneeded parts, and the vert normals remain unchanged. Great. The problem was that, when copying the weight painting over, there is some minor inconsistencies. And so I ended up with some tearing at the seams, which was basically impossible to completely ameliorate, and with a naked human body, even a tiny tear is a no-go.

    It seems like it will be easier to fix the vertex normals after extraction rather than fuss with careful weight painting for a year. I know that in the full Maya version you have an editor where you can select vertices and assign exact number values with the weight painting, but in Maya LT I don't have the option. So, first I'll run the script provided to see if vert normal alteration can be avoided altogether, otherwise I'll just find out how to adjust the vert normals. No big deal. I'll update with final solution after I get back in town in a few weeks.
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    Doesn't locking the normals before performing the separate work? 
  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    No. If I lock normals and then do a separate, vertex normals all over the model get screwy and you end up with black splotches. This, from what I have read, is a bug Maya has had for awhile. To fix it, you unlock the normals and things pop back into place, but the new vertices at the seam are slightly different, as seen here : 

    So, I am going to look into two new methods. First, I am going to see if there is a way I can copy and paste vertex normals in Maya LT, or at least a way to quickly align the problem vertices with the good ones in a way that doesn't require clicking each one individually. 

    If that doesn't work, I'm going to check and see if there is a more precise way to copy skin weights. I think there is a tool called copy vertex weights, and I think that might be another option, assuming it does what it sounds like it does.
  • Alex_J
    Offline / Send Message
    Alex_J grand marshal polycounter
    Alright, that was fucking stressful but as usual, the issue was I made a mistake way earlier and now I was trying to do complex stuff to solve derivative errors from that mistake.

    It's kind of a lot to explain, but I'll try to do so simply so somebody else might avoid the same mistake:

    I rigged a human model, then after the fact remembered that i need to separate the head for modularity purposes. So I duplicated the entire mesh, removed the not-needed faces, then binded the resulting head mesh, and copied skin weights from the original mesh to the new "floating" head. Hopefully that makes sense without pictures.

    The problem is right in that workflow however. When I bound the floating head mesh to the skeleton, it cannot pick up all of the same influences. So even though I copied the skin weights, they aren't precisely the same. So the final solution is that i duplicate the entire original mesh twice, bind it, copy the weights from the original over to the two copies, and THEN, lastly, I remove the uneeded faces. This keeps all the influences precisely the same, and now there is no tearing at the seams. Simple enough, but if you dont get the order right, you'll end up digging trhough complex stuff like vertex normals to solve a simple order of operations issue. 

    Well, that's that. Another headache.  At least I learned a bit about vertex normals and what can be done with them.


Sign In or Register to comment.