Add Code Here
////////////////////////////////////////////////////////////////////////////////
//■CommangName "SS_renameWeight_apply()"
//■v1.1 1.0が普通に動かないので
//
//■Usage
//・Vertexを選択した状態で実行する
//・ss_getWeightPerVtx()で取得したウェイト値を
// 指定した箇所のテキストを置換して割り当てる
//
//■作成意図
// 指と指とのウェイトコピー
//
//■特徴
//・一頂点単位でコピーできる
//・同一メッシュのみコピー可能
//・SS_getWeightPerVtx(); ←ウェイト値の取得コマンドからデータをもらう
//
/////////////////////////////////////////////////////////////////////////////////
global proc SS_renameWeight_apply()
{
//グローバル変数 既に値入り from "SS_getWeightPerVtx()"
global string $ss_valueJoint []; //ウェイト値をもったジョイントリスト
global float $ss_weightValue[]; //上記ジョイントのウェイト値
//変数 リネームward
string $beforeString = "Ring";//■サーチする部分テキスト
string $afterString = "Index";//■変換テキスト
//引数(手入力にて定義)
//string $sMesh ="MeshName";//■メッシュネーム forWeightAssin
string $sSkinC ="skinClusterName";//■スキンクラスタネーム forAssignWeight
//$ss_valueJointリスト内、該当ジョイントのみRename
string $SS_newValueJoint[];//Renameされたジョイントリスト
clear $SS_newValueJoint;
int $i;
int $numJoint=size($ss_valueJoint);
for($i=0;$i<$numJoint;$i++)
{
if(`gmatch $ss_valueJoint[$i] ("*" + $beforeString + "*")`)
{
$SS_newValueJoint[$i] = `substitute $beforeString $ss_valueJoint[$i] $afterString`;
}
else
{
$SS_newValueJoint[$i] = $ss_valueJoint[$i];
}
}
//ノーマライズをオンに
setAttr ($sSkinC + ".normalizeWeights") true;
//joint hold を OFF に
//string $JointList[];
//$JointList=`skinCluster -q -inf $sMesh`;
//string $tmpJoint;
//for($tmpJoint in $JointList)
// {
// setAttr ($tmpJoint + ".liw") 0;
// }
//チェック
print ("ResetWeightJoint is .." + $SS_newValueJoint[0] + "..");//ウェイトのあるジョイント一本目
//選択頂点の weight value を全て一旦リセット
//ジョイントリスト[0]のウェイトを1にする
string $selVTX[]=`ls -sl`;
string $selVTXList[]=`filterExpand -selectionMask 31 $selVTX`;
skinPercent -normalize true $sSkinC $selVTXList[0];
skinPercent -tv $SS_newValueJoint[0] 1 $sSkinC $selVTXList[0];
//チェック ウェイトリセット後の値
//print "..After assign weight value 1 ..";
//float $tmpValue[];
//$tmpValue=`skinPercent -q -v $sSkinC $selVTXList[0]`;
//print " Valu,";
//print $tmpValue;
//print "..tmp..";
print $ss_valueJoint;
print "ChangeName to ...";
print $SS_newValueJoint;
print $ss_weightValue;
//ウェイトのノーマライズをオフに
setAttr ($sSkinC + ".normalizeWeights") false;
//全てのウェイト値を0に(正確には80行で1を与えたウェイト値を0に)
skinPercent -tv $SS_newValueJoint[0] 0 $sSkinC $selVTXList[0];
//ウェイト値のアサイン > 対象は1頂点
for($a=0;$a<$numJoint;$a++)
{
skinPercent -tv $SS_newValueJoint[$a] $ss_weightValue[$a] $sSkinC $selVTXList[0];
}
//ウェイトのノーマライズをオンに
setAttr ($sSkinC + ".normalizeWeights") true;
skinPercent -normalize true $sSkinC $selVTXList[0];
}
Comments (0)