Meshグループに無数にMeshがはいっててスキンウェイトをコピーするのがめんどくさくなったから書いたよ
Aのメッシュグループから
Bのメッシュグループにコピーしていく
動作はちょっと逆で
Bのグループのメッシュ名をループして
Aのグループのメッシュ名にあるか探す
あったらスキンウェイトコピー
なかったらrejectedリストに入れてます。
最後にrejectedListを表示するのでスキンウェイトしなかったメッシュのリストが出ます。
// SkinWeightCopy First Select MeshGroup to Second Select MeshGroup
string $selectedArrFUllPath[] = `ls -long -sl`;
print($selectedArrFUllPath);
string $FirstSelect=$selectedArrFUllPath[0];
string $SecondSelect=$selectedArrFUllPath[1];
string $rejectArr[];
string $inputNodes[] = `ls -type transform -long -dag $FirstSelect`;
string $destNodes[] = `ls -type transform -long -dag $SecondSelect`;
$inputNodeslong=size($inputNodes);
$destNodeslong=size($destNodes);
string $buffer[];
string $buffer_i[];
$finded = 0;
for($d = 0; $d <$destNodeslong;$d++){
string $destNode_name=$destNodes[$d];
if($destNode_name==$SecondSelect){
}else{
print("$destNode_name= "+$destNode_name+"\n");
$numTokens = `tokenize $destNode_name "|" $buffer`;
$bufferlong=size($buffer);
string $destNode_name_Short = $buffer[$bufferlong-1]+"";
print("$destNode_name_Short= "+$destNode_name_Short+"\n");
$finded = 0;
for($i = 0; $i <$inputNodeslong;$i++){
string $inputNode_name=$inputNodes[$i];
$numTokens_i = `tokenize $inputNode_name "|" $buffer_i`;
$bufferlong_i=size($buffer_i);
string $inputNode_name_Short = $buffer_i[$bufferlong_i-1]+"";
print("$inputNode_name_Short= "+$inputNode_name_Short+"\n");
//$index=`gmatch $inputNode_name $destNode_name_Short`;
//if($index > 0){
if($inputNode_name_Short==$destNode_name_Short){
//$blendShapeName = $blendshapeRet_name;
print("$destNode_name= "+$destNode_name+" isHit!! "+"\n");
select -r $inputNode_name;
select -add $destNode_name;
copySkinWeights -noMirror -surfaceAssociation closestPoint -influenceAssociation closestJoint;
//copySkinWeights -noMirror -surfaceAssociation closestPoint -influenceAssociation closestJoint -sourceSkin $inputNode_name -destinationSkin $destNode_name;
$finded = 1;
}
}
if($finded==0){
$rejectArr[size($rejectArr)] = $destNode_name;
}
}
}
print("----rejected_list---start"+"\n");
print($rejectArr);
print("----rejected_list---end"+"\n");
select -r $FirstSelect ;
select -add $SecondSelect ;
コメント