Skip to content

Instantly share code, notes, and snippets.

@deathponta
Created September 9, 2018 14:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deathponta/100c69c657e3c481f3612ec50c565d08 to your computer and use it in GitHub Desktop.
Save deathponta/100c69c657e3c481f3612ec50c565d08 to your computer and use it in GitHub Desktop.
シェイプノードを置き換える
/*
1番目にに選択したオブジェクトのシェイプノードを、
2番目以降に選択したオブジェクトのシェイプノードに置き換える。
■ 用途
・リグの形状を途中で変更したいが、既存のトランスフォーム消したくない
・アニメーションを崩さずシェイプノードだけ差し替えたい
・現在のトランスフォームを保持したまま、モデルデータを差し替えたい
*/
proc RShapeNode_Exec( string $_mode ){
string $sel[] = `ls -sl -l`;
// はじめに選択したノードのシェイプを取得
$shape = `listRelatives -s $sel[0]`;
for( $i=1;$i<size($sel);$i++ ){
// 既存のリグからシェイプを削除
delete `listRelatives -s -f $sel[$i]`;
if( $_mode == "copy" ){
// _FP == フルパス
// ターゲットオブジェクトを複製し、シェイプだけを取り出す
$newObj_FP = ls( "-l" , duplicate($sel[0]) );
$tempShape_FP = `listRelatives -s -f $newObj_FP`;
// ターゲットTMの子にする
$newShapeName = parent("-r" , "-s" , $tempShape_FP , $sel[$i] );
// シェイプノードの名前を修正
$nameBKUP = ls( $sel[$i] );
$temp_FP = rename( $sel[$i] , ls($newShapeName) );
rename( $temp_FP , $nameBKUP );
// 空のトランスフォームを削除
delete $newObj_FP;
}else{
// 最初に選択したカーブを、2番めに選択したトランスフォームのシェイプノードへとインスタンス
parent -add -s $shape $sel[$i];
}
}
}
proc ReplaceShapeNode(){
string $window = "ReplaceShapeNode";
if(`window -exists $window`)deleteUI $window;
window -title "ReplaceShapeNode" -width 300 -toolbox true $window;
columnLayout -columnAttach "both" 5 -rowSpacing 10 -columnWidth 250;
text -l "2つ以上のオブジェクトを選択して実行。\n2番目以降のオブジェクトのシェイプを置き換え。";
button -label "コピー として置き換え" -c "RShapeNode_Exec(\"copy\")" -ann "オリジナルのシェイプになります。";
button -label "インスタンス として置き換え" -c "RShapeNode_Exec(\"instance\")" -ann "1つのシェイプを修正すると他のオブジェクトのシェイプも変更されます。";
showWindow $window;
}
ReplaceShapeNode();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment