I’ve got multiple LODs of a skinned character, which, for historical reasons, were built in separate files. I now want to move them all to being in a single file.
They’ve got identical skeletons, but in order to store their skinning properly, there’s a copy of that skeleton in each file. Which means that if I just merge the files, I end up with multiple copies of the skeleton, and I’d like to avoid that.
Is there some way to take the different skinned meshes and tell them all to use the same copy of the skeleton?
I’ve tried using the SkinUtilities to extract the skin data, trash the extra skeletons, then rebind using the one remaining copy of the skeleton, but this seems to result in skins that are offset from the skeleton and don’t deform properly.
The offset is one problem in particular that you should be worried about. In the Skin modifier under “Advanced Settings” there is a checkbox for “Alway Deform”. If you put your skeleton into bind pose and toggle that off, the mesh should not move. Alternatively, you could do the same test but toggling off the modifier. If the mesh does shift then you may have some bad offset transform in there. So, regardless of how you try to reapply your skin if you have an offset in your existing version of skin you may not get exactly what you are expecting if you try to bind the same mesh again.
As for the skinweighting if your skeleton is consistent, you should be able to write a maxscript that pulls the skinweights off all the verts and save that off with the bones each vert is weighted to for each mesh. Then apply the skin modifier on the mesh and load the vertexweights file you saved out, that way you will get precisely the same skin weighting you had before. There may be some existing scripts on ScriptSpot.com that can do skin weight saving and loading.
You could just use Max’s built in skin save/load from the skin modifier panel. Also copy/pasting the skin modifier from one meshes stack to another, is a good way to bind a mesh to a new skeleton fast. The skin modifier of the skeleton you bind everything to should be skinned to every possible influence though, for smooth sailing.
If all else fails, and the other meshes are just lower resolution of the higher one, you can just use Skin Wrap, or even Skin Utilities, to get the skin information from the highest resolution LOD.
Skin Wrapping is great to automatically skin lower LODs without having to re-do all weighting from scratch.
This might sound crazy and it’s been ages since I did anything with characters, so this might be nonsense. But what happens if you just try to merge the LOD skin into the master scene without the bones? Does the skin modifier pick up on the bones in the new scene as they’ll be called the same thing as the original scene, or does it just break?