HumanIKって1シーン内に1ピッカーしか表示できないじゃないですか~
複数体キャラクターがいるとピッカーがひとつなのでいちいちキャラを切り替えなきゃならんのです。これは面倒くさい (ᐡ •̥ ̫ •̥ ᐡ)
複数パネルを表示する方法がわからなかったので、別のアプローチで対応しました 。°(´∩ω∩`)°。
— ですぽんた|モーデザ|サウナ歴2年 (@deathponta) 2019年12月18日
選択したHumanIKコントローラーに応じてHumanIKパネルのキャラクターを切り替えます。
これなら複数キャラのモーション制作も楽になる!
副次的ですがウィンドウの専有率も抑えられます!#Maya pic.twitter.com/LSMY6b3jNt
で、上記動画のようなツールを作成しました。
scriptjob を登録し、HumanIKリグを選択するとコネクションを辿っていって、キャラクターノードを取得し、HumanIKパネルのキャラクターを変更しているって感じです!
スクリプト
MELです!MayaLTでも使用できます ୧꒰´꒳`꒱૭✧
下記スクリプトをコピーしてコマンドラインで実行してください。
{ /* HumanIKコントローラーを選択した時に、HumanIKパネルのキャラクターを選択キャラクターにする ウィンドウを閉じるとScriptjobも閉じます。 ただし現状選択に反応するノードは hikIEEffector のみです */ global proc updateHIKPanel(){ // リターン処理 if( size(`ls -sl`) == 0 )return; $type = nodeType(`ls -sl -hd 1`); if( $type != "hikIKEffector" )return; //if( $type != "hikIKEffector" && $type != "hikFKJoint" )return; // ここまで通ったら $HIKS2E = listConnections( "-s" , true , "-type" , "HIKState2Effector" , `ls -sl` ); $HIKEFC = listConnections( "-s" , true ,"-type" , "HIKEffectorFromCharacter" , $HIKS2E[0] ); $CharaName = listConnections( "-s" , true ,"-type" , "HIKCharacterNode" , $HIKEFC[0] ); print $CharaName; // HIK UI切り替え処理 optionMenuGrp -e -v $CharaName hikCharacterList; hikUpdateCurrentCharacterFromUI(); hikUpdateContextualUI(); //print "hikUIを更新しました。"; } string $windowName = `window`; columnLayout; text "Auto update HIK panel !"; text "Close this window will delete Scriptjob."; showWindow $windowName; scriptJob -parent $windowName -e "SelectionChanged" "updateHIKPanel"; }
それでは良きモーションライフを~