D日記

モーションアーティストの技術ブログだよ。日常も書くよ。

MENU

【MaxScript】Skinモディファイヤに簡単にボーンを追加する

こんにちわ(^o^)

3dsMax のスキンモディファイヤって骨の追加が面倒なんですよね。

今回は、選択したボーンを最後に選択したスキンメッシュに追加するスクリプトを作成しました ^_^

何が面倒か?

公式URL
knowledge.autodesk.com

骨を追加する時は下記のようにする

f:id:ponta565:20170912204738p:plain

[追加] → [ボーンを選択] 
↑ このボーン選択ウィンドウが面倒くさいです。
シーン内にオブジェクトが少ない場合はまだいいのですが、多い場合だと探すのが大変!

コード

Github にうpしてます。
AddBoneToSkinMod.ms

機能

・現在選択しているボーンを、最後に選択したスキンモディファイヤに追加する。
・選択したボーンがすでに存在する場合は追加しない。
・スキンモディファイヤが存在しない場合は追加する。
・スキンに追加されているボーンを全て選択する事ができる。

このツールのメリット

Skinモディファイヤからのボーン追加の面倒くささを軽減します。
すでにスキンに追加されているボーンを全選択できるので、ウェイトの付け直し作業などの際に楽です。

使用動画

www.youtube.com

作成メモ

・Skinモディファイヤにアクセスするときは、パネルをアクティブにする。 スクリプトからアクセスするには下記のようにする

setCommandPanelTaskMode #modify

ちなみに、getCommandpanelTaskMode() だと、現在のパネルを取得できます。
処理が終わったら、パネルを元に戻す処理も書けますね。 ※今回は必要ないと思ったので書いていません。



・骨の数の取得

skinOps.GetNumberBones $.modifiers[#Skin]



・骨ノードの取得がMax2012でちょっと面倒

ホントは下記関数で取得できるはずなのですが・・・第三引数が2012では正常に機能していないっぽい。

skinOps.GetBoneName <skin> <boneIdx> <nodeFlag>

詳細は、スクリプト中の GetBoneFromSkin 関数を参照。



終わりです。