yagi39のブログ

モデリングツールXISMOについて

XISMO機能解説講座Part11ウェイト編

ここでは
・変形モード
・ウェイト設定方法
・ボーンウェイトタグ
・ボーンウェイトツール(ペイント方式)
・アンカーノード(アンカー方式)
・メニューバー>ボーンウェイト
・正規化
を解説します。
これらのうち、名前からその動作が分かりやすく、注意点のない機能は省略しています。

yagi39の推測による内容もあるのでご注意ください。
質問、要望、訂正すべき箇所などありましたらコメントやツイッターのリプ・DM、
質問箱(匿名)をご活用下さい。
なおyagi39が理解していない事項に関してはお答えできません。ご了承ください。
機能の動作等はバージョン199bで確認しています。

■変形モード
ボーンを動かしたときにウェイトの塗られた頂点がどのように変形するかという方式。
以下の図は、円柱のモデルに対してボーンを縦に2つ配置(白線)し、
グラデーションになるようにウェイトを設定したものを変形させ、
その輪郭をトレースしたもの。
PmxEとつくものはPmxEditorで設定したもの。
SDEFの末尾につく%はxismoのボーンウェイトタグのSDEFブレンド率。
ボーン120°捩りに関しては、SDEFの変形結果はすべて一致したため、
xismoで設定したSDEF100%のみ図示した。


●BDEF

最も一般的な方式。曲げた時にカーブの内側が凹む。180度捩ると捩切れる。
PmxEditor、xismoともに設定できる。

●SDEF
BDEFと比較して、曲げた時にカーブの内側が凹まない。
180度捩っても太さを維持し、捩切れない。影響ボーンは2本のみ。
ペイント方式で設定した場合、思った通りの変形にならない場合がある。
アンカー方式での設定を推奨。
PmxEditor、xismoともに設定できる。

●QDEF
カーブの外側に膨らむ。捩っても捩切れない。影響ボーンは4本まで対応。
MMD,MMMは非対応。PmxEditorでのみ設定できる。

■ウェイト設定方法
ウェイトの設定方法は大きく分けて2種類。
xismoではメモリが許す限り何本でも塗れる。
線ポリゴンの頂点にもウェイトを塗ったりアンカーを適用したりできる。
同一メッシュにペイント方式とアンカー方式両方適用することも可能。
両方適用した場合、アンカーが優先される。
●ペイント方式
ペイントソフトで色を塗るように濃度でウェイト値を設定する。
xismoではウェイトツールを用いる。
ウェイトツール使用時は、ウェイト未設定の頂点は表示されない。
頂点にウェイトを塗るとウェイトツール使用時の頂点の色が変わり、
100%で赤色、50%で橙色、0%で黄色になるようにグラデーションで表示される。
なお、"メニューバー>ボーンウェイト>子に合わせる"機能でウェイト値が
マイナスになった場合は値が小さくなるごとに黄緑→水色にグラデーション表示される。

曲面化ノード適用時は頂点に塗ることはできるが、
すべて100%で塗られているものとして変形される。
XISMO2で、曲面化ノードのプロパティでタグ細分割にチェックを入れることで
頂点に塗ったウェイトも曲面補間されるようになった。
xismoでは影響ボーンの合計ウェイト値100%以上にも設定できる。

●アンカー方式
アンカーと呼ばれるボックスの重なり具合いでウェイト値を設定する。
xismoではモディファイアのアンカーノードを用いる。
プロパティの関連ボーンリストを右クリックすることでアンカーを追加できる。
アンカーは影響ボーンの座標、長さ、向きを基に直方体のものが追加される。
アンカーの頂点は4つのみ。
作成されたアンカーの頂点や辺をユニバーサル・移動・回転・拡縮ツールで
編集することで影響範囲を変更する。
アンカーの可視はボーンの可視と連動する。
また、アンカーの座標コピー&ペースト機能を使うことにより、
別々のメッシュノードでも任意のボーンで全く同じウェイト分布を設定できる。(腕と袖など)
ツールバーの蝶々アイコンでの対称編集では関連ボーンに関して対称に編集できる。
反転ペーストではワールド座標(ローカル座標ではない)に関して対称なアンカーを
設定することができる。
なお、反転ペーストするアンカーの関連ボーンの名前は左右で対応していなくてもよい。
(反転ボーンの位置を合わせる機能が名前が対応していないといけないのとは異なる。)
アンカーノード自体をコピー&ペーストして、
設定を別のメッシュノードに使いまわすことも可能。

■ボーンウェイトタグ
ウェイトを記録する。ペイント方式、アンカー方式ともに必要。
一つのメッシュノードに対して一つしか作れない。
ウェイトタグを削除するとそのメッシュに設定されたウェイトの情報も削除される。
●正規化
このパートの最後で他の正規化とともに解説。

●SDEF計算法
SDEFでどのボーン空間を元に計算するかの情報らしい。普通は両方のままでよい。
SDEFを設定したときに思った通りの変形にならない場合、
計算法を親や子にすることで解決する場合がある。
足ボーンは親が良いらしい。

●SDEFブレンド
100%の場合、PmxEditorでBDEFからSDEFに変換したものに近くなり、
0%の場合、PmxEditorでBDEFからQDEFに変換したものに近くなる。
詳しくは冒頭の図を参照。

■ボーンウェイトツール(ペイント方式)
面を隠すで頂点が非表示になってる場合、その頂点にウェイトは塗られない。
前面表示がオフの場合でも、
面の向こう側に隠れて見えない頂点にもウェイトが塗られるので注意。


●ペイント
ペイントソフトでのブラシツールのように塗ることでウェイトを設定する。
Shift+Ctrlで頂点をクリックすると一時的にスポイトになる。

●グラデーション
ドラッグすることで始点がツールウィンドウで指定した値、
終点が0%になるように間が補完される。

●スポイト
クリックした頂点のウェイト値がツールウィンドウに表示される。

●数値指定
選択頂点にツールウィンドウで設定した値を指定する。

●消しゴム
ウェイトを削除する。(0%にするのではない)

●親を正規化
このパートの最後で他の正規化とともに解説。

●線幅制限
グラデーションモードにおいて、ウェイト塗りが適用される範囲を制限する。
グラデーションでドラッグして表示された長方形の赤枠内にのみウェイトが適用される。
範囲の幅はAltキーを押しながらセンタービュー内の何もないところをドラッグして変更する。

●減衰
ペイントモード、消しゴムモードにおいて、カーソルの中心が
ツールウィンドウで設定した値、丸枠に近くなるにつれて0%に減衰するようになる。

●選択頂点を除く
選択した頂点にウェイトが適用されなくなる。
面を隠す機能による頂点の非表示と使い分けるとよい。

●上書き・加算・減算
ウェイトを塗ったとき、すでに塗られている値に対して塗った値をどのように適用するか。
・上書き
 すでに塗られたウェイトの値を無視して現在塗っているウェイトの値に上書きする。
 Shiftキー併用で一時的に加算モードに、Ctrlキー併用で一時的に減算モードになる。
・加算
 すでに塗られたウェイトの値に現在塗っているウェイトの値を足す。
 100%以上になることはない。
 10%などの小さい値で塗れば、薄いペンで塗り重ねるように設定できる。
・減算
 すでに塗られたウェイトの値から現在塗っているウェイトの値を引く。
 0%未満になることはない。
 10%などの小さい値で塗れば、薄く消しゴムをかけるように設定できる。

■アンカーノード(アンカー方式)
前述のウェイト設定方法を参照。

●計算法
うp主の環境では常にfastでグレーアウトされている。
どういう情報なのかは不明。

●関連ボーン
リスト内を右クリックすると影響ボーンを追加できる。
リストに追加されたボーンを右クリックすると、
アンカーの削除、座標コピー、ペースト、反転ペーストができる。

■メニューバー>ボーンウェイト
●正規化
このパートの最後で他の正規化とともに解説。

●子に合わせる
このパートの最後で他の正規化とともに解説。

●SDEFフラグを設定
選択頂点の変形モードをSDEFにする。

●SDEFフラグを解除
選択頂点の変形モードをBDEFにする。

●SDEF頂点を選択
SDEFに設定された頂点を選択する。

●無効なウェイトを削除
0%になっているウェイト値を未設定状態にする。

●影響3以上の頂点を選択
3つ以上のボーンにウェイトが割り振られている頂点を選択する。
変形モードをSDEFにしたい時に、
その頂点の影響ボーンが2つになっているかどうかを確認する機能。
影響ボーンが3つ以上の場合、SDEFに設定されていてもPmx出力するとBDEF4になる。

●影響5以上の頂点を選択
5つ以上のボーンにウェイトが割り振られている頂点を選択する。
影響ボーンが5つ以上の場合、Pmx出力すると変形がおかしくなる。
なお、xismoでは影響ボーンがどれだけ多くても正常に変形する。

●頂点の影響ボーンを選択
選択頂点にウェイトを設定したボーンを選択する。

●影響ボーンから頂点を選択
選択ボーンにウェイトが割り振られている頂点を選択する。
ボーンウェイトツールで"選択頂点を除く"をオンにして塗れば未塗装の頂点のみ塗れる。

●未塗装の頂点を選択
ウェイトが設定されていない頂点を選択する。
"未塗装の頂点を選択"→"ノード処理>頂点の選択状態を反転"して、
ボーンウェイトツールで"選択頂点を除く"をオンにして塗れば未塗装の頂点のみ塗れる。

●対称転送
選択頂点の選択ボーンのウェイトを対称な頂点に対称なボーンのウェイトとして転送する。

●全ボーンモディファイアを有効・無効
ボーンモディファイアの可視を一括で設定する。
アニメーションツールで設定したボーンの変形はそのままに、
頂点を元の位置に戻して編集したいときなどに利用する。

■正規化
ボーンに塗られた頂点のウェイト値の合計が100%を超えている場合、
MMDでの変形がおかしくなるのでその頂点のウェイト値を100%にする。
いくつか機能があり、それぞれ結果が異なるのでここでまとめて解説する。
●ボーンウェイトタグ>正規化
頂点に設定されたウェイト値はそのままに、変形結果を計算する際や、Pmx出力の際に
各ボーンのウェイト値の比率を保ったまま合計ウェイト値100%の値を使う。


●ボーンウェイトツール>親を正規化
これをオンにして頂点にウェイトを設定した場合、
100%からそのウェイト値を引いた値を親ボーンのウェイトに設定する。
親ボーンの頂点にすでにウェイトが設定されていた場合は上書きされる。
手首などの子を複数持つボーンのウェイト設定に使用するのはお勧めできない。


●メニューバー>ボーンウェイト>正規化
選択頂点のウェイト値が100%でない場合、選択頂点に設定された
各ボーンのウェイト値の比率を保ったまま合計ウェイト値を100%にする。
(どのボーンを選択しているか、は無関係で、どの頂点を選択しているか、の情報が使われる。ただし、ボーンを選択していないと、正規化が実行されないので、どのボーンでもいいのでボーンを選択している必要がある)


●メニューバー>ボーンウェイト>子に合わせる
選択ボーンの全ての子ボーンの合計ウェイト値を100%から引いた値を、
選択頂点に選択ボーンのウェイト値として割り当て、
選択ボーンとその全ての子ボーンの合計ウェイト値を100%にする。
子ボーンの合計ウェイト値が100%を超えている場合、
選択ボーンのウェイト値はマイナス値になるため、
ボーン変形しても正常にウェイトが割り振られているように見えてしまう。
スポイトで当該頂点を選択してもツールウィンドウは0~100%までしか表示できないため
0%と表示されるが、センターウィンドウでは頂点が黄緑色に表示されるので
マイナス値だとわかる。
Pmx出力してPmxEditorで確認すると確かにマイナス値になっている。
ウェイトがマイナス値になっていてもMMDで読み込み、変形させることもできる。




他パートへのリンクを貼った目次代わりのPart1

XISMO機能解説講座Part1概要編 - yagi39のブログ