Index
修正/追加したスクリプト、個人的によく使うスクリプトの使用方法です。これ以外のスクリプトについては、オリジナルサイトをご参照ください。
■ウェイトのセーブ方法 (saveweights_gmax, saveselectedweights_gmax)
■ウェイトのロード方法 (replaceposition, replaceindex)
■ゼロウェイトのクリア (clearzeroweights)
■未アサイン頂点の表示、他 (skinweightinfo)
■ウェイトの勾配アサイン (skingradient)
■ウェイトの対称ペースト (mirrorbonepaste_arranged)
■Move/Swap Bone Weights (moveboneweights)
■頂点の選択状態を記憶させる (memselverts)
■ウェイトのセーブ方法 (saveweights_gmax, saveselectedweights_gmax)
■ウェイトのロード方法 (replaceposition, replaceindex)
■ゼロウェイトのクリア (clearzeroweights)
■未アサイン頂点の表示、他 (skinweightinfo)
■ウェイトの勾配アサイン (skingradient)
■ウェイトの対称ペースト (mirrorbonepaste_arranged)
■Move/Swap Bone Weights (moveboneweights)
■頂点の選択状態を記憶させる (memselverts)
.
■ウェイトのセーブ方法 (saveweights_gmax, saveselectedweights_gmax)
"saveweights_gmax"で全頂点のウェイトを、"saveselectedweights_gmax"で選択した頂点のウェイトを保存します。
セーブするのに"GTAmax.exe"を使用しますので起動させておいてください。
■全頂点のウェイトをセーブする
■選択した頂点のウェイトをセーブする
.■全頂点のウェイトをセーブする
(1)
"Save Vertex Weights for Gmax"を起動し、ファイル名を指定して処理開始。拡張子の"gwt"は適当に決めた名前ですが、これを変えると読み込む側のスクリプトで認識しませんので、変更しないようにしてください。
(2)
処理中はGmax画面左下のテキスト小窓(A1)に文字が流れます。メッセージウィンドウ(A2)が表示されたらセーブ完了。
■選択した頂点のウェイトをセーブする
(1')
Skin_Meshの"Skin Modifier"を選択し、
"Edit Envelopes"でセーブしたい頂点を選択。
(2)
"Save Selected Vertex Weights for Gmax"を起動。
以下"saveweights_gmax"と同じ。
以下"saveweights_gmax"と同じ。
■ウェイトのロード方法 (replaceposition, replaceindex)
ウェイトをロードするスクリプトは二つあります。位置座標でアサインする頂点を探す「positionモード」と、
頂点につけたIDにしたがってウェイトを読み込みむ「indexモード」です。
編集して頂点の数が変わっている場合には、positionモードを使います。 indexモードはIDが一つでもずれるとひどい誤アサインを引き起こしますので、 ご使用にあたっては十分注意してください。
■positionモードでウェイトをロードする
■indexモードでウェイトをロードする
.編集して頂点の数が変わっている場合には、positionモードを使います。 indexモードはIDが一つでもずれるとひどい誤アサインを引き起こしますので、 ご使用にあたっては十分注意してください。
■positionモードでウェイトをロードする
(1)
"Replace Weights Position Mode"を起動。
(2)
Theshholdは頂点マッチ距離の閾値。大きいと誤アサインが生じます。
デフォルトの'0.001'のままでだいたい問題ないです。そのまま"GO!"ボタンを押す。
(3)
ファイル名を聞かれるので、読み込みたいファイルを指定。
(4)
青と赤のバーで読み込み状況が表示される。
青が正しく割り当てられたウェイト、赤がマッチしなかったウェイト。
■indexモードでウェイトをロードする
(1)
"Replace Weights Index Mode"を起動。
(2)
ファイル名を聞かれるので、"ファイルの種類"で".xml"を選択し、読み込みたいファイルを指定。
■ゼロウェイトのクリア (clearzeroweights)
Gmaxでウェイトを2つ以上のボーンにアサインする場合、ひとつのボーンのウェイトを変更すると、各ボーンの合計値が1になるように他のボーンのウェイトが再計算されます。
ここで注意しなければならないのは、ボーンにウェイト'0'をアサインした場合や、どこか他のウェイトを'1'にアサインして、結果としてウェイトが'0'になった場合です。 「ウェイトがアサインされていない」ボーンに関しては上記再計算の対象とならないのですが、「'0'がアサインされている」場合、 再計算の対象となるため、気付かないでいると意図しない結果を招く場合があります。
このような混乱を避けるためにも、ウェイトを'0'に変更した時に、「ウェイトがアサインされていない」状態にしておくのが良いのですが、 Gmaxには"Reset Selected Vertices(選択頂点の全ウェイトをクリア)"または"Reset Selected Bone(選択ボーンの全ウェイトをクリア)"の機能しかなく、編集中に使うには非常に不便です。
前置きが長くなりましたが、Skintoolsの"clearzeroweights"は、'0'またはそれに近い微量ウェイトをクリアし、「ウェイトがアサインされていない」状態にしてくれるスクリプトです。 既に有意な値がアサインされているところはそのまま(実際には再計算されますが変化はあっても微量です)維持されるので、ウェイト編集中であっても気にせず使用することができます。ゴミ掃除のつもりで頻繁に使用しておくことをお勧めします。
■'0'にアサインされているウェイトをクリアする
以上
.ここで注意しなければならないのは、ボーンにウェイト'0'をアサインした場合や、どこか他のウェイトを'1'にアサインして、結果としてウェイトが'0'になった場合です。 「ウェイトがアサインされていない」ボーンに関しては上記再計算の対象とならないのですが、「'0'がアサインされている」場合、 再計算の対象となるため、気付かないでいると意図しない結果を招く場合があります。
このような混乱を避けるためにも、ウェイトを'0'に変更した時に、「ウェイトがアサインされていない」状態にしておくのが良いのですが、 Gmaxには"Reset Selected Vertices(選択頂点の全ウェイトをクリア)"または"Reset Selected Bone(選択ボーンの全ウェイトをクリア)"の機能しかなく、編集中に使うには非常に不便です。
前置きが長くなりましたが、Skintoolsの"clearzeroweights"は、'0'またはそれに近い微量ウェイトをクリアし、「ウェイトがアサインされていない」状態にしてくれるスクリプトです。 既に有意な値がアサインされているところはそのまま(実際には再計算されますが変化はあっても微量です)維持されるので、ウェイト編集中であっても気にせず使用することができます。ゴミ掃除のつもりで頻繁に使用しておくことをお勧めします。
■'0'にアサインされているウェイトをクリアする
(1)
"Clear Zero Weights"を起動。
以上
■未アサイン頂点の表示、他 (skinweightinfo)
"skinweightinfo"を使って、未アサイン頂点を表示させることができます。KAMSでは、スキンメッシュ中にウェイトをアサインしていない頂点がひとつでもあると、キャラスキンとしてExportできない仕様になっていますので、そのためのチェックに使えます。
他には選択した頂点のウェイト情報表示ができます。
■未アサイン頂点の表示
■ウェイト情報の表示
.■未アサイン頂点の表示
(1)
"Skin Weight Info"を起動。
(2)
"Rule"で"Unweighted"を選択(D1)し、"Select"を押す。
ビューポート上に未アサイン頂点がマークされ(D2)、上部の"Vertex:"の欄(D3)に未アサイン頂点数が表示される。
※選択した未アサイン頂点にそのままウェイトを設定しようとした時に、そのままでは"Abs.Effect"がアクティブにならない場合があります。この場合、下記手順でいちど入力窓をアクティブにしてください。
(1)
手動で適当な頂点を選択
(2)
"Abs.Effect"に数値入力できることを確認
(3)
再度Skin Weight Infoで選択
■ウェイト情報の表示
(1)
"Skin Weight Info"を起動。
(2)
頂点を選択して"Get Selection"を押す。選択した頂点がどのボーンにどれだけウェイトされているかが、中央の窓に表示される。
■ウェイトの勾配アサイン (skingradient)
頂点数の多いモデルでは、関節などでウェイトの値を徐々に変化させると、ポーズをつけたときのメッシュが滑らかになります。"skingradient"は選択した頂点のウェイトを傾斜配分でアサインしてくれるスクリプトです。手動で関節部を部分的に選択していって数値入力でウェイト設定するより、手早く滑らかに設定ができます。
■関節のウェイトをGradientでアサインする(徐々に変化させる)
.■関節のウェイトをGradientでアサインする(徐々に変化させる)
(1)
以下の例ではひざ関節のウェイトを"L Thigh(太もも)"〜"L Calf(すね)"の間で傾斜配分します。
まずは片方のボーンに全ウェイトをアサイン。
まずは片方のボーンに全ウェイトをアサイン。
(2)
続いて"Skin Gradient"を起動し、もう一方のボーンのウェイトを傾斜配分でアサイン。詳細は図中に示しました。
(3)
以上で作業完了。"Clear Zero Weights"でウェイトの掃除をしておくと良いでしょう。
以下、傾斜配分になっていることの確認図です。
以下、傾斜配分になっていることの確認図です。
■Mirror Bone Paste修正版 (mirrorbonepaste_arranged)
3Dモデルは左右対称の構造をもったものが多いですが、"mirrorbonepaste_arranged"はそのようなモデルにおいて、左右のうち片側に設定したウェイトを反対側へペーストすることができます。
・オリジナル"Mirror Bone Paste"の修正版です。重複頂点のアサイン漏れ対策と高速化を施しています。基本的な操作方法は同じですが、頂点選択方法がオリジナルの"Mirror Bone Paste"と異なりますのでご注意ください。
・左足→右足のように左右でボーンが異なる場合でも、'L'/'R'の文字で左右対のボーンとして認識し、正しくペーストします。
・位置座標でペースト相手のマッチングをとるため、環境によっては処理に時間がかかります。
.・オリジナル"Mirror Bone Paste"の修正版です。重複頂点のアサイン漏れ対策と高速化を施しています。基本的な操作方法は同じですが、頂点選択方法がオリジナルの"Mirror Bone Paste"と異なりますのでご注意ください。
・左足→右足のように左右でボーンが異なる場合でも、'L'/'R'の文字で左右対のボーンとして認識し、正しくペーストします。
・位置座標でペースト相手のマッチングをとるため、環境によっては処理に時間がかかります。
■Move/Swap Bone Weights (moveboneweights)
骨ベースでウェイトを移動またはスワップするスクリプトです。
たとえば、Jawに関連付けられたウェイトを全てHeadに移動させたいときなどに使用します。
CJパーツを合体させるときに便利ですが、ほかの使い道は少ないでしょう。
■ウェイトを移動/交換する
■ボーンリストダンプ
.■ウェイトを移動/交換する
(1)
"Move/Swap Bone Weights"を起動。
(2)
"BONE1","BONE2"にウェイト移動元/移動先(またはスワップする二つのボーン)のボーンID(*1)を指定する。
(*1)ここで言うボーンIDは、スキンモデファイアに登録されている骨の順番("Edit Envelopes"下のリスト順)の通し番号です。
後述するボーンリストダンプを使って、リスナーに出力させて確認することが出来ます。
(3)
"Move"または"Swap"を選択して"GO!"ボタンを押すと"Confirmation"窓が表示されるので、
内容を確認して"はい"を押す。
■ボーンリストダンプ
(1)
GMaxメニューの"MAXScript" > "MAXScriptListener"を開く。
(2)
"Dump Bone Name"を押すと、ボーン名が、スキンモデファイアに登録されている順に出力される。
■頂点の選択状態を記憶させる (memselverts)
頂点の選択状態を記憶させたり記憶した状態に戻すスクリプトです。ウェイトの値は記憶されません。
replaceindexと同様に、頂点IDで記憶させますので、編集により頂点の構成が変わると正常に動作しません。
■頂点の選択状態を記憶/復元する
Mem#1〜Mem#5まで5つの頂点セットを記憶できます。
replaceindexと同様に、頂点IDで記憶させますので、編集により頂点の構成が変わると正常に動作しません。
■頂点の選択状態を記憶/復元する
Mem#1〜Mem#5まで5つの頂点セットを記憶できます。
(1)
"Memorise Selected Vertices"を起動。
(2)
ボタン説明
■Mem#1〜#5(H1)
・[Mem]: 頂点の選択状態を記憶させる。
・[Set]: 記憶した選択状態に復元する。
・[+]: 現在の選択セットに記憶した頂点を追加する。
・[-]: 現在の選択セットから記憶した頂点を取り除く。
処理にけっこう時間がかかります。
■外部ファイルへのセーブ/ロード(H2)
・[Save SelVerts]: 頂点の選択セットを外部ファイルにセーブする。
・[Load SelVerts]: セーブした外部ファイルをロードする。
・[Mem]: 頂点の選択状態を記憶させる。
・[Set]: 記憶した選択状態に復元する。
・[+]: 現在の選択セットに記憶した頂点を追加する。
・[-]: 現在の選択セットから記憶した頂点を取り除く。
処理にけっこう時間がかかります。
■外部ファイルへのセーブ/ロード(H2)
・[Save SelVerts]: 頂点の選択セットを外部ファイルにセーブする。
・[Load SelVerts]: セーブした外部ファイルをロードする。