(モーション:iriverさま)
今回いただいたコメントは要約すると「お着替えして一見成功したように見えるけど、モーションを流し込むと体の一部が変形しちゃう」というものでした。
こういうケースはたいていウェイト設定が原因です。コメントぬし様と協力して原因を探ってみたところ、今回もウェイトが原因でした。
いままでの記事では手動でおおざっぱにウェイト再描写することで解決していましたが、今回はプラグインを導入することでお手軽に解決してみようと思います。
なお、今回の記事ではさぽ様制作の「刀剣乱舞 鶴丸国永ver.1.12」と、ぱぴこ様(aokana様、HAL様)制作の「MMD用お着替えパーツ:コートセット2種」をお借りしました。
それでは作業を始めます。
【状況の確認】
- まずはMMDにモデルを読み込んだらテキトーなモーションを流し込んでよーく観察します。
- コメントぬし様の状況を再現した今回の例では、手首の周辺が激しく変形しています。これでは鶴丸さんがあまりにもかわいそうなので、どうにかしてあげます。
【プラグインの導入】
- 今回の作業ははPmxEditorに「ウェイト保存/転送プラグイン」を導入することを前提としているので、まずはプラグインを入手します。
- ブラウザで「VPVP wiki」内の「PMDエディタ用プラグイン」というページを辿っていくと「ウェイト保存/転送プラグイン(PMX用)」という項目があるので、リンク先のBowlRollから「TransferWeights(PMX)」をダウンロードします。
- ダウンロードした「TW20110622.zip」を右クリックして「プロパティ」を開いたら、念のため「ブロックの解除」をしておきます。これをしておかないとお使いののPC環境によっては正常に動作してくれない場合があるので、面倒でもこの作業はしておくべきかなーと思います。
- このあたりは以前の記事(ar678975)で扱っているので、もしもうまくいかない方は目を通していただけると参考になるかもしれません。
- ブロック解除したら解凍して、2つのdllファイルとリードミーのtxtファイルをPmxEditorのユーザープラグインのフォルダにコピーします。これで使用準備が整いました。
【作業本番】
- PmxEditorを起動したら、まずはお着替え作業の元になった衣装モデル(今回は「コート&ハイネック_フルセット.pmx」です)を読み込みます。
- PmxViewの選択:「頂」、範囲:「δ」、左下のアイコン群は左から2番目と3番目(頂点と選択頂点)、モードは「Wire+」にして、手首周辺の頂点をマウスをドラッグしながら一筆書きで範囲選択します。
- 反対側の腕でもやります。このときはキーボードの Shift キーを押しながらマウスを操作すれば「追加選択」の扱いになるので、先ほど選択した頂点が解除されないでいるはずです。
- 両腕の手首周辺をうまいこと選択できたら、Pmx編集の「編集」から「プラグイン」→「User」へと進んで「ウェイト保存(PMX)」をします。ここでは「衣装の手首周辺ウェイト.txt」としました。ちなみにわたしが作業した際は500個のウェイトが保存されました。
- お着替え作業前のモデルからウェイト設定を抽出したので、今度はそれをお着替え後のモデルに流し込んであげます。PMXEにお着替え後のモデル(今回は「鶴丸コート.pmx」です)を「新規」で読み込みます。
- 先ほどと同じように手首のあたりの頂点を選択したら、Pmx編集の「編集」から「プラグイン」→「User」へと進んで「ウェイト読み込み/設定(PMX)」をします。
- どのファイルを使うか聞かれるので、先ほど作った「衣装の手首周辺ウェイト.txt」を指定してあげれば手首周辺のウェイト設定が書き換えられます。
- このとき、袖口の中までお肌パーツがある場合はそのぶん書き換えられる頂点数も増えることになります。衣装モデルの袖口は500個のウェイトでしたが、袖口の中までお肌パーツがある場合は書き換えられる頂点数は800個前後になると思います。
- あとはPmx編集の「ファイル」から「名前を付けて保存」して、MMDで動作確認してみて大丈夫そうなら作業は完了です。
【さいごに】
- 「ウェイト」は「ボーン」あってのものなので、ボーンを削除するとそれに関連付けられているウェイト設定はぐちゃぐちゃになってしまいます。
- 今回の例で言えば、手首周辺の衣装パーツには「左親指0」または「右親指0」のウェイトが塗られていますし、手の肌パーツには「左手捩」または「右手捩」のウェイトが塗られています。合体前にこれらのボーンを削除してしまうとウェイト破綻しちゃうので、削除はしないほうが無難です。
- ただし、そのまま合体させるとボーン位置がよろしくない場合があるので、その場合は元モデルのボーン位置をコピペしてあげる必要があります。
- 具体的にはPMXEに元モデルを新規で読み込んだらPmx編集の「ボーン」タブにて対象ボーンを選択、右クリックして「CSVファイルに保存」してから、お着替えしたモデルを新規で読み込んでPmx編集の「ボーン」タブにてテキトーなボーンのところで右クリックして「CSVファイルから追加/更新」します。
- ボーンを温存して合体 → あとからボーン位置修正するパターンか、今回のようにボーンを削除してから合体 → あとからウェイト再設定するパターン、どちらも一長一短なのでフィーリングで選べばいいかなーと思います。
【追記:おまけ】
今回の記事はお着替え工程の一部を抜き出した形なので、いちおう全体的な流れはこんな感じでしたよーという作業メモを残しておきます。これは完全に自分用のメモなので読みづらい部分もあるかと思いますが、だいたいの流れは把握できるかなーと思います。
以下作業メモ↓
・いつもの手順でとりあえず合体
「コート&ハイネック_フルセット.pmx」読み込み
準標準追加プラグインですべての親・グルーブ・腰ボーンを追加
別名保存「コート&ハイネック_フルセット からだー」
鶴丸さんを頭部だけに オフセットY:-0.2 Z:-0.1
合体 首まわり最下部から2段分の頂点をY:-0.2移動
剛体14:襟足止めの非衝突に1を追加
元衣装から体幹ボーン座標をコピペ(csvとか)
Pmxデータ検証
別名保存「さぽ式鶴丸国永_内番v1.12 合体01.pmx」
MMDで動作確認
・手パーツをつくる
さぽ式鶴丸国永_内番v1.12.pmx読み込み
「T」で左腕ボーンをZ:39で回転。右腕はZ:-39
形状保存「さぽ式鶴丸国永_内番v1.12_Tスタンス39.pmx」
さぽ式鶴丸国永_内番v1.12_Tスタンス.pmx読み込み
「絞」で材質3「腕」以外は全削除
ボーンは体幹と腕を残す
モーフ全削除
表示枠整理
剛体、ジョイント全削除
別名保存「さぽ式鶴丸国永_内番v1.12_Tスタンス39 腕だけー.pmx」
・Tスタンス化と腕の短縮
合体01.pmx読み込み。小窓「T」でTransformView。
58:右腕をZ:-40で回転。左腕はZ:40。
形状保存「さぽ式鶴丸国永_内番v1.12 合体01_Tスタンス40.pmx」
合体01_Tスタンス40.pmx読み込み
PmxView 選択「骨」、範囲「・」で左腕ボーンを選択
小窓「動」で「重1」に設定
PmxView 選択「頂・骨・剛・J」、範囲「δ」、左下アイコンは左から4つ分すべて選択状態、modeは「Wire+」
左腕ボーンの2個右側にあるボーンのすぐ左にある頂点の列から手先側を範囲選択 → X:0.9でスケール
右腕も同様に
別名保存「さぽ式鶴丸国永_内番v1.12 合体01_Tスタンス40 腕長さ090.pmx」
腕を短くしたのは単純に好みの問題。お着替えしたモデルを見て「腕が長すぎるんじゃね?」と感じなければこの工程は不要。
・手パーツ合体のための準備
「さぽ式鶴丸国永_内番v1.12_Tスタンス39 腕だけー.pmx」を「追加」で読み込む。このとき「同名ボーンのマージ」のチェックは外すこと
よーく観察する。腕パーツに注目すると、ひじを少しだけ前方に向かって曲げた上で位置オフセットでちょい下、ちょい前方へ移動させるべきと判断
内番v1.12_Tスタンス39 腕だけーを新規読み込み、小窓「T」
左ひじをY:8で回転。右は-8。
形状保存「さぽ式鶴丸国永_内番v1.12_Tスタンス39 腕だけー_ひじ回転y8.pmx」
「さぽ式鶴丸国永_内番v1.12_Tスタンス39 腕だけー_ひじ回転Y8.pmx」を新規読み込み
PmxViewの選択「頂・骨・剛・J」、範囲「δ」、左下アイコンは左から4つ分すべて選択状態にしたら左腕部分を範囲選択
小窓「動」でX:0.3、Y:-0.15、Z:-0.5で移動
右腕部分はX:-0.3、Y:-0.15、Z:-0.5で移動
別名保存「さぽ式鶴丸国永_内番v1.12_Tスタンス39 腕だけー_ひじ回転Y8 osy-015z-050 wide030.pmx」
「さぽ式鶴丸国永_内番v1.12 合体01_Tスタンス40 腕長さ090.pmx」を「追加」で読み込む。このとき「同名ボーンのマージ」のチェックは外す。
よーく観察する。ボーン位置はともかく、見た目はいい感じっぽい
ひじから先の各ボーンについて、どちら側のモデルのものを使用するか検討 → 「手首」から先は腕パーツ側を使うことに決める
衣装側:指ボーン削除「頭+衣装の合体直前.pmx」
手パーツ:手首より肩側の頂点を削除。手首とその先のボーンだけ残してそれ以外全ボーン削除「手の合体直前.pmx」
・合体と調整
「頭+衣装の合体直前.pmx」を新規読み込み、続いて「手の合体直前.pmx」を追加読み込み。このときすべてのチェック外す
衣装側の手首ボーン削除
手パーツ側の手首ボーンを衣装側の手首ボーンがあった番号まで持ってくる
手首、手捩り、ひじの親子関係を修復
袖口のウェイト転送500個保存→794個変更(手パーツの分も含むため上書きする頂点が増えた)
トランスフォームビューで右腕ボーンをZ40(左は-40)で回転させてAスタンス化・形状保存
腕とひじボーンの周辺をSDEF設定
状態検証 → 手首ボーンが表示枠Rootに登録されてたので削除
別名保存 → MMDで動作確認。大丈夫っぽい
本当に助かりました。