After a couple hours of skinning, I realized I have some verts on my model that need to be merged. Is there a way to merge them now without messing anything up, or at least a reliable script that will save the weights that I already painted? I would hate to have to go all the way back.
i think skinwrap may be your friend. but its probably just easier to reskin if its a one time deal yo.
I should probably mention I’m working in maya. Thanks though!
yea unskin, fix, reskin and transfer weights…comet transfer weights tool in worldspace should do it.
Hamish McKenzie has a tool called ZooWeightSave that saves the weights on a per vert level so you can save the weights. change anything you want and reimport. It’s slow going if you have a heavy model, but it’s dead useful if you need to change the mesh. Just remember that after you Export and Import the weights you should use to tool to remove the weights so you’re scene will handle faster.
There’s also a ton of really good tools in there.
If I remember, its been a while since I’ve used Maya :(, isn’t there a wrap deformer that works similar to skin wrap? Isn’t under deform > create wrap? Also I thought there was a built in tool that will allow you to swap out skinned geo as its updated (At least in maya 7.0). Skin > Edit Smooth Skin > Substitute Geometry, but I’m guessing there are better tools out there.
Thanks a bunch guys.
You don’t need to save and reapply the weights. You can either use “Delete Non-Deformer History” (I’ve gotten horribly strange results using that) or this script I wrote called freshSkin.
Merge as many verts as you want on a weighted mesh, then run this:
[B]global proc freshSkin( string $obj )
{
string $bodyA = $obj;
// first delete bind pose //
string $bindPoses[] = `ls -type "dagPose"`;
if( `size $bindPoses` > 0 ) {
}
// get orig skin cluster and influences //
string $clusterA = `findRelatedSkinCluster $bodyA`;
if( $clusterA == "" ) return;
// duplicate //
string $dupe[] = `duplicate -rr $bodyA`;
$bodyB = $dupe[0];
// use same influences to bind dupe geom //
string $influences[] = `skinCluster -q -inf $bodyA`;
string $clusterB[] = `skinCluster -ibp -tsb -omi 0 $influences $bodyB`;
select -cl;
// now copy wieghts to new geom //
copySkinWeights -nm -ss $clusterA -ds $clusterB[0] -surfaceAssociation closestPoint -influenceAssociation oneToOne -influenceAssociation name ;
// clean up //
delete $bodyA;
rename $bodyB $bodyA;
}[/B]
It essentially just creates a duplicate and copies the skin weights to it. Then it deletes the original and the new one has none of the modeling history. It has solved so many ridiculous problems I’ve run into with maya skinning.
WARNING: If you combine/separate/boolean a mesh, this won’t work and you’ll lose your skin weights… but things like merging verts, splitting/collapsing edges, and uv editing are all trivial.
You can even add this guy here to run freshSkin on selected meshes or groups that contain meshes and you get a nice progress window.
[B]global proc freshSkinSel()
{
// get selection and filter out the polymeshes //
string $skins[] = filterExpand -sm 12
;
if( size $skins
== 0 ) error "You must select some bound geometry to create a fresh skin with.
";
// start progress window //
progressWindow -title "Creating Fresh Skins..." -progress 0 -status "Starting... " -isInterruptable false ;
// run fresh skin on all //
for( $obj in $skins ) {
if( `nodeType $obj`== "mesh" ) {
string $trans[] = `listRelatives -p $obj`;
$obj = $trans[0];
}
progressWindow -e -step 1 -max (`size $skins`) -status ( $obj + "..." );
freshSkin $obj;
}
progressWindow -endProgress;
print "Success! Fresh skins created!
";
}[/B]
Thank you kindly, sir. I will be using this script in the future!
You don’t a bloated toolset to do this.
Easiest way would be:
Go to bindPose and duplicate the mesh.
Do whatever topology modifications you want on the duplicate.
Make sure you’re still in bindPose, the smooth skin the modified mesh to your hierarchy.
Select the original mesh, then the duplicate and copy weights.
(edit)
For more complex changes (e.g. modifying the joint hierachy) I would reference in a duplicate of the scene and use this as a source for copying weights after any modifications. I have found that you need to make sure your joint hierarchies are labelled on both source and destination characters for cross hierarchy weights copying to work properly (use Label as 1st your influence association)
Hello Guyzzz,
I know that’s a very old post but anyway, Now I’m stuck to a point and I think maybe you will have an answer…By applying the freshskin script of Suppleteet, I loose all my corrective shapes (blend-shapes)…but with the delete non deformer history they are still there but as mentioned before, I got crazy result “with the delete non deformer history”… How can I merge both so i apply the fresh skin and i still have all my corrective shapes on the character…what do you think?? is that possible??
Thanks a lot,
Rami D.