スクリプトによる自動化を推し進め、Sims 4 の人物モデルをなるべく手戻りさせず、今度は半日以内で VRM アバターに改造できるようにする。
前回トラブル含みで、結局まる一日かかった顛末は以下の記事のとおり。
同じ失敗はしない。
使用ソフトウェア一覧
The Sims 4 にて適当に人物モデルを作成する
以前に自動生成したジーン・クロフォード Jean Crawford 氏を今回も流用
ゲームを開始して保存する必要がある。
TS4 SimRipper より DAE 形式でエクスポートする
画面右手で設定を調整できる。以下2つを変更しておく。
- Solid and glass meshes and textures
- Clean DAE mesh? (Removes doubles) にチェック
変更した後、DAE形式でエクスポート。
E:\Users\tombi\Pictures\3D\Sims4 JeanCrawford\JeanCrawford.dae
Blender へ Collada (.dae) でインポートする
Sims4人物モデルを整理して入れておくための器として、新規コレクションを用意する。
- 新規コレクション「Sims4人物モデル 」を作成
- ファイル - インポート - Collada (.dae)
- Lamp を削除、立方体も削除
- 3Dビューのシェーディングをマテリアルプレビューモード表示に切り替え
- モデルを選択して正面向けて拡大[1][.]
Sims4人物モデルのメッシュを確認しておく
TS4 SimRipper の設定の影響により、メッシュが1つに統合された状態で出力された。
Sims 4 人物モデルの顔面のリグを動かす練習をする。
- Sims 4 人物モデルのアーマチュア rig を選択してから、ポーズモードに切り替え
- 右上アウトライナーの検索窓に文字列 b__jaw__(アンダースコア2個)と入力して顎リグを検索
- 顎リグを選択し、[r][x]で口が開くかを確認する
- 検索窓に入力した文字列は消去しておくこと(今後も同じ)
顔面のリグの動作については、後に表情を作成するさいに使うので、一応問題がないか確認しておく趣旨であった。
VRoid Stuidio にてサンプルモデルを 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 を主に利用するので、それ以外は、ぎょろ目クリックで非表示にしておく。
- リグ Armature の配下にある、身体 Body、顔 Face、髪 Hairのメッシュ
Sims4人物モデルを Tポーズにする
最終的にTポーズにする必要があるので、最初のうちにやっておく。
- Sims4人物モデルのアーマチュア rig を選択し、ポーズモードに変更
- 右上階層表示アウトライナーにて、UpperArm__(アンダースコア2個)を検索するか、3Dビューポートをソリッドモード&透過表示に切り替えて目視で右肩のリグ b__R_UpperArm__を何とかして選択
※検索した場合、用が済んだらバツ×を押して検索キーワードを外すこと。 - 右腕を [r][y] で持ち上げて水平位置にする、左腕も同様に水平位置にする
右腕 [r]45、左腕 [r]-45 で簡単に変更できる
見かけ上はTポーズになったが、これで Tポーズが既定のポーズ Rest Pose になったわけではない。 - オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択して、モディファイアプロパティのアーマチュアの右側にある下向き三角ボタンから「適用」を選択
- アーマチュア rig を選択し、ポーズモードで[ポーズ]-[適用]-[レストポーズとして適用]
-
モディファイアープロパティ画面で適用した時点で、メッシュからアーマチュアが剥がされるので、オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択し、モディファイアプロパティタブにて[モディファイアーを追加]-[アーマチュア]でアーマチュアモディファイアを追加し、オブジェクトに rig を指定して適用元の状態に戻す
これから作る人物モデルで不要な Vroid4人物モデルのボーンは非表示にする
今回の Sims 4 人物モデルは
- 後ろ髪を1つにしぱっている
- 前髪はオールバックに等しい状態である
- 衣服はこれ以上ないほどダサくて外套は着せていない
ので、ポニーテール用の髪ボーンだけ表示で残しておく。
削除すると後で必要になった時に困るので、非表示にするだけ。
※前回の作成時はバッサリ削除した
- Sims4人物モデルが邪魔なので、オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択し [g][x][2]で右の方にどいてもらう
- Vroid人物モデルのアーマチュア Armature を選択し、ポーズモードに変更
- 基本骨格ではないボーンを選択して、ボーンの名前を確認しながら、Sims4人物モデルに照らして不要か必要か判断する。
- 例えば、外套の裾 CoatSkirtSide のボーンは、モデルがそもそも外套を羽織っていないので不要だと判断したら、[ポーズ]-[表示/隠す]-[選択物を隠す] またはキーボードショートカット [H] でそのボーンを非表示にする。
※[選択物を再表示]または[ALT]-{H]でいつでも再表示させることができる。
別の方法として、階層表示アウトライナーにて
- Topsで検索した結果ハイライトされたボーンを [Ctrl]クリックして隠す hide
- 同様に Hair、Coat も行う
でもよい。
編集モードでも邪魔になるので、同じようにやっておくとよい*1。
手作業での位置合わせの代わりに、自動スクリプトを実行する
- オブジェクトモードに切り替えてポーズモードを一旦抜ける
- Vroid人物モデルのアーマチュア Armature を選択し、編集モードに変更
※モードが違うので、先ほど非表示にしたボーンも表示されている - Scripting ワークスペースでボーン移動スクリプトを実行する
髪のボーンの位置を合わせる
- オブジェクトモードで Sims4人物モデルのメッシュ JeanCrawford を選択し、[g][x][-2]で元の位置に戻ってもらう。
- Vroid4人物モデルのアーマチュア Armature を選択し、ポーズモードに切り替える。横向き[3]にする。
- 3Dビューのシェーディングはソリッドまたはワイヤーフレーム表示とし、オーバレイを表示をオンにする。
- 幾つかある髪ボーンの中から適切な一本を選択し、移動[g]させて、縛っているあたりを根元にして真ん中へんに通す。
髪メッシュをよく見ると縛ってある位置は中央ではなく、左右対称ではない。髪ボーンの方も右側に流れており左右対称ではない。だから適当に合わせる。
レンダーモードで全周を確認する
男性キャラの場合には、太ももにもコライダーが設定されているようだ。
問題なければ、ここで一旦保存する。
全身のボーンを埋め込む
この後の作業の途中では、保存してはいけない。
保存したタイミングで、何故かコライダーが地面に落ちてしまう。
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Vroid人物モデルのアーマチュア Armature を選択し、編集モードに切り替える
- 3Dビューのシェーディングはワイヤーフレーム表示、オーバレイを表示オン、透過表示にする。
- 上着・外套・関係のない髪ボーンは、ボーン埋め込みさいに対象から外したいので、モデルをグリグリ回しつつ[Shift]キー押しながら各ボーンをクリックするなどして、根性で全て選択する
- メッシュは邪魔であれば、ぎょろ目クリックで非表示にする
- まちがってボーンを選択したときは、もう一回そのボーンを左クリックする
- 対象から外したいものを全て選択が出来たと思ったら、一旦、非表示 [H] にして、必須のボーンが全て表示されているかを確認する
- 再表示 [ALT]+[H] させ [アーマチュア]-[ボーンを別アーマチュアに分離] を行う。
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- 分離されたアーマチュアは Amature.001 のような名前でアウトライナーに表示されている。
分離したにもかかわらず、このままだとボーン埋め込みに巻き込まれるようなのでぎょろ目クリックで非表示にする。 - Sims4人物モデルのメッシュ JeanCrawford を選択する。
- 編集モードに切り替え、[選択]-[全て] で全てのメッシュを選択する
- [メッシュ]-[マージ]-[距離で]により、メッシュの重複頂点を削除する
これを実施しないと以下のエラーになる場合があった。 - 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Vroid人物モデルのアーマチュア Armature を選択し、ポーズモードに切り替える。
- Sims4人物モデルのメッシュ JeanCrawford を選択する。
- [選択]-[全て] またはマウス範囲選択で全てのボーンを選択する
- 自動ウェイトでボーンを埋め込む。
- 保存を行い、コライダーが地面に落ちていないかも確認しておく。
首も含めて、どこにも穴が開いておらず上出来
ポーズモードで色々なボーンを動かして動作確認する。
髪については、一番上のボーンは少しの動きでおかしくなる傾向があったが放置とする。
目線リグを動かすと顔面崩壊するので、眼球の頂点グループを補正する
これは頂点グループも割り当ての問題あり、放置できない。
Sims4人物モデルのメッシュ JeanCrawford を選択選択し、編集モードで頂点グループに対する頂点たちの割り当てを補正していく。
眼球がどうなっているのか確認する
オブジェクトデータプロパティで VRoid人物モデル由来の左眼球頂点グループ J_Adj_L_FaceEye を確認すると、眼球だけでなく、かなり広範囲が範囲に含まれている。
この状態のままだと、目線が動くと同時に画面崩壊は確実だ。
眼球の頂点グループが差す頂点たちを正しくする
Sim4人物モデル由来の左眼球頂点グループ b__L(またはR)_Eye__の内容を、VRoid人物モデル由来の左眼球頂点グループ J_Adj_L(またはR)_FaceEye へ移植する。
- VRoid人物モデルの左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、その下の[選択]ボタンを押す。
- 眼球だけでなく、かなり広範囲が範囲に含まれていることが分かる。[削除]ボタンを押す。見た目は変わらないが、これで頂点の割り当てが削除された。
- どこか画面上の空隙をクリックするなどして頂点たちの選択を外す
- Sim4人物モデル由来の左眼球頂点グループ b__L_Eye__を一覧から選び、下のボタン[選択]を押すと、Sims4が左眼の頂点グループと見做していた頂点たちが選択される。
- ここで[g]を押しながら、適当なところに眼球を移動させてみる。
他のメッシュと繋がっていないなら、問題はない。眼球の位置は元に戻す。
もし繋がっていた場合には、眼球の位置を元に戻した後、[メッシュ]-[分割]-[選択]を実行する。見た目は変わらないが、眼球メッシュだけが分離される。 - VRoid人物モデルの左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、その下の[割り当て]ボタンを押す。
- どこか画面上の空隙をクリックするなどして頂点たちの選択を外す。
- VRoid人物モデルの左眼球の頂点グループ J_Adj_L_FaceEye を頂点グループの一覧から選び、[選択]ボタンを押す。先ほど割り当てた、眼球を構成する頂点たちがハイライトされる。
- [g]を押しながら、適当なところに眼球を移動させてみる。
他のメッシュと繋がっていないなら、問題はない。眼球の位置は元に戻す。 - 同様に右眼球についても移植を行う。
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Vroid人物モデルのアーマチュア Armature を選択し、ポーズモードに変更し、目線リグを選択して操作[r][r]し、目玉しか動かないことを確認する。
- 保存を行い、コライダーが地面に落ちていないかも確認しておく。
いよいよ、顔面の表情モーション(モーフ)に取り掛かる
VRoid人物モデルの顔メッシュにあるシェイプキーを確認しコピペしておく
シェイプキーは VRoid人物モデルに残存しているので、そちらを確認して、最低限、用意すべき表情(シェイプキー)の識別子を集めておく。
- VRoid人物モデルの顔メッシュ Face を選択し、オブジェクトモードに変更し、オブジェクトデータプロパティタブのシェイプキーを参照
- 最低限必須の表情モーション名をダブルクリックしてメモ帳などにコピペする
以下が必須の表情モーションであり、基本 Basis 以外は自作する必要がある。
- 基本 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
まず、一番簡単そうな両目を閉じるモーションから作成する。
表情モーフのさいには顔しかいじらないので、顔をアップにして作業しやすくする。
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- Sims4人物モデルのアーマチュア rig を選択し、ポーズモードに切り替える。3Dビューのシェーディングをマテリアルプレビューに切り替える。
- Vroid人物モデルのアーマチュア Armature が邪魔な場合には、ぎょろ目クリックで非表示にする。
- 顔の辺りの何かを選んで[.]を押してセンタリングし、マウスホイール等で見やすい大きさにする。
準備が出来たら、Sims4人物モデル由来のリグ rig を操作して表情を作る。
- 両目を閉じたいなら、左まぶた b__L_UpLid__、右まぶた b__R_UpLid__を同時選択して [r][x][25]でおしまい。
アウトライナーの検索窓で UpLid と入力して絞り込み、上記の2つを [Ctrl]クリック等で同時に選択するとよい。
表情を作ったら、それをシェイプキーと紐づけて記録
- 安全のため一旦オブジェクトモードに戻し、[選択]-[なし]を実行する
- この状態をシェイプキーに関連付けて記録するため、Sims4人物モデルのメッシュ JeanCrawford を選択する。
- モディファイアープロパティタブを開き、その中にあるアーマチュアのうち Sims4人物モデルのアーマチュア rig の方を選択する
-
右に4つ並んでいるボタンのうち、下向きの山アイコンを押し、シェイプキーとして適用を行う。
すると、このアーマチュアは消去され、メッシュのほうは真顔に戻る。 -
オブジェクトデータプロパティに、シェイプキー「ベース」と、シェイプキー「アーマチュア」が追加されている。「アーマチュア」をダブルクリックして、シェイプキーを先ほど調べたまばたき Fcl_EYE_Close に変更する。
- もし[相対]にチェックが入っていないならチェックを入れる。
試しに、その下の値を1に変更すると、メッシュのほうはまばたきする。
- 値はゼロに戻す。メッシュは真顔に戻る。
- 次の表情制作のために、先ほど消去された Sims4 のアーマチュアをメッシュに割り当て直す。そのためにはモディファイアープロパティタブを開き、[モディファイアーを追加]を行い、Sims4人物モデルのアーマチュア rig を割り当て直す。
メッシュのほうはまばたきする。 -
次の表情制作のために、Sims4人物モデルのアーマチュア rig の状態を真顔に戻す。そのためには Sims4人物モデルのアーマチュア rig を選択し、ポーズモードに切り替え、[選択]-[全て]で全てのリグ(ボーン)を選択し、[ポーズ]-[トランスフォームをクリア]-[全て]を行う。
メッシュのほうは真顔に戻る。
これで1つのシェイプキーの定義が終わった。次の表情の制作を同様に行う。
なお上記手順は、下記別記事の下記の章に準じた手順である。
- まず、一番簡単そうな両目を閉じるモーションから作成する。
※上記記事の Vroid VRM リグは、本稿でいう VRoid人物モデルに相当する。
以後、このような退屈な作業を12回繰り返すことになる。
この作業はミスが多いので、ここについても自動化を検討した。若干、作業手順は上記と異なるが、似たような処理をするスクリプトで自動化できた。
他の表情モーションについても、同様に作成していく。
表情モーションごとのモーフィング手順の例については、
の記事中の以下の章を参照
- 簡単にできる片眼だけ閉じるシェイプキーを実装
- VR アバターとして最低限、必要な表情をひたすら作成していく
- 最も手抜きな怒り Fcl_ALL_Angry、怒り Fcl_ALL_Angry を改良する
- 最も手抜きな楽しい Fcl_ALL_Fun、最も手抜きな嬉しい Fcl_ALL_Joy、楽しい Fcl_ALL_Fun と嬉しい Fcl_ALL_Joy を改良する
- 哀れ Fcl_ALL_Sorrow
- 残りは、あいうえお(母音)リップシンク
- 通常 Neutral も用意
こららも毎回似たような操作をするので毎回手作業の必要はないと考え自動化した。
必須の表情のブレンドシェイプキーは全て作成された。
- 通常を含めて 13個を作成する
- 日本語 Blender 環境では、1つ目の表情を作成したときにベースというシェイプキーが自動的に作成されるが、これの名称は Basis に変更しておく。
レンダリング表示 Rendered Dispaly で360度確認する
- オブジェクトモードにして確認すると、つま先、乳首、髪の毛先端などがメッシュからはみ出しているが、特に問題はなさそうだ。
- ポーズモードにして確認したところ、アーマチュアは割り当てているのに、メッシュが連動して動作しなかった。
調べてみたら、VRoid人物モデル由来のメッシュの方が連動していた。先に最終クリーンアップを行った方がよさそうだ。
ポーズモードで色々とテストし、問題なければ別名で保存
このあとSims 4人物モデル由来のリグ rig は削除するが、後で表情を修正するさいには必要となるので、この時点で一旦保存しておく。
新たな VRM モデルに必須の要素だけを残して、他は全て削除
選択したものだけエクスポートすることもできるようだが、VRoid 人物モデルが混じっていると動作がおかしいので、関係無いオブジェクトを削除する。
-
これまで非表示にしていた VRoid人物モデル由来のメッシュ(身体・顔・髪の3個)は階層を削除して消去する
- VRoid人物モデルをインポートした時に作成されたフォルダ体系と同等にする
メッシュは今回1個しかないが、アーマチュアの下に移動させる
オブジェクトに枝番が付いている場合には名前を変更して枝番を消しておく - Sims 4 人物モデル由来のリグ rig は階層を削除して消去し、メッシュのモディファイアプロパティを開いて、何もリグの無いアーマチュア(ごみ)があれば削除する
- 新規コレクションで作成した器、カメラ、光源などモデルと直接関係ないものを階層を削除して消去する
削除でなく非表示でもいいのかもしれないが念のため。
ポーズモードで色々とテストし、問題なければ別名で保存
斜め向きでポーズモードにして、あちこちのボーンを回転させて動作確認
光源を削除したので、マテリアルプレビューモードで確認する。
頭を動かすと目玉が分離する事象が発生した。
頭のメッシュに割り当てられた頂点グループ J_Bip_C_Head がおかしいのに違いないので目玉と同様に補正する。1分で修正できた。
コライダーも無事なようだ
地面に落ちてはいないようだ。
新たな VRM モデルを VRM 形式で出力する
ここらで一旦保存しておき、VRM形式で出力する。
必要なものを表示状態とし、不要なものを非表示とする
- VRoid人物モデルからインポートされたコライダーのコレクション Colliders
- VRoid人物モデルからインポートされた謎の secondary
- VRoid人物モデルからインポートされたアーマチュア Armature
- Sims4人物モデルからインポートされたメッシュ JaenCrawford
アーマチュア Armature がモディファイアーとして割り付けられている
- 留意点としては、分離したアーマチュアを非表示にしておくこと
特にエラーなどは出なかった。
VRM人物モデルのブレンドシェイプキー を修正する。
Blender の GUI でブレンドシェイプの名称またはプリセットとメッシュ Mesh、シェイプキー Shape の対応関係を明に設定する。
- 階層表示 Outliner にて、アーマチュアを選択
- オブジェクトプロパティ Object Properties タブを選択
すると、
がある。
ここで作成した表情モーションのメッシュやシェイプキーと、ブレンドシェイプキーのプリセット(標準的なモーション名称)を正しく紐づける。
バインドされているメッシュが Face となっているので、今回は JaenCrawford に全て変更する。
VRM人物モデルのメタデータ VRM 0.x Meta を修正する
タイトルも編集しておく。後でもできるので、今やらなくてもいいが。
- タイトル:TheSims4の改造による新造人間(テスト)3
VMagicMirror に読み込んでテストする
詳細設定 - Word to Motion (abc→万歳)から angry を再生したら、ちゃんと怒った。
不具合を修正する
以前製作したときのような不具合はなかったが、頷いたり振り向いたりすると禿げる事象は相変わらずだったので今回は修正する。
Blender でのテストでは、そういう事象にならないので発見するのは難しいのだが、VMagicMirror で試験すると判明した。
首の頂点グループ J_Bip_C_Neck に髪部分が含まれているのが怪しい。
従前の調査によると、
首に含まれるべきなのは首と後頭部だけなので、頂点グループから不要部分は外す。
そういう意味では頭の範囲も怪しいので、首の後に続けて治す。
- 失敗確率高いので、まず保存しておくこと。
- 編集モードにして、真横に向け [3] 、オーバレイ表示オン・透過表示に切り替えて反対側のメッシュも同時に処理できるよう備えておく
- 頂点グループ J_Bip_C_Neck を一覧から選択し、さらに [選択] ボタンを押して頂点たちをハイライトする
頭の上半分まで頂点グループに含まれていたことが分かった - [削除] ボタンを押して割り当てを削除
- 現在の選択から除外しますというモードにする
- その上で、不要部分を範囲選択して頂点を外す
- 頂点グループに [割り当て] し直す
- 頭を直す。首のメッシュ選択は流用して、上半分を足し直す感じ。
- VRMでエクスポートして VMagicMirror でテスト
今度こそ禿になる現象を防いだ。
今回の振り返り
- 自動化を進めたことで、ミスによる手戻りなどの時間は短縮された
- Sims4メッシュを一体で出力したので各部位のメッシュ結合は必要なかった点は楽だったが、同じ人物で衣装や装飾品だけ変更するなど後のメッシュの一部の改造を考えると、メッシュをバラバラに出力する手順を想定した方が良い気はする。
- 一体のメッシュ出力の場合、ポニーテールの髪ボーンは(頭から位置が離れているので)いちおう動作するが、前髪ボーンは顔面崩壊を招くので使えない。
- 一体のメッシュ出力の場合であっても、インポート時には重複頂点は残存しており、それを削除する必要はあった。
- コライダーが地面に落ちる謎現象が発生したが、使用しないアーマチュアを分離したことにより、そちらを親ボーンとして認識してしまったらしい。アーマチュアを分離するのではなく、変形をオフにするだけの方がよい。ボーンを埋め込んだ後からでもできる。
- 服装によっては、不要判断した外套や上着のボーンを一部使ってもいいかと思った。風の効果を有効にしたとき、服がひらひらする効果があるようだ。
- 最終的に Sims4のリグ rig を削除したが、後の表情の改造を考えると、VRoid由来の不要ボーンの処置と同様、単に非表示にしておくのが適切だったかもしれない。
- 眼/首/頭など、VRoid由来の頂点グループがSims4由来のメッシュに強制マッピングされる際に生じてしまうズレの問題は、相変わらず手修正で対応せねばならなかった。首から上は、基本的に頂点グループはズレていると思っておくべきで、VRM 出力前に直しておく方が手戻りしない。
- 眼については Sims4由来の頂点グループの流用で対処した
- 首については今回は手作業で対処したが、Sims4由来の首頂点グループ b__Neck__ の流用でおそらく対処できた
- 頭については Sims4由来の頂点グループ b__Head__ は髪を含み、口元を含まないので流用できず、今回のように首を移行した後、手作業で直す方が早そう
- VRoid Hub へのアップロードは必須ではなかった
*1:後日の調査で髪・衣服・乳などの揺れモノは必須ボーンではなく、削除に支障はなかったと判明