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

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

Sims 4 の人物モデルをなるべく手戻りさせず一日以内で VRM アバターに改造する

前回の VRM アバター制作では、様々な試行錯誤・トラブル対応をしながら同時に作業手順の記事化を行ったこともあり、夏季休暇の全て(のべ日数で9日)を費やした。

典型的なトラブルと手順は明確になったので、今回は一日で製作したい。
前回との違いは

  • 男性キャラクター
  • 身体部位のメッシュは区別せずに1つのメッシュで出力

The Sims 4 にて適当に人物モデルを作成する

氏名も含めて自動生成したジーン・クロフォード Jean Crawford 氏

ゲームを開始して保存する必要がある。

使用ソフトウェア一覧

  • The Sims  ※特別セールだと75%引き500円
    • TS4 SimRipper Classic v3.13.1.0
  • VRoid Studio
  • Blender 3.2.2
  • VRoid Hub

TS4 SimRipper より DAE 形式でエクスポートする

画面右手で設定を調整できる。以下2つを変更しておく。

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

変更した後、DAE形式でエクスポート。

E:\Users\tombi\Pictures\3D\Sims4 JeanCrawford\JeanCrawford.dae

BlenderCollada (.dae) でインポートする

Sims4人物モデルを整理して入れておくための器として、新規コレクションを用意する。

  1. 新規コレクション「Sims4人物モデル 」を作成
  2. インポート -  Collada (.dae
  3. Lamp を削除、立方体も削除https://cdn-ak.f.st-hatena.com/images/fotolife/t/tombi-aburage/20220806/20220806213544.png
  4. 3Dビューのシェーディングをマテリアルプレビューモード表示に切り替え
  5. モデルを選択して正面向けて拡大[1][.] 

Sims4人物モデルのメッシュを確認しておく

TS4 SimRipper の設定の影響により、今回はメッシュが1つで出力された。

Sims 4 人物モデルの顔面のリグを動かす練習をする。後に表情を作成するさいに使うので、1メッシュの場合でも一応問題がないか確認しておいた。

tombi-aburage.hatenablog.jp

VRoid Studio にてサンプルモデルを VRM形式でエクスポートする

男性のサンプルとして AvatarSmaple_C というものがある。
必須入力のタイトルと作者だけ入力して、VRMエクスポートを行う。

E:\Users\tombi\Pictures\3D\Sims4 JeanCrawford\AvatarSmaple_C.vrm

VRM Add-on for Blender にてインポートする

Sims 4 は Aポーズ、VRoid は T ポーズで重なって表示されている。
コライダー Colliders は女性のサンプルキャラクターよりも少し多い。

VRoid のリグ Armature を主に利用する。

VRoid人物モデルのうち、リグ以外(つまり身体 Body、顔 Face、髪 Hair のメッシュ)はぎょろ目クリックで非表示にしておく。

Sims4人物モデルを Tポーズにする

最終的にTポーズにする必要があるので、最初のうちにやっておく。

  1. Sims4人物モデルのアーマチュア rig を選択し、ポーズモードに変更
  2. 右上階層表示アウトライナーにて、UpperArm__(アンダースコア2個)を検索するか、3Dビューポートを目視して右肩のリグ b__R_UpperArm__を選択
    ※検索した場合、用が済んだらバツ×を押して検索キーワードを外すこと
  3. 右腕を [r][y] で持ち上げて水平位置にする
    右腕 [r]45、左腕 [r]-45 で簡単に変更できる
  4. 左腕も同様に水平位置にする
    見かけ上はTポーズになったが、これで Tポーズが既定のポーズ  Rest Pose になったわけではない。
  5. オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択して、モディファイアプロパティのアーマチュアの右側にある下向き三角ボタンから「適用」を選択
  6. ポーズモードで[ポーズ]-[適用]-[レストポーズとして適用]

  7. モディファイアープロパティ画面で適用した時点で、メッシュからアーマチュアが剥がされるので、オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択し、モディファイアプロパティタブにてアーマチュア・モディファイアを追加してオブジェクトに rig を指定して適用元の状態に戻す

これから作る人物モデルで不要な VRoid 人物モデルのボーンは非表示にする

今回の Sims 4 人物モデルは

  • 後ろ髪を1つにしぱっている
  • 前髪はオールバックに等しい状態である
  • 衣服はこれ以上ないほどダサくて外套は着せていない

ので、ポニーテール用の髪ボーンだけ表示で残しておく。

削除すると後で必要になった時に困るので、非表示にするだけ。
※前回の作成時はバッサリ削除した

  1. Sims4人物モデルが邪魔なので、オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択し [g][x][2]で右の方にどいてもらう
  2. VRoid 人物モデルのアーマチュア Armature を選択し、ポーズモードに変更
  3. 基本骨格ではないボーンを選択して、ボーンの名前を確認しながら、Sims4人物モデルに照らして不要か必要か判断する。
  4. 例えば、外套の裾 CoatSkirtSide のボーンは、モデルがそもそも外套を羽織っていないので不要だと判断したら、[H]で非表示にする。
    ※[ALT]-{H]でいつでも再表示させることができる。

※後の制作では、非表示にするだけでは不十分と判断し、ボーンによる変形 Deform をオフにしているが、この時は非表示にしただけ*1

単にわかりやすいという理由で、くるぶしから着手する。

足にはボーンが2つあるが、くるぶしの関節球だけ正確に合わせる。

  1. 足元に注目したいので、VRoid人物モデルのアーマチュア Armature を選択し、ポーズモードに変更し、足のボーンかリグを選択して拡大 [.] する。
    マウスホイールで拡大の度合いは調整する
  2. 編集モードに切り替え、ワイヤーフレーム表示に切り替える。
    オーバレイ表示、透過表示オンになっていることも確認しておく。
  3. 基底 Root のボーンや、外套のボーンが邪魔なので、足首周りにあるものたちは非表示 [H] にする。
  4. 左右両方のくるぶしの関節球を[Shift]クリック等で両方とも選択した上で、横向き [3] にする。
  5. 親切なことに Sims4人物モデルのくるぶしリグがあるので、[g] で関節球リグを移動させる。

  6. 先ほど横から見た位置は合わせたが、前向き[1] にして [g] で関節球リグの位置合わせをする。[.] で極限まで拡大すれば重ねられるだろう。

同様にして、膝の関節球を修正する

同じように邪魔な外套ボーンは非表示にしつつ、横向き・前向きで位置合わせする。

同様にして、太ももの付け根の関節球を修正する

同様にして、頭・目線・首・鎖骨・肩・肘・手首・指の位置を合わせる

頭と目線リグ2本の位置合わせ

頭と目線リグについては、垂直方向の調整のみ行えば十分である。

まず Sims4人物モデルのリグの配置状況を調査する。

  1. オブジェクトモードに切り替え、ソリッドモード表示に切り替える。
    オーバレイ表示、透過表示オンになっていることも確認しておく。
  2. Sims4人物モデルのアーマチュア rig を選択する。
  3. 編集モードに切り替え、ソリッドモード表示に切り替える。
    オーバレイ表示、透過表示オンになっていることも確認しておく。

Sims4人物モデルの頭と首のリグの位置を記憶したら、VRoid人物モデルのボーンの位置を合わせる。

  1. Vroid4人物モデルのアーマチュア Armature を選択し、編集モードに変更し、頭ボーンか目線リグを選択して拡大 [.] する。
  2. 何とかして目線リグ2本と、頭のボーンの尖った側の球を選択し、横向き[3]にして、頭のボーンの先が耳の上の付け根あたりに来るように[g]で位置を合わせる。
    VRoid のサンプルモデルでの位置は下図のとおり。

  3. 頭ボーンの付け根の関節球(正確には首ボーンの尖った側の球)を選択し、[g] でSims4人物モデルの頭に合わせる。

首の位置合わせ

首については、垂直方向の調整のみ行えば十分である。

首ボーンの付け根の関節球(正確には上胸ボーンの尖った側の球)を選択し、[g] でSims4人物モデルの首に合わせる。

鎖骨・肩・肘の位置合わせ

引き続き編集モードでの位置合わせを進めていく。ソリッドモード表示、オーバレイ表示、透過表示オンになっていることも確認しておく。

  • 横からだと腕と指が邪魔なので正面に向け [1]、Sims4人物モデルのリグに位置[g]を合わせていく。
  • 横からだと腕と指が邪魔なので天から見下ろし [7]、Sims4人物モデルのリグに位置[g]を合わせていく。

手首・全ての指の位置合わせ

とても細かい作業になるので適宜 [.] で拡大するとよい。
ミラー化せずとも、片方5分ずつくらいで終わるはず。

  • 横からだと手首より先をまとめて選択しづらいので、天から見下ろし [7]、手首から先を全部選択し、手首を Sims4人物モデルのリグに位置合わせ [g] する。
  • 全ての指の位置合わせをする。つま先は目分量で。
  • 手ボーンの尖った先の球は、掌中央付近にある下向きリグに合わせる。
  • 四指の全てを選択し、正面から表示[1]に切り替え、まとめて高さを合わせる [g][z]。微妙にズレるところはあるが大勢に影響ないから気にしない。

  • 同様に手首の高さを合わせる。
  • 親指の位置を逐一合わせる。

胸・腹の位置を合わせる

この男、やせ型なので胸板はないが、胸の位置と合わせて乳首位置も合わせる。
胸の位置については正面、乳首位置は側面が見やすいだろう。

乳首ボーンは胸板から飛び出していてOK

VRoid のサンプルモデルでの位置は下図のとおりだった。

Sims4人物モデルのリグも、胸板の外にあるので位置を合わせておく。

腹も同様に位置合わせする。

後回しにしたが、実は一番重要な腰の位置を合わせる

編集モードで基底ボーン Root を表示 [Alt][H]させて、先端部を動かす。

髪のボーンの位置を合わせる

縛っているあたりを根元にして真ん中へんに通す。
縛ってある位置は中央ではないので、左右対称ではない。

レンダーモードで全周を確認する

男性キャラの場合には、太ももにもコライダーが設定されているようだ。
問題なければ、ここで一旦保存する。

全身のボーンを埋め込む

ポーズモードで非表示のボーンを一旦全部表示させ、あらためて確認しながら、不要なものを非表示にする。基底ボーンを忘れないこと。

※後日の制作では、非表示にするだけでなく、変形 Deform もオフにしているが、この時は非表示にしただけ。

先にメッシュを選択してから、マウス範囲選択で全てのボーンを選択する。

今回は全身が1メッシュに統合された状態なので、いきなり全身を対象に自動ウェイトでボーンを埋め込む。

うまくいかなかった。

一つ以上のボーンで解決に失敗しました

メッシュの重複頂点を削除する

TS4 Sim Ripper でのエクスポート時にメッシュが1つに統合されたので、頂点も重複されているという錯覚に陥っていた。

メッシュの重複頂点の削除を行ったら、3002個の頂点が削除された。

再度、自動ウェイトで埋め込みを行ったら今度は成功した。

首も含めて、どこにも穴が開いておらず上出来

前回は複数メッシュで出力したため、頭と胴体が別メッシュとなり、その繋ぎ目部分の首のあたりが開口してしまっていたが、今回は塞がっている。

しかし髪については、一番上のボーンは少しの動きでおかしくなる傾向があった。

今回は髪メッシュも1メッシュに統合されてしまっているので、前回のように髪は髪だけで個別にボーン(リグ)埋め込むことができない。

髪ボーンと対応している頂点グループを確認する

今回は最初から1メッシュだけになっているので、編集モードで確認すると、頂点グループも唯一のメッシュに定義が集結していた。

髪ボーンと酷似した名前の頂点グループは、頭に近い方から J_Sec_Hari1_05、 J_Sec_Hari2_05、 J_Sec_Hari3_05 なので、同じ名称の頂点グループを確認する。

頂点グループ J_Sec_Hari1_05 には、後ろ髪だけでなく、頭の大半も含まれている。

なるほど、先ほどのような動きになった理由がよく分かった。

直すことはおそらく難しくなく大きな不具合でもないので、このまま続行する。

目線リグを動かすと顔面崩壊するので、眼球の頂点グループを補正する

メッシュを選択して、編集モードで頂点グループに対する頂点たちの割り当てを補正していく。

眼球がどうなっているのか確認する

VRoid人物モデル由来の左眼球頂点グループ J_Adj_L_FaceEye を確認すると、眼球だけでなく、かなり広範囲が範囲に含まれている。

この状態のままだと、目線が動くと同時に画面崩壊は確実だ。

眼球の頂点グループが差す頂点たちを正しくする

Sim4人物モデル由来の左眼球頂点グループ b__L(またはR)_Eye__の内容を、VRoid人物モデル由来の左眼球頂点グループ J_Adj_L(またはR)_FaceEye へ移植する。

  1. VRoid人物モデルの左眼球の頂点グループ J_Adj_L_FaceEye を一覧から選び、下のボタンで選択、削除
  2. Sim4人物モデル由来の左眼球頂点グループ b__L_Eye__を一覧から選び、下のボタンで選択

  3. VRoid人物モデルの左眼球の頂点グループ J_Adj_L_FaceEye を一覧から選び、下のボタンで割り当て
  4. 同様に右眼球についても移植を行う。
  5. 左眼球の頂点グループ J_Adj_L_FaceEye を一覧から選び、下のボタンで選択して左眼の眼球が選択されるか確認する
  6. 同様に右眼球についても確認を行う。
  7. Vroid4人物モデルのアーマチュア Armature を選択し、ポーズモードに変更し、目線リグを選択して操作[r][r]し、目玉しか動かないことを確認する。

いよいよ、顔面の表情モーション(モーフ)に取り掛かる

利用したいアバター再生環境で利用できるモーションの挙動を確認しておく

前回の制作で最低限用意すべき表情(シェイプキー)を洗い出し、必要な表情の種類は13個だけと限定したので、今回もそれらの表情だけを同様の手順で作る。

喜怒哀楽、まばたき、リップシンクあいうえおなど、基本的なものは VRoid 人物モデルの方にはすでに実装されているので挙動は確認しておく。

VRoid人物モデルの顔メッシュにあるシェイプキーを確認しコピペしておく

シェイプキーは VRoid人物モデルの顔メッシュに残存しているので、そちらを確認して、最低限、用意すべき表情(シェイプキー)の識別子を集めておく。

  1. VRoid人物モデルの顔メッシュ Face を選択し、オブジェクトモードに変更し、オブジェクトデータプロパティタブのシェイプキーを参照
  2. 最低限必須の表情モーション名をダブルクリックしてメモ帳などにコピペする
    • 基本 Basis
    • 通常 Fcl_ALL_Neutral
    • 怒り Fcl_ALL_Angry、楽しい Fcl_ALL_Fun、喜び Fcl_ALL_Joy、哀しみ Fcl_ALL_Sorrow
    • まばたき Fcl_EYE_Close、右のみ Fcl_EYE_Close_R、左のみ Fcl_EYE_Close_L
    • あいうえお Fcl_MTH_I、Fcl_MTH_A、Fcl_MTH_E、Fcl_MTH_O、Fcl_MTH_U

まず、一番簡単そうな両目を閉じるモーションから作成する。

表情を作る手順は前回の制作時と同様なので、前回の記事を参照のこと。

  • まず、一番簡単そうな両目を閉じるモーションから作成する。

tombi-aburage.hatenablog.jp

※上記記事の VRoid VRM リグは、本稿でいう VRoid人物モデルに相当する。

他の表情モーションについても、同様に作成していく。

表情を作る手順は前回の制作時と同様なので、前回の記事を参照のこと。

  • 簡単にできる片眼だけ閉じるシェイプキーを実装
  • VR アバターとして最低限、必要な表情をひたすら作成していく
    • 最も手抜きな怒り Fcl_ALL_Angry、怒り Fcl_ALL_Angry を改良する
    • 最も手抜きな楽しい Fcl_ALL_Fun、最も手抜きな嬉しい Fcl_ALL_Joy、楽しい Fcl_ALL_Fun と嬉しい Fcl_ALL_Joy を改良する
    • 哀しい Fcl_ALL_Sorrow
    • あいうえお(母音)リップシンク
    • 通常 Neutral も用意

必須の表情のブレンドシェイプキーは全て作成された。

  • 通常を含めて 13個を作成した。

レンダリング表示 Rendered Dispaly で360度確認する

  • オブジェクトモードにして確認すると、つま先、乳首、髪の毛先端などがメッシュからはみ出しているが、特に問題はなさそうだ。
    ※気になるようなら、ボーンの表示形式を変更すれば済む
  • ポーズモードにして確認したところ、アーマチュアは割り当てているのに、メッシュが連動して動作しなかった。
    調べてみたら、Sims 4 人物モデルの方ではなく、VRoid人物モデル由来のメッシュの方が連動していた。先に最終クリーンアップを行った方がよさそうだ。

新たな VRM モデルに必須の要素だけを残して、他は全て削除

選択したものだけエクスポートすることもできるようだが、VRoid 人物モデルが混じっていると動作がおかしいので、関係無いオブジェクトを削除する。

  • これまで非表示にしていた VRoid人物モデル由来のメッシュ(身体・顔・髪の3個)は階層を削除して消去する

  • VRoid人物モデルをインポートした時に作成されたフォルダ体系と同等にする
    メッシュは今回1個しかないが、アーマチュアの下に移動させる


    オブジェクトに枝番が付いている場合には名前を変更して枝番を消しておく

  • Sims 4 人物モデル由来のリグ rig は階層を削除して消去し、メッシュのモディファイアプロパティを開いて、何もリグの無いアーマチュア(ごみ)があれば削除する
    ※後日の制作では、Sims 4 人物モデル由来のリグ rig は削除せず、非表示にしておけば十分と判明したが、この時は削除した。
  • 新規コレクションで作成した器、カメラ、光源などモデルと直接関係ないものを階層を削除して消去する

ポーズモードで色々とテストし、問題なければ別名で保存

斜め向きでポーズモードにして、あちこちのボーンを回転させて動作確認

光源を削除したので、マテリアルプレビューモードで確認する。

全然ポーズが機能しない。ボーン埋め込み(自動ウェイト)をやり直しても効果が無い。これは困った…

メッシュのモディファイアープロパティに割り当てられていたアーマチュアを一旦削除してから、もう一遍ボーン埋め込みを行ったところ復帰した。脅かすなよ。

新たな VRM モデルを VRM 形式で出力する

特にエラーなどは出なかった。

VRoid Hub にキャラクターを登録する

キャラ名:TheSims4の改造による新造人間(テスト)2

よく見ると、腕と体の間の空間が狭く、異常になっている。

※後日の制作では、VRoid Hub への登録は行っていないが、この時は登録した。

頂点グループの頂点割り当てを削除したら余計壊れたので戻した。

Blender で再度よく確認すると、腕や足を上げたときに、脇の下あたりから何か生物が誕生しそうな勢いで盛り上がった。

近傍の頂点グループを洗い出して確認したところ、この人物モデルが着用していないヒラヒラ上着向けの頂点グループたち J_Sec_L_TopsUpperArmOutside_01、J_Sec_L_TopsUpperLegFront_01、J_Sec_L_TopsUpperLegSide_01 にメッシュの頂点がたくさん割り当たっているのが怪しいので、一旦すべての頂点を削除した。

すると異様な盛り上がりや凹みは生じなくなったが、代わりに服が裂けたり、服にめり込んだりした。

やるなら、頂点すべて削除など雑な方法ではなく、ちゃんと調整しないとダメなようだ。時間かかりそうなので、今はやらない。

VRoid ハブからダウンロードする。

モデル画像のサムネイルなどのVRM 情報が更新されたモデルをダウンロードする。

VRM 情報を修正して、シェイプキーを割り当てる

BlenderGUIブレンドシェイプの名称またはプリセットとメッシュ Mesh、シェイプキー Shape の対応関係を明に設定する。

  • 階層表示 Outliner にて、アーマチュアを選択
  • オブジェクトプロパティ Object Properties タブを選択

すると、

  • VRM というセクションの中に、表情モーションのブレンドシェイプキーを設定できる項目がある

ので、メッシュ、シェイプキーを選択し、ウェイトを1.00に設定する作業を、全てのシェイプキーを割り当てるまで(つまり13回)繰り返す。

VMagicMirror に読み込んでテストする

詳細設定 - Word to Motion (abc→万歳)から angry を再生したら、ちゃんと怒った。

品質面では色々課題が残ってしまった

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

前回のべ9日かけて VRM アバターを作成したさいの試行錯誤の記事

tombi-aburage.hatenablog.jp

を更新しながら作業して、今度はのべ1日以内で完了したが、首に穴が開いていないという点を除いては、総合的な品質としては昨日のモデルに劣っている。

一番最初の

  • TS4 SimRipper より DAE 形式でエクスポート

のさい、前作とは異なりメッシュを分割出力 All separate meshes, one texture せずに、1つのメッシュにしたことが影響したのではないかと想像したが、複数メッシュでの出力にして再現テストで確認したら同じ不具合が出たので、メッシュの分割出力のせいではなかった。

さきほどの不具合は、ほぼ全て余計なボーン(リグ)のせいだった

さすがに前回よりも低品質のままでは終われない。こうなった原因が何かを特定した。

今回の制作では、前回とは異なり、使わないボーンを削除せず非表示にしていた。
これらの非表示で残していたボーンが自動ウェイトのさいに悪さをしていた。

tombi-aburage.hatenablog.jp

これらを別アーマチュアに分離して処理対象外にしたら、先ほどの不具合は消えた。

※後日の制作では、アーマチュアに分離するとコライダーが外れる別の不具合がが散見されたので、分離はせずに変形 Deform をオフにしたが、この時は別アーマチュアに分離した。

リグの位置合わせなどは、完全自動化したいところ

慣れてきたとはいえ、それなりに時間がかかっている。
Blenderスクリプトが書けるらしいので、完全自動化したいところだ。

やりましょう。

すごくハマったが、リグの位置合わせは、いちおう完全自動化することはできた。

tombi-aburage.hatenablog.jp

表情モーフのシェイプキー適応も、完全自動化したいところ

やりましょう。

手動ではミスなしの行えない「シェイプキーとして適用」前後の操作についても、ほぼ自動化することはできた。

tombi-aburage.hatenablog.jp

 

*1:さらに後日の調査で髪・衣服・乳などの揺れモノは必須ボーンではなく、削除に支障はなかったと判明