Sims 4 人物モデルを顔・髪・装飾・身体・靴など部位ごとに分割メッシュ出力して VRM アバター化することを再試行したが、またしても顔面周りで難航して失敗した。
やはり手間を考えると、1メッシュで出力した方が楽である。
以前に分割メッシュ出力で作成した時の手順は以下のとおり。
いちおう出来上がったが、首に穴が開いたままだし、首と頭の境目の色もだいぶ違うので、これを完成と呼んではいけないのかもしれない。
使用ソフトウェア一覧
The Sims 4 にて適当に人物モデルを作成する
隣人の中にいた カトリーナ・カリエンテ Katrina Caliente 氏を今回は起用
Sims4 でキャラクターは新たに作らず、隣人の中からよさげなのを選んだ。
髪のボーンを埋め込んでみたいため、今回は女性とした。
TS4 SimRipper より DAE 形式でエクスポートする
画面右手で設定を調整できる。以下2つを変更しておく。
- All separate meshes, one texture で出力
※前回は Solid and glass meshes and textures だったが髪まで一体で出力されたため、再び変更した - Clean DAE mesh? (Removes doubles) にチェック
変更した後、DAE形式でエクスポート。
E:\Users\tombi\Pictures\3D\KatrinaCaliente\KatrinaCaliente.dae
Blender へ Collada (.dae) でインポートする
Sims4人物モデルを整理して入れておくための器として、新規コレクションを用意する。
- 新規コレクション「Sims4人物モデル 」を作成
- ファイル - インポート - Collada (.dae)
- Lamp を削除、立方体も削除
- 3Dビューのシェーディングをマテリアルプレビューモード表示に切り替え
- モデルを選択して正面向けて拡大[1][.]
Sims4人物モデルのメッシュを確認しておく
TS4 SimRipper の設定の影響により、メッシュが分離された状態で出力された。
Sims4人物モデルを Tポーズにする
最終的にTポーズにする必要があるので、最初のうちにやっておく。
自動スクリプト changeAPoseToTPose.py をスクリプト Scripting のテキストエディタにコピペし、メッシュ名を Body に変更して流す。
GitHub - tombi-aburage/Sims4VRMAvatar
VRoid Stuidio にてサンプルモデルを VRM形式でエクスポートする
女性のサンプルとして AvatarSmaple_B と A がある。髪長めの B を登用する。
必須入力のタイトルと作者だけ入力して、VRMエクスポートを行う。
E:\Users\tombi\Pictures\3D\KatrinaCaliente\AvatarSmaple_B.vrm
VRM Add-on for Blender にてインポートする
インポートされた VRoid人物モデルのうち、リグ Armature を主に利用するので、それ以外は、ぎょろ目クリックで非表示にしておく。
- リグ Armature の配下にある、身体 Body、顔 Face、髪 Hairのメッシュ
これから作る人物モデルで不要な Vroid4人物モデルのボーンの変形をオフにする
今回の Sims 4 人物モデルは
- 後ろ髪は長め、前髪は中分け
- 衣服はヒラヒラ要素あり
となっているので、外套 Coat 系のボーンは要らない。上着 Tops 系の一部は使うべきだろう。髪のボーンはどうすればいいか分からないので調べる。
VRoid 側のモデルで確認すると、前髪系の枝番 01、02、03は全て使用しており、最後のボーンはメッシュ外。
後ろ髪は、枝番07/08はリボン立たせ用、枝番04/06はツインテール用なので今回不要。
枝番05のみで良さそうだ。最後のボーンはメッシュ外なので、05は3本目のボーンまで使うことにする。
- Sims4人物モデルが邪魔なので、オブジェクトモードで Sims4人物モデルの最上位アーマチュア rig を[階層を選択]し [g][x][2]で右の方にどいてもらう
- Vroid人物モデルのアーマチュア Armature を選択し、編集モードに変更
- 使わないボーンを選択して、ボーンプロパティの変形チェックをオフにする。
まとめて設定できないらしい。今後自動化だな。 - オフにしたものは[ポーズ]-[表示/隠す]-[選択物を隠す] またはキーボードショートカット [H] でそのボーンを非表示にする。
※[選択物を再表示]または[ALT]-{H]でいつでも再表示させることができる。
別の方法として、階層表示アウトライナーにて
- Topsで検索した結果ハイライトされたボーンを [Ctrl]クリックして隠す hide
- 同様に Hair、Coat も行う
でもよい。
腰回りのヒラヒラは、前は無いので除外したが横と後ろは残す
髪周りは
何だか、やたら時間がかかったので、ここらで保存する。
手作業での位置合わせの代わりに、自動スクリプトを実行する
自動スクリプト RelocateVRMBones2Sims4Rigs.py を流す。
GitHub - tombi-aburage/Sims4VRMAvatar
髪のボーンの位置を合わせる
- オブジェクトモードで Sims4人物モデルのアーマチュア rig を階層選択し、[g][x][-2]で元の位置に戻ってもらう。
- Vroid4人物モデルのアーマチュア Armature を選択し、編集モードに切り替える。横向き[3]にする。
- 3Dビューのシェーディングはソリッドまたはワイヤーフレーム表示とし、オーバレイを表示、透過表示をオンにする。
- 後ろ髪ボーンを選択し、移動[g]させる。三本目のボーンは髪メッシュの外へ。
- 前髪ボーンも同様とする。乳ボーンを間違って動かさないこと。
正面の髪ボーンは要らなかった。変形をオフ、非表示にする。
- 腰回りのヒラヒラも同様とする。高さは左右まとめて操作する。
- 乳ボーンも同様とする。
※後日の調査で髪・衣服・乳などの揺れモノは必須ボーンではなく、削除に支障はなかったと判明したが、この当時は削除せず変形オフで対応していた
レンダーモードで全周を確認する
また20分ほど時間がかかったので、ここらで保存する。
メッシュの重複頂点の削除を行う
今回は分割出力したので、身体 Body ~ 靴 Shoes まで、それぞれ行う。
- 逐一、オブジェクトモードに戻し、[選択]-[なし]を行ってから、選択し直す
- 編集モードに変更し、選択-全て、メッシュ-マージ-距離で
- 大きい部位から実施し、非表示にしていくと見やすい
また15分ほど時間がかかったので、ここらで保存する。
メッシュの統合は行わないとどうなるか試す
VRoid VRMモデルでは別メッシュとして存在しない靴 Shoes と、歯 Face(というメッシュ名)は身体 Body に結合するのが常道だが、今回は分離したままやってみる。
歯の名前が Face だと混乱するので、名前は Teeth に変えておく。
すべてのボーンを埋め込む
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Vroid人物モデルのアーマチュア Armature を選択し、ポーズモードに切り替える。
- 3Dビューのシェーディングはワイヤーフレーム表示、オーバレイを表示オン、透過表示にする。
- Sims4人物モデルのメッシュ5種類を[Ctrl]クリックで選択する。
- 自動ウェイトでボーンを埋め込む。
- 保存を行う。
今回はコライダーは地面に落ちていない。
首には穴が開いているが、他はどこにも穴が開いておらず上出来
ポーズモードで色々なボーンを動かして動作確認する。
ポーズモードで不要なボーンが表示されているときは邪魔なので非表示にする。
以下は想定の範囲内
- 髪を動かすと顔面崩壊が発生する
- ヒラヒラを動かすとふとももが引っ張られる
- 目線リグを動かすと顔面崩壊する
また15分ほど時間がかかったので、ここらで保存する。
目線リグを動かすと顔面崩壊するので、眼球の頂点グループを補正する
これは頂点グループ割り当ての問題であり、放置できない。
Sims4人物モデルのメッシュ JeanCrawford を選択選択し、編集モードで頂点グループに対する頂点たちの割り当てを補正していく。
眼球の頂点グループが差す頂点たちを正しくする
Sim4人物モデル由来の左眼球頂点グループ b__L(またはR)_Eye__の内容を、VRoid人物モデル由来の左眼球頂点グループ J_Adj_L(またはR)_FaceEye へ移植する。
- オブジェクトモードに変更し、選択-なし
- Sims4人物モデルの顔面メッシュ Head を選択し、編集モードに変更
- 左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、[選択]ボタンを押してみると、右眼球は除外されているが、眼球以外も含まれてしまっていることが分かる
- [削除]ボタンを押す。見た目は変わらないが、これで頂点の割り当てが削除された。
- どこか画面上の空隙をクリックするなどして頂点たちの選択を外す
- Sim4人物モデル由来の左眼球頂点グループ b__L_Eye__を一覧から選び、下のボタン[選択]を押すと、Sims4が左眼の頂点グループと見做していた頂点たちが選択される。
- ここで[g]を押しながら、適当なところに眼球を移動させてみる。
他のメッシュと繋がっていないなら、問題はない。眼球の位置は元に戻す。
もし繋がっていた場合には、眼球の位置を元に戻した後、[メッシュ]-[分割]-[選択]を実行する。見た目は変わらないが、眼球メッシュだけが分離される。 - 左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、その下の[割り当て]ボタンを押す。
- どこか画面上の空隙をクリックするなどして頂点たちの選択を外す。
- 左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、[選択]ボタンを押す。先ほど割り当てた、眼球を構成する頂点たちがハイライトされる。
- [g]を押しながら、適当なところに眼球を移動させてみる。
他のメッシュと繋がっていないなら、問題はない。眼球の位置は元に戻す。 - 同様に右眼球についても移植を行う。
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Vroid人物モデルのアーマチュア Armature を選択し、ポーズモードに変更し、目線リグを選択して操作[r][r]し、顔面に関しては、目玉しか動かないことを確認する。
髪が一緒に移動するはずだが、これは髪の修正のさいにでも直す - また保存を行う。
髪 Hair の頂点グループから両眼球は除外する
髪に、左右眼球 J_Adj_L_FaceEye, J_Adj_R_FaceEye の頂点グループが影響することになっているが、髪には関係ないので削除する。
おそらくは全部青の他の頂点グループも削除してよいと思うが、とりあえずそのままにしておく。
頭 Head の頂点グループから髪は除外する
髪が動いたら頭が凹むことは普通なかろう。J_Sec_Hair は全て削除する。
そうすると頭の上半分が追従しなくなった。
どうやら J_Sec_Hair に共有されていた頂点があったらしく、J_Bip_C_Head の頂点が不足に陥ったようだ。
J_Bip_C_Head の頂点を直し、頭の上半分も含める
既存の選択に追加で、上半分を追加する
歯 Teeth の頂点グループから髪は除外する
髪が動いたら歯が外れることはなかろう。J_Sec_Hair は全て削除する。
身体 Body の頂点グループからヒラヒラを除外するのは止め、ヒラヒラしている部分しか含まないように位置を変更
服の中に2本ヒラヒラボーンを埋め込んだが、位置をズラしてウェイトし直す方がよさそうだ。
髪 Hair のボーンを髪のヒラヒラしている部分しか含まないように位置を変更
大体はいいのだが、髪を動かすと禿が出る、身体と首の間に穴が開くという、分割メッシュの問題は残っている。
ここらで保存を行う。
自動ウェイトをかけ直すと、除外した頂点グループは、もとに戻っちまった...
まあ、そんな気はしていたが。
総括
- 顔面・頭メッシュの補正量があまりにも多すぎる。首も空いてしまっている。
- 髪メッシュを活用するにしても、自動ウェイトだけでは難しく、ウェイトペイントを綿密にやらねばらならんようだ。部位ごとに出力するメリットが感じられない。
- 髪とヒラヒラ衣服については、ヒラヒラ開始部分を第1ボーン、最終ボーンを髪や服メッシュ外に置かないと顔や身体が引っ張られて面倒になりがち。ウェイトペイントすればいいんでしょうが。
- 使わないボーンについて、アーマチュア分離ではなく、変形オフにしたのは、手間はかかったがコライダー剥落は発生しなくなったので妥当であったといえる。
再び1メッシュで出力する方式に戻すと、今度は首の切れ目もなく、過去最高の品質と所要時間で作成できた。自動化の範囲が増えたので、頂点グループ処理に集中できるようになったことが貢献している。