I was wondering how you guys handle transfer of skinned geometry between max files? I don’t have much experience with it, but I’ve been using the geometry + the base skeleton in each max file and saving out all the geometry and skindata via skinUtils to a separate file that I can import and reskin into whatever file.
I’m curious as to other ways this could be handled, though?
is there maybe a way to transfer the skinned geo without having to create skindata within the max file or something beforehand? The lasting issue is that I don’t want to merge in a new iteration of the skeleton, but I don’t want to lose the skin information in the skin modifier by not including it in the merge.
Using Save/Load in the advanced rollout of skin maybe ?
on load you can decide to weight either by VertexID or Vertex position
so this procedure adopts quite good for changed geometry
copying/pasting skin modifier works quite well too, this is even true when you copy modifier-load new scene-paste modifier onto new loaded geometry ASFAIK. If the topology is different skin tries to weight new vertices automatically.
If this is not enough - one can load the weights via. the first procedure…
the above mentioned methods work well, if the geo is the same. any changes in the geo won’t allow u to tranfer it smoothly. Try using skin wrap modifier. It doesn’t take details such as vert no. into consideration. You can transfer any geo skin onto another without any fuss. If the geo is the same/almost keep the face limit to one, and falloff/dist infl to min. Once u have converted to skin, u can delete the skin wrap modifier below the new skin modifier. Skinning isn’t fun if u have to skin many similar geo again n again, without it
I thought about saving out a .env file for each piece of geometry, but that requires me to make a folder for thousands of mysterious .env files on people’s directories and still requires me to go into hundreds of max files to save them out and write something to add the skin modifier and search for the .env file. I got lazy haha. So I figured it runs into the same main limitation that I have using skindata.
the problem is I’m trying to merge 2 scenes together. I guess my main question is if there is any way to preserve the skin modifier information if you’re just merging new geometry from the same named skeleton as in the current file.
so say if I had arm.max and I had chest.max and I’m trying to merge the arm from arm.max into chest.max while retaining the skin.
I was thinking of going similar to that .env idea and write something to read skin information from the geometry files for the engine onto a new skin modifier on any geometry that’s merged from another file, but I hope there’s a more elegant solution than that :D:
I would use skinwrap. It works really well, esp. when you are needing to copy weights from a mesh to one of similar geo. Here’s a sample workflow that I used heavily on SR2 for all the player’s customization items, all via maxscript:
merge in all skinned meshes
snapshot each one and attach the snapshots to assemble your target mesh
add skinwrap to target mesh
add skinned meshes from step one to the skinwrap list
tweak the skinwrap values till they look good to you (I recommend using face over vertex, but it depends on the situation)
convert to skin
delete the skinwrap modifier
Now you’ll have one mesh with the same vert weights as the merged meshes. The only area it may get sticky is if each skinned mesh that you merged in had verts in the same spot with differing weights.
Oh doh! I’ve been using these type of workflows within the same files, but didn’t think I could do it in a merged file without issues. In that case I guess I’ve been doing something fundamentally wrong.
I couldn’t get skinned geometry to merge correctly into another scene, so I figured you couldn’t do so at all.
Well this was a stupid question then! haha
I’ll just have to figure out how to merge the rig in without breaking any dependency or whatever’s happening, then.
“I’ll just have to figure out how to merge the rig in without breaking any dependency or whatever’s happening, then.”
M guessing that all the meshes are having different bone count. So, if I got this right, you have one rig, and diff max file for each geo. What u can do is 1. make all the geo with same no of bones, even if they don’t influence anything. That ways u won’t have to worry abot the storing the bone count data. Export script can take care of this later. 2. make a small script that opens all the files in a folder and saves the skin info into a destination folder. 3. Merge all the files(geo) in the scene. 4. Create a script that will load all the skin weight of the selected geo using, maybe, namin convention or something e.g. mesh_01 can have .env file name as mesh_01_skin. Of course u’ll hafta let the max know which folder it has to look for.
That shud do the trick, if I got ur issue correctly.