Blender2.8でアバターの頭と身体を入れ替える

2020年8月24日

VRChatのアバターをデフォルトの状態ではなく、他人の作った着せ替えセットを使って楽しむこと、ありますよね。

ざっとBOOTHを眺めた感じ、頭以外が販売されていて、それをUnity上で購入済みのアバターの頭と合体させるような方式を取っていることかと思います。

うまいことやればDynamicboneも設定済み、サクッと差し替えて終わり!……なんですが、キッシュちゃんにミーシェちゃん用の服を着せたい!とか、ああいや、もっとマイナーな(失礼)とっても個性的な子にミーシェちゃん用の服を着せたいみたいなときに、頭抱えませんか?

Unity上で作業すると微妙に合わなくて面倒くせぇとか、Unityで調整しようとするとプラグインで黒魔術唱えないといけないとかとか。

ああもうなんでもいいや、俺はBlenderで合体済みのモデルを用意したいんだ!という自分向けのメモです。

お借りしたモデル

「NecomaidPremium」での利用を想定している温泉タオルつきモデルを、Zeroちゃんに使いたいというわけです。

どうくっつけるかを考える

これに頭をくっつける。

頭と身体を接続するにしても、モデルによっていくつかのパターンが考えられるかと思います。今回思い浮かんだのは、

  1. Zeroちゃんの頭だけを持ってきて身体にくっつける
  2. Zeroちゃんの素体にタオルだけを持ってきてくっつける

――の2通り。恐らく1番がスタンダードな手段だと思います。2番はウェイトペイントの都合で貫通や思いも寄らないトラブルが発生しかねないので、素体側に特別なこだわりがない限り選ぶことはないかと思います。

ふつーに1番で行きます。

大まかな手順

  1. 頭を使いたいモデルAと、身体を使いたいモデルBの両方を読み込み
  2. モデルAを頭だけにする
  3. モデルBを身体だけにする
  4. モデルAのボーンをHead以下のみに(それ以外全部削除)
  5. モデルBのHead以下を削除
  6. 他に重複するボーンがあれば削除
  7. オブジェクトモードでの位置調整と位置調整の確定
  8. Ctrl + Jで結合
  9. HeadのボーンをNeckの下に入るようペアレント設定
  10. モディファイアでボーンの関連付けを再設定
  11. ポーズモードで動作確認して出力

Blenderでの作業

とりあえずfbxをインポートします。テクスチャが設定されてないかもしれないなど、細かいことは端折ります。

構成を見てみましょう。

Zeroちゃんの側は、各パーツがセパレート済みの素体モデルを読み込んだので、メッシュの分離作業は無しです。シェイプキーとか気遣わないといけないので、可能な限り分離してるデータを使いましょう。

ボーンとメッシュを頭だけにする

今回使用したZeroちゃんのモデルはセパレート済みなので、素体部分のメッシュはアウトライナー側で削除しました。

ボーンの削除は、アウトライナーでArmatureを選択してから編集モードに切り替えます。

頭のボーンはHead以下だけを残して全部消します。

身体側の不要なボーンを削除

次に身体側の重複する不要なボーンを削除します。具体的には、Head一式が不要です。その他にしっぽが不要であるとか、不要であると判断できるものがあれば消しておきましょう。

このあたりで一度別名保存しておきましょう。

サイズと位置調整

頭と身体の位置を調整します。

胸の高さなど微妙に違いますが、今回はたまたま首の位置や股下の位置などが一致していたのでほぼ調整無しで結合します。

サイズ変更や移動をする場合は、オブジェクトモードでArmatureと各メッシュを選択して移動を行います。

オブジェクトモードで移動やサイズ調整を行ったら、全てを選択(Aキー)してから「Object→Apply(Ctrl + A)→All Transforms」で変更を確定します。

他のバリエーションの服を持っているなど、身体のサイズが同じ別の服に着せ替える可能性がある場合は、頭の方を移動・調整してください。

できたら別名保存しておきましょう。

ひとまとめにする

オブジェクトモードで頭のArmatureを選択してから身体のArmatureをShiftを押しながらクリックし、Ctrl + Jで結合します。

すると、色々とひとまとめになったかと思います。

(あ、しっぽ消すの忘れた。)(これはええねん。)

Headボーンを身体のボーンに繋げる

しかし、このままではボーンが分離していて上手くいきません。

この状態ではまだダメ。

このHeadをNeckの下に持っていきたいわけです。

ここに持っていきたい。

ああいけない!忘れてました。ボーンのペアレント設定をする前に、Headボーンの位置がズレているのなら編集モードで調整しておきましょう。はい。

位置調整が済んでいることを確認して、編集モードでHeadを選択してからCtrlを押しながらNeckを選択します。選択をしたら「Armature→Make(Ctrl + P)→Keep Offset」でペアレント設定します。

Neckの下にHeadが来たらOKです。

モディファイアでボーンの関連付けを再設定

オブジェクトモードに切り替えて、各メッシュを確認してみます。

緑色のレンチボタンを押すとモディファイアプロパティが表示されます。

上の図では、faceメッシュにはちゃんとArmatureが関連付けされています。

ところが、他のメッシュを確認してみると、赤く表示されているものがあるかと思います。

結合したことにより関連付けが行方不明に。

空欄のObject欄をクリックして、Armatureを選びます。

赤色表示になっているものを全て再設定をしたら完了です。

ポーズモードで身体を動かしたときに、ちゃんと頭も追従していれば大丈夫でしょう。

あとは、必要に応じてメッシュを結合したり、マテリアルを統合したりしてfbxファイルとして出力します。

どハマリポイント紹介

出てくるメニューが違う!ショートカットキーが反応しない!

オブジェクトモードと編集モードで内容が変わってきます。操作している間にころころとモードが変わるので、今どのモードになっているのか常に確認しましょう。

結合するとテクスチャが死ぬ!

UVマップ名は統一されていますか?モデルによって、「UVマップ」や「UVMap」だったりと名称が違う可能性があります。

結合後、テクスチャがおかしくなったのでよく見たところ、なんで名前の違うUVマップがふたつあるねーんってなったときの図。

結合する前に同じ名称にしておきましょう。自分はこれで5万年ぐらい悩んでました。