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

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

ボーン(リグ)埋め込みのさい、不要なボーンを非表示にするとか、選択しないといった方法ではダメ

先ほどのアバター製作で、腕を上げると脇の下がもっこりし、腕を下げると上半身が異様に凹むなどの不具合が発見された。

埋め込み処理しないつもりの一部の不要ボーンを自動ウェイトの処理対象から外すつもりで単に非表示にしていたが、自動ウェイトの処理対象から外されていなかった。

埋め込み処理しないつもりのボーン(リグ)を [別アーマチュアに分離する]  で分離するという方法は有効だったが、コライダーが外れて床に落ちるという全く別のトラブルが時々発生する場合があり、完全とはいえなかった。

なぜか非表示のボーンにも、メッシュが関連づけられている...

実はこれが全ての元凶だった。

表示されているボーンだけが埋め込まれると信じこんでいたが、非表示であっても存在する限り、ボーンはメッシュに無理やりにでも埋め込まれるようだ。

  • もう一遍、関係無いボーンを非表示にし、関係するボーンだけ選択して埋め込み
  • もう一遍、関係無いボーンを表示したまま、関係するボーンだけ選択して埋め込み

両方でテストしたが、同じように、関係無いボーンもメッシュと関連づけられてしまった。

VMagicMirror で風を有効にしたときに、体全体がゆらゆらしていたが、外套のボーンなどが影響していたのかもしれない。

後で使うかもしれないと思ってボーンを残してきたが、副作用が出ているので、除外することを検討する必要がありそうだ。

ボーンを別アーマチュアに分離

何とか削除せずに残しておく方法はないか、と思って Blender の画面を見ていたら、[別アーマチュアに分離する]というのがあった。

試しにやってみたら、ボーンは分離されたが、メッシュの癒着が残っていた。

しかしこれはおそらく前回のボーン埋め込みの名残と思われたので、もう一度、分離しなかった基本骨格のボーンを選択して埋め込みをやり直したら、メッシュの癒着は外れた。

削除しなくても済んだ。

しかし、そのまま VRM形式で出力しようとすると、

VRM出力の際、選択できるアーマチュアは1つのみです。

と警告された。分離した方のアーマチュアを非表示にしたら、警告は出ずに、出力されるようになった。

全ての不具合が解消した

Blender と VMagicMirror でテスト。
ほとんどの不具合は、関係無いボーンによる副作用だったようだ。

  • 胸囲が異様に狭くなっている
    やや狭いのは相変わらずだが、異常というほどでもなくなった。
  • 腕を上げると脇の下がもっこりし、腕を下げると上半身が異様に凹む
    凹むのは相変わらずだが、異様というほどでもなくなった。
  • キー入力すると、上腕部の肉が骨などまるで無いかのようにプニプニと動く
    完全に治った。
  • 頷く nodding と、頭頂部に禿が出現する
    禿が薄くなった。
    ※後日の制作では、本来、髪の部分が一切含まれるべきではない頂点グループを精査し修正することでうなずき禿げ現象を根絶した。
  • 揺れる shaking と、肩より上のあたりがスライムのように動く
    完全に治った。

ボーン(リグ)の変形 Deform をオフにする方がより適切

後日の制作で、アーマチュアの分離を行うとコライダーが外れるという事象が発生しがちであり困る場合があった。

分離と比べると少々面倒ではあるが、使わないボーンを逐一選択し、変形 Deform のチェックボックスをオフにしていくことでアバターの変形に関与させないようにする方がよいと判断した。

分離したアーマチュアを正しく戻す手順も不明なので、今後は変形オフで対応する。

先ほどのアバター製作では、1メッシュでエキスポートされたモデルを編集していた。

これ以降は経緯の説明となります。

tombi-aburage.hatenablog.jp

しかしながら、アバター表示ツール VMagicMirror での運用テストにおいて、品質面で色々課題が残っていることが露見した。

  • 胸囲が異様に狭くなっている
  • 腕を上げると脇の下がもっこりし、腕を下げると上半身が異様に凹む
  • キー入力すると、上腕部の肉が骨などまるで無いかのようにプニプニと動く
  • 頷く nodding と、頭頂部に禿が出現する
  • 揺れる shaking と、肩より上のあたりがスライムのように動く

試しに、今回のアバター製作は部位ごとにメッシュを分解出力してみる

問題切り分けのため、メッシュを部位ごとに分解してボーンを入れたとしたら、この現象は発生しないのかどうかを確認した。

※結論としては、まったく関係なかったが以下に記録する

TS4 SimRipper でエクスポートするさいに、部位ごとに分解出力する All separate meshes, one texture オプションを選択する。

前回のアバター製作では以下を選択したところ、髪・顔・身体の全部位が統合された1つのメッシュが出力されたが、今回は部位ごとに出力したいので異なる選択肢を選んでみた。

  • Solid and glass meshes and textures
    ※前回の作成時 All separate meshes, one texture とは異なる選択肢を選んでみた
  • Clean DAE mesh? (Removes doubles) にチェック

最初に各メッシュの重複頂点の削除を行う

事故防止のため、先に全ての部位の開口部を潰しておく。

tombi-aburage.hatenablog.jp

レストポーズを Aポーズに変更、全ボーンの位置合わせを行う

力技。

7つの部位ごとに、ボーンを選択して埋め込む

靴メッシュにボーンを入れる

メッシュは靴 Shoes のみ、足ボーン2つだけを選択

上半身メッシュにボーンを入れる

メッシュは上半身 Top のみ、腰よりも上、上胸より下(首は含まない)のボーンを選択

手を上げたら、脇の下がもっこり盛り上がる現象は起きるか?

やっぱり起きた。手を下げたら、上半身が異様に凹むのも同様である。

下半身メッシュにボーンを入れる

メッシュは下半身 Bottom のみ、基底と、基底より下で足は除くボーンを選択

脚を上げたら、腹回りが異様に凹む現象は起きるか?

やっぱり起きた。

メッシュを部位ごとに分解しようが、一体で扱おうが、それによる挙動に差は生じないと判明した。

それではやはり、頂点グループそれ自体の見直しが必要なのだろうか?

頂点グループへの頂点の割り当てを色々調整してみる

※結論としては、まったく関係なかったが以下に記録する

頂点グループへの頂点の割り当てを確認しておく(あるべき姿)

tombi-aburage.hatenablog.jp

頂点グループへの頂点の割り当てを確認しておく(現状)

編集モードにて、透過表示、オーバレイ表示オンで確認

  • 腰 J_Bip_C_Hips の範囲が狭いようだ。

  • 背骨 J_Bip_C_Spine(下図)、胸・上乳・首・頭・手・五指・脚より下(図略)も妥当なようだ。

  • 上胸 J_Bip_C_UpperChest の範囲が狭いようだ。

  • 肩 J_Bip_L_Shoulder に脇が含まれていないようだ(図略)。
    ※但し、反対側は含まれており左右非対称だったり...
  • 上腕に脇が含まれておらず、肘周りの頂点が一部含まれないようだ(図略)。
    ※但し、反対側は含まれており左右非対称だったり...
  • 下腕に肘周りの頂点が一部含まれないようだ(図略)。
    ※但し、反対側は含まれており左右非対称だったり...

上腕の謎部分J_Sec_L_TopsUpperArmOutside ~ の2つに、頂点が割り当てられてしまっているようだ。確認のついでに削除した。

髪周り J_Sec_Hair は、色々と不可解だが今は追求しない。

下乳 J_Sec_L_Bust2 は存在しないが、男なので無いと想定し追求しない。

頂点グループへの頂点の割り当てを修正していく

腰・上腕の脇周り・肩・上胸について修正する。

頂点グループの引き算ができるらしいぞ
  1. ある部位Aを頂点グループ一覧から選択し、その頂点を選択 Select
  2. 別の部位Bを頂点グループ一覧から選択し、その頂点を削除 Delete

すると、別の部位Bの方は、部位Bの頂点たちから部位Aの頂点たちを差し引いた頂点集合になるという引き算ができるらしい。

腰 J_Bip_C_Hips の範囲が狭いのを補正

腰 = 腰 + 背骨 + 上脚(太もも) - 下脚(脛)

  1. 腰 + 背骨 + 両方の上脚(太もも)の頂点グループを連続で選択 select してこれらの頂点の和集合を表示させる
  2. 腰を頂点グループ一覧から選択し、削除 Delete、割り当て Assign
  3. 両方の下脚(脛)の頂点グループを連続で選択 select してこれらの頂点の和集合を表示させる
  4. 腰を頂点グループ一覧から選択し、削除 Delete
上腕 J_Bip_L_UpperArm に脇が含まれていないのを補正

編集モードで手作業で頂点を選択して、頂点グループを直接治す。

肩 J_Bip_L_Shoulder に脇が含まれていないのを補正

肩 = 肩 + 上腕 - 下腕 - 袖周りの頂点を手動で選択

袖周りの頂点を手動で選択は、透過モードにして、広めに範囲選択をしてから

引き算を適用して、肩の頂点グループから頂点を削除する。

脇の下が選択されていなかったので手動で選択し直す。

※なお反対側の肩は、状況が違ったので手動で修正した。

上胸 J_Bip_C_UpperChest の範囲が狭いのを補正

上胸 = 上胸 + 肩 + 胸 + 上乳

胴が凹むことはなくなったが、上腕の動きがおかしくなった。

  • 上腕の手動編集のさい、下腕の頂点を除外したら、上下腕メッシュの間に開口部が出来、腕下げの際にメッシュが分離
    • [メッシュ]-[マージ]-[距離で]にて縫合
    • 上腕は袖までではなく、肘先まで伸ばす
    • 上腕の脇の下は、脇の付け根ギリギリにする
    • 下腕は袖までではなく、腕の付け根まで伸ばす

  • 肘を曲げたとき、複雑骨折しており色々おかしい

頂点グループを編集すれば、確かに微調整はできるが、余計に壊れてしまうことが多い

頂点グループそれ自体の見直しで効果が無いわけではないが、作業的にとても難解であった。

別に VRoid の頂点グループを使わなければよいのでは?

いろいろ弄りすぎて、もう全然治せない。

VRoid の頂点グループを逐一確認しながら修正するのではなく、Blender に考えさせた方がいいのではないかと思えてきた。

VRoid 由来の全ての頂点グループを全て削除。すっきりした。

重複頂点の統合、ボーン埋め込み。

  • 削除した頂点グループは全て復活した。自動ウェイトのさいに都度自動生成されるものであるらしい。
  • したがって、一番最初の不具合の状態(振り出し)に戻っただけだった。

素直に、頂点グループごとにウェイトペイントするのが良いのだろうか?

※結論としては、まったく関係なかったが以下に記録する

サンプルモデルをお手本にするために、どのようにウェイトペイントされているかを確認した。

わがモデルはどうなっているか?

一部、頂点グループを編集してしまった後なので、標準の状態とは異なっている

頭。出だしから萎えた...

首は大丈夫だ。

肩、頂点グループの範囲は先ほど直したので良いが、ウェイトが利きすぎだ。

上腕・下腕はウェイトは良いが、頂点グループは直していないので範囲が違うな。

手は大丈夫だ。

上胸、頂点グループの範囲は先ほど直したので良いが、多分ウェイトが利きすぎだ。

乳・胸・背骨、大丈夫だろう。

腰…頂点グループの範囲は先ほど直したので良いが、多分ウェイトが利きすぎだ。

脚より下は大丈夫だろう。

いじくり過ぎて、モデルが崩壊したので振り出しに戻る。

今朝から4時間ほど、頂点グループを修正して元の状態が分からなくなったので、昨晩時点のものを読み込み直す。