Tip updating a blendshape and keeping all its driven keys, connections etc.
(note for cleanup it does need a little work with nodes example disconnecting shape inmesh from blend node -- (i wrote a test script to clean up a meshes input its still a work in progress but may be helpful))
Suppose wanted to change l_brow_up with a new sculpt but its already connected up with a ui etc. To update it with say new_l_brow_up, just plug new_l_brow_up into l_brow_up as a blendshape and put blendweight at 1. Then just delete new_l_brow_up. Now our l_brow_up should be updated with change and how its used with a blend node is preserved.
Here's the rough script i wrote to clean up a meshes input:
//07-14-2014 -- nate -- initial release //Modify at own risk global proc na_cleanBlendshapeInput(){ //clean blendshape input of selected, currently it assumes preserving shader on blendshape is not required //assumes shape selected assumes shape has exactly one blend node if(size(`ls -sl`) == 1){ string $selAr[] = `ls -sl`; string $shape = ""; //so it can work with selecting transform or shape if( `objectType $selAr[0]` != "mesh" ){ string $tryThisAr[] = `pickWalk -d down`;//ignoring if doesnt have shape if( `objectType $tryThisAr[0]` == "mesh"){$shape = $tryThisAr[0];} else{error("Requires single Shape selected");} } else{$shape = $selAr[0];} // string $allHistory[] = `listHistory $shape`; string $blendNodeAr[] = `ls -type blendShape $allHistory`; if(size($blendNodeAr) == 1){ string $blendNode = $blendNodeAr[0]; //cleanup blendshape input //disconnectAttr lipBlend_test2.outputGeometry[0] |r_brow_up_default|r_brow_up_defaultShape.inMesh; disconnectAttr ($blendNode+"."+"outputGeometry[0]") ($shape+"."+"inMesh"); //remove blend node for cleanup this need to come after disconnecting //might need to verify this blendnode is coming from input only delete $blendNode; } else{error("Requires one blend shape node on selected shape!!!");} } }
Hope you find this helpful.
cheers,
Nate