Forum: Autodesk Maya
Posted By: gfk
Post Time: 07 July 2017 at 09:07 PM
Text:
Whoops: two n-gons in a mesh with blend shapes and skinning.* This was a bit of a puzzle and I had to think about it for a while, so I thought I'd describe what I ended up doing.* This is nothing new, but I don't remember ever seeing it described.* If anyone has simpler, less error-prone ways to do this sort of thing, they'd be great to hear.
- Put the mesh in bind pose, and make really sure it's in bind pose.* I do this by turning off "intermediate mesh" on the base mesh, putting it in wireframe and making sure the overlap is exact.* If there are edges near each other that aren't exactly the same, something's off.* (I need to write a script to do this for me.)
- Duplicate the mesh, and bind the exact same joints to it.* (I graphed the original skinCluster in the node editor and then selected them there, but there's probably something three radial menu levels deep that can do this automatically.)* Use "selected joints" to make sure unselected joints don't get mixed in, and make sure "remove unused influences" and "maintain max influences" are off.* The skin method doesn't matter.
- Copy the skin from the original mesh to this one, using "one to one" influence association.* Spend some time making sure it actually copied correctly, or you'll have another problem to fix later.
- (This is where things become destructive, but if you're even trying to do this, you know to increment-and-save obsessively.)
- Delete the skinCluster on the original.* We've backed up the skinning on a separate mesh.* The mesh still has its blendShape node.
Now, make whatever topology changes are needed.
- Deform > Edit Blend Shape > Bake Topology To Targets.* The changes are moved down to the base mesh.* Sanity check this, but this always works for me, even if I'm making complicated changes to the mesh.* I wish everything in Maya worked as well.
- Repeat the initial steps to bind the skin to this mesh and copy the weights back from the backup to this mesh.
I really need a mesh/rig checking tool, to check all those things you really want to know about early.* Tell me if the base mesh is asymmetric (both in world space and topologically), if the skeleton positions or joint orientations are asymmetric, if there are N-gons, asymmetric UVs (depending on the UV setup, eg. for mirrored or repeat texture UVs), overlapping UVs, and anything that the mesh cleanup tool would flag.* Tell me if there are mismatched winding orders in the mesh (this is nasty and really hard to fix).* More than anything, tell me if the mesh isn't in bind pose (or preferred angles)--it's way too easy to have a joint get translated or rotated by 0.001 when you were just trying to focus the window and have a cleanup job later.* These things can cause serious headaches if they go unnoticed and they're not that hard to check automatically.
Posted By: gfk
Post Time: 07 July 2017 at 09:07 PM
Text:
Whoops: two n-gons in a mesh with blend shapes and skinning.* This was a bit of a puzzle and I had to think about it for a while, so I thought I'd describe what I ended up doing.* This is nothing new, but I don't remember ever seeing it described.* If anyone has simpler, less error-prone ways to do this sort of thing, they'd be great to hear.
- Put the mesh in bind pose, and make really sure it's in bind pose.* I do this by turning off "intermediate mesh" on the base mesh, putting it in wireframe and making sure the overlap is exact.* If there are edges near each other that aren't exactly the same, something's off.* (I need to write a script to do this for me.)
- Duplicate the mesh, and bind the exact same joints to it.* (I graphed the original skinCluster in the node editor and then selected them there, but there's probably something three radial menu levels deep that can do this automatically.)* Use "selected joints" to make sure unselected joints don't get mixed in, and make sure "remove unused influences" and "maintain max influences" are off.* The skin method doesn't matter.
- Copy the skin from the original mesh to this one, using "one to one" influence association.* Spend some time making sure it actually copied correctly, or you'll have another problem to fix later.
- (This is where things become destructive, but if you're even trying to do this, you know to increment-and-save obsessively.)
- Delete the skinCluster on the original.* We've backed up the skinning on a separate mesh.* The mesh still has its blendShape node.
Now, make whatever topology changes are needed.
- Deform > Edit Blend Shape > Bake Topology To Targets.* The changes are moved down to the base mesh.* Sanity check this, but this always works for me, even if I'm making complicated changes to the mesh.* I wish everything in Maya worked as well.
- Repeat the initial steps to bind the skin to this mesh and copy the weights back from the backup to this mesh.
I really need a mesh/rig checking tool, to check all those things you really want to know about early.* Tell me if the base mesh is asymmetric (both in world space and topologically), if the skeleton positions or joint orientations are asymmetric, if there are N-gons, asymmetric UVs (depending on the UV setup, eg. for mirrored or repeat texture UVs), overlapping UVs, and anything that the mesh cleanup tool would flag.* Tell me if there are mismatched winding orders in the mesh (this is nasty and really hard to fix).* More than anything, tell me if the mesh isn't in bind pose (or preferred angles)--it's way too easy to have a joint get translated or rotated by 0.001 when you were just trying to focus the window and have a cleanup job later.* These things can cause serious headaches if they go unnoticed and they're not that hard to check automatically.