Blogs

mayaring

I study script for Maya. sorry.. Japanease

  • tap ten on Oct 30, 2009
  • Comments (0)
  • Uncategorized
  • Fri
  • 30
  • Oct 2009
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)

Tags
  • weight
  • Categories
    Latest Comments
    Subscribe via RSS