C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

Blender: Armature の削除や変更で Vertex Group との整合性が狂ってしまったときの修正方法、のメモ

状況

「Armature を節約しなきゃ→簡単に Merge できるところは Merge!→ Merge が難しいところは Delete / Disolve ! 」

とかした後に、

「 Armature を Delete / Disolve した部分に対応していた Vertex Group と残した Armature との対応が壊れてしまった…再ペイントは…しんどいでござる」

になった時、 Weight Paint で塗り絵せずに残っている Vertex Group をにゃんにゃんしてうまいことする方法のメモです。

例えば、

f:id:USAGI-WRP:20200413205449p:plain

↑ Armature は1つ!(に Merge & Delete / Disolve した!)

f:id:USAGI-WRP:20200413205400p:plain

↑↓ Vertex Group は2つ!(Armatureとの対応も一部が壊れてしまっているのでうまく動かなくなっています)

f:id:USAGI-WRP:20200413205421p:plain

方法

Blender-2.82 時点では Vertex Group を直接操作して Merge する UI は無さそうなので、 Scripting を使います。今回は何かないかなーと探してみたところ:

-p2or/blender-merge-vertex-groups.py

↑いい感じのコード片が見つかったのでこれを応用します💪

手順:

  1. "いまは分かれてしまっているが統合したい" Vertex Group の正確な名前を確認します。 F2 で名前を編集状態にして Copy すると間違いが無くて安心
  2. ScriptingNew して p2or/blender-merge-vertex-groups.py を貼り付け
  3. 貼り付けた blender-merge-vertex-groups.py の group_input を ↑↑(1) で調べた名前群にする
  4. Object Mode で操作対象の Mesh が選択された状態にする
  5. Run Script
  6. 名前も "+" でくっついて統合された Vertex Group ができている(はず)なので確認
  7. 統合後の Vertex Group に対応付けたい Armature の名前を確認。 F2 で名前を編集状態にして Copy すると間違いが無くて安心
  8. 不要な場合は統合前の Vertex Group 群を - Vertex Groups UI の右側についているボタンをぽちって削除
  9. ↑↑↑(5) の統合された Vertex Group の名前を F2 で名前編集状態にして ↑↑(6) で確認した名前に変更。↑↑(6) で Copy してあれば Paste するだけ
  10. Pose Mode で期待動作を確認

Note: 統合後の Vertex Group の名前を統合前の Vertex Group で使用している名前にしたい場合は (7)と(8)を逆順で行います。

↓例えば Vertex Group 群 "NekoMimiBone_L_001""NekoMimiBone_L_003" を統合して "NekoMimiBone_L_001+NekoMimiBone_L_003" を作成し、

f:id:USAGI-WRP:20200413212459p:plain

f:id:USAGI-WRP:20200413213317p:plain

↓不要になった Vertex Group 群 "NekoMimiBone_L_001""NekoMimiBone_L_003" は Remove し、

f:id:USAGI-WRP:20200413213458p:plain

↓統合後の Vertex Group の名前を対応付けたい Armature と同じに

f:id:USAGI-WRP:20200413213810p:plain

します💪

f:id:USAGI-WRP:20200413214008p:plain

↑期待動作した成功✨