そういう、モデルなんです。

ビジネスモデル、設計図、模型などの現状と動向を考察、関連書籍の紹介

メッシュ(モデル)にボーン(リグ)を埋め込んだところ、メッシュが裂けてしまった(解決)

リグとメッシュ(モデル)の統合に失敗した

Blender で人物モデルを作成中に、メッシュ(モデル)にボーン(リグ)を埋め込んだところ、ポーズモードでリグを動かすと、メッシュの方が裂けてしまった。

人物モデルの全部のメッシュを選択して、自動ウェイト付けしたら服が裂けた。

Sims 4 からインポートした人物モデルのメッシュに対して、Vroid 由来の VRM モデルから抽出したボーン(リグ)を位置合わせした後、

全部のメッシュを選択して、自動ウエイト付けによりボーン(リグ、アーマチュア)を埋め込んだ。

  • [オブジェクト] Object - [ペアレント] Parent - [自動ウェイトで~] Armature Deform With Automatic Weights

ポーズモードでテストすると、肩のあたりに切り口ができて服が裂けた。

もう一体の人物モデルのメッシュが干渉しているのではないかと疑った。

そういえば Vroid VRM 人物モデルをインポートしたさいに、リグと一緒に取り込まれたメッシュを削除していなかったので、これが悪さをしたのかもしれない。

黒服の大女が Sims 4 由来の人物モデルで、もう一体の白服で小柄な女が Vroid VRM 由来の人物モデル。自動ウェイト前に保存してあったファイルを読み込み直し、念のため白服を削除することにした。

Vroid VRM 人物モデルから全部のメッシュを選択して削除したが、結局のところ関係なかった。

  • 体 Body、顔 Face、髪 Hair の階層全てを選択 Select Hierarcy
  • 階層ごと削除 Delete Hierarcy

これで、Vroid VRM 人物モデルのメッシュは一掃された。

その後、自動ウェイトで親子関係を付け、ポーズモードでテストすると、またしても肩が裂けた。右肩を回すとまた脇の下が裂けた...

その上、下の歯が入れ歯のように外れてしまった。

つまり、Vroid VRM 人物モデルのメッシュが干渉していたわけではなかった。

一旦、このデータは破棄してもう一度、ウェイト付けのところからやり直す。

いったん別の人物モデルで動きを確認して切り分け

先週、試作した別のモデルではどうなっていたか確認してみたら、同様に破綻していた。

先週、保存した別のモデルのファイルを Blender で開き比較してみた。
こちらも盛大に脇に穴が開いていた。テスト不十分で当時気づかなかったようだ orz

比較のため、Sims 4 人物モデルのリグを使ってポーズモードで動かしてみた。

自動ウェイト前に保存してあったファイルを読み込み直した。

Vroid VRM から抽出したリグ(ボーン、アーマチュア)を埋め込む前から、元々付与されていた Sims 4 人物モデルのリグで色々なポーズを取らせてみた。

当然といえば当然だが、どこにも穴が開くことはなかった。

Sims 4 人物モデルが複雑すぎたようなので、単純化を図る

脇の下が破断するように裂ける問題は、メッシュや頂点グループの状態が Blender での自動ウェイト付け機能にとっては複雑すぎたためではないか?と推測したので、メッシュを簡単化する方向で進めてみる。

高望みは止め、サングラスや指輪などは Sims 4 人物モデルから削除した。

以下のメッシュは本質的ではない装飾なので、諦めて削除する。

  • 耳飾り Earing、サングラス Glasses、右手の指輪 RingThirdRight、靴下 Socks

Vroid VRM モデルが想定するメッシュの単位に結合して揃えた。

Vroid VRM モデルでは、身体 Body、顔面 Face、髪 Hair 3つのメッシュしか存在しない。

その一方で、Sims 4 人物モデルでは、以下のように細分化されている。これは以下のように単位を揃えることにする。

  • 上半身 Top、下半身 Bottom、足元 Shoes は結合して、同一名称となるよう身体 Body と命名し直す。
  • 髪 Hair は、もともと同一名称なので、そのままにしておく。
  • 頭 Head、歯 Face は、顔の表情モーフ作成に着手するまでは、メッシュは結合 しない。但し名称については歯が Face となっており紛らわしいので、VRoid の表現に近づけておく。

上記のとおり結合 Join して命名し直した結果はこちら。

  • 身体 Body
  • 髪 Hair
  • 顔 Face、歯 FaceTeeth

留意点として結合する前に、予め UVマップの名前は合わせておくべき。

先ほどのメッシュ結合作業を行うさいに、最初は安直に上半身 Top、下半身 Bottom、足元 Shoes をひとまず結合 Join してみたところ、メッシュは1つになったが、テクスチャの一部が飛んでしまった。その結果、一部の部位で色などがおかしくなった。

使っているテクスチャは同一画像であり、シェーダーの定義も一見全く同じなのだが、結合するとテクスチャとメッシュの対応関係はズレるらしい。

しかし以下の記事の通り、予め UVマップ UV Maps の名称を完全に同じにしておくことで問題は解決した。

synamon.hatenablog.com

別のファイル名で保存しておく。

作業再開後1時間程度で、メッシュを統合して4つに削減し終えることができた。
ここから先は再びリグとメッシュ(モデル)の統合となるので、一旦保存しておく。

4部位に削減した後の全部のメッシュを選択し、自動ウェイト付けしたがまた失敗

だいぶ数は減ったが、全部のメッシュを選択して、自動ウエイト付けによりボーン(リグ、アーマチュア)を埋め込んだ。

  • [オブジェクト] Object - [ペアレント] Parent - [自動ウェイトで~] Armature Deform With Automatic Weights

しかしながら、

  • 腕を動かすと脇に穴が開く問題は、メッシュ結合では解決しなかった。
  • それ以外に、足を動かすと靴が空中分解する現象に気付いた。
  • 腕を動かすと顔面の髪の生え際が顔から分離する現象に気付いた。

おかしい。さすがにこれは、自動ウェイト付けの問題ではないだろう。

もともとのメッシュに問題があったとしか考えられない

結合直後の身体 Body メッシュを編集モード Edit Mode で開き、面選択モードにして、開口した脇の下と、空中分解した靴の周りの三角メッシュを引っ張って(移動させて)みてチェックした。

脇の下のメッシュを選択して、引っ張ったら開口した。閉じていなかったらしい。

閉じているなら、つままれてびよーんと伸びるはずなのだが、隣のメッシュと繋がっておらず分離して切れてしまっている。

ちなみに分解した靴底の方も、同じように開口していた。

髪の生え際も...

近傍の頂点を結合して、メッシュの切れ目を縫い合わせる。

開口部が出来た場合の常套手段としては、位置は重複しており、重なっているが、実際には接合はされていない頂点同士を結合するという手口がある。

編集モードを頂点選択に変更し、[選択] Select - [すべて] All した後、近傍の頂点を結合 [メッシュ] Mesh - [マージ] Merge - [距離で] By Distance して縫い合わせた。

  • 身体 Body、髪 Hair のオブジェクトについて修正を行った。
  • 顔 Face と歯 FaceTeeth は後で表情を調整する作業をしてから、必要であれば対応する予定なので今はやらない。

全部のメッシュを選択するのではなく、関連するもののみ選択する

4つに分かれた部位、つまり身体 Body、髪 Hair、顔 Face、歯 FaceTeeth の全てを選択して、ボーン(リグ)への自動ウェイトを行ったが、そもそも

  • 髪は、身体とは別に、髪専用のボーンと個別に関連付けるべき
  • 顔と歯は後で表情を調整する作業をする予定なので、明らかに身体専用のボーンと紐づける必要は今のところはない

よって以下の通り、関連しそうなボーン(リグ)とメッシュ同士に限定しながら、個々に自動ウエイト付けを実施した。

まずは髪メッシュと髪ボーンを紐づける

  • 髪ボーンだけ選択し、髪メッシュ Hair だけ選択して自動ウェイト

  • ポーズモードでテスト、どうやら成功だ。

次に身体メッシュと首から下のボーン群を紐づける

  • 首から下のボーン全てを選択し、身体メッシュ Body を選択して自動ウェイト

  • ポーズモードでテスト、どうやら成功だ。靴も分離しなかった。

メッシュを縫い合わせ、自動ウエイトを部位ごとに行ったら、穴あき・靴の空中分解・入れ歯の脱落は発生しなくなった。

ここまでの作業で、首から下の身体のメッシュと、髪のメッシュについてはボーン(リグ)埋め込みが完了した。しかし顔と歯のメッシュとボーン(リグ)はまだ関連づけられていない。

次は、顔周りのボーン(リグ)の埋め込みを行っていく。

tombi-aburage.hatenablog.jp