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

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

Sims 4 の人物モデルを VRM アバターに改造して VMagicMirror で動作確認した(成功)

Sims 4 の人物モデルを Blender に取り込み、VRoid のボーン・リグ・ブレンドシェイプキーを組み込んだ VRM アバターに改造する。髪・身体までは道なりで問題なかったが、顔面の表情で難航。しかし何とか完成した。

首が裂けている以外は問題ない。

事前準備

Sims 4 で適当に人物モデルを作成し、The Sims 4 Ripper にて Collada (.dae) 形式でエクスポートしてあること

Sims 4 では、人物モデルは Cassandor Goth という氏名だったので、フォルダ・ファイル名も同じとしている。

E:\Users\tombi\Pictures\3D\Sims 4 CassandorGoth\CassandraGoth.dae

tombi-aburage.hatenablog.jp

VRoid で適当に人物モデルを作成し、VRM (.vrm) 形式でエクスポートしてあること

  • サンプルとして人物モデルが用意されているので、それをエクスポートする。
  • エクスポートは、右上にあるアップロードボタンの中で行える。

少し試した感じでは、性別を合わせなくても大丈夫そうだったが、人体モデル系のソフトウェアでは男女別々のモデルになっていることが多いので、念のため合わせておく。

E:\Users\tombi\Pictures\3D\Sims 4 CassandorGoth\Cassandor Goth.vrm

VRM Add-on for BlenderBlender 3.2のアドオンに追加してあること

かつては VRM_IMPORTER というアドオンを使っていたが、今は以下を使用する。

vrm-addon-for-blender.info

Blender を起動して、Edit - Preferences - Addons にて確認すること。

Sims 4 人物モデルをインポート

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

これから2つのモデルを行き来しながら操作するので、途中で判らなくならないよう整理しておく。

  • 画面右上の階層表示 Outliner のシーン・コレクション Scene Collection に新規コレクション New Collection を追加する

Collection 2 が作成されたらダブルクリックして、その名称を「Sims 4 人物モデル」に変更しておく。

Sims 4 人物モデルの Import - Collada (.dae*)  を行う。

コレクションを選択状態にしてからインポートを行うこと。

指定するファイルは冒頭で保存した Sims 4 のモデルデータ。

E:\Users\tombi\Pictures\3D\Sims 4 CassandorGoth\CassandraGoth.dae

インポートに成功すると、コレクションの中に、ランプ Lamp とリグ rig 一式が格納される。

以下のような Aポーズの Sims 4 人物モデルが取り込まれている。

オブジェクトモード Object Mode で、リグ rig 一式を選択した状態でテンキーショートカット [.][1] で拡大して正面を向かせる。

Sims 4 人物モデルの顔面のリグを動かす練習をする

何故ここで練習するのかというと、後に喜怒哀楽の表情をブレンドシェイプ(シェイプキー、モーションキー)ごとに作成せねばならないので、Sims 4 が付与したリグやメッシュの構造を大体は理解しておいた方がよいからだ。

tombi-aburage.hatenablog.jp

VRoid から出力した VRMのリグをインポート

リグを整理して入れておく器として、新規コレクションを用意

実際には、リグ以外の全ての Vroid 由来のデータが取り込まれるが、興味関心があるのはリグだけである。よって、その名称は「Vroid VRM リグ」としておく。

VRM Add-on for Blender で Vroid のリグをインポート

指定するファイルは冒頭で保存した

E:\Users\tombi\Pictures\3D\Sims 4 CassandorGoth\Cassandor Goth.vrm

新規コレクションの中に手動で格納しようとしたが、うまくいかなかった。

おとなしく新規コレクションの中には納まってくれなかった。

  • コライダー Collidars はコレクションなので、そのままよく狙ってドラッグ
  • アーマチュア Armature はコレクションではないので、階層選択 Select Hierarcy してからよく狙ってドラッグ

のようにいろいろやってみたが、期待したようには格納されなかった。
もとに戻して、上図のままにしておく。

階層表示 Outliner の中でここから下は VRoid VRM リグ由来のデータだったということくらいは分かるのでラベルとしては使えるだろう。

二人とも取り込まれ、タイタニック状態となった

取り込んだ後にモデルを移動させない限り、二人とも原点近くに取り込まれるため、タイタニック状態となる。


www.youtube.com

  • VRoid VRM 由来のモデルデータの方は Tポーズ
  • Sim 4 人物モデルの方は Aポーズ

となっており、かなり背丈にも差があるようだ。

重なっていると  VRoid VRM 由来のモデルデータがよく見えないので、ひとまず Sims 4 人物モデル は非表示にする。

VRoid VRM 由来のモデルデータのうち、リグ以外(つまりメッシュ)は非表示にしておく

VRoid VRM 由来のモデルデータについて、最終的に活用するのはリグだけである。
メッシュの方は、データ構造は確認するが、最終的には捨てるデータとなる。

データ構造は以下のようになっていた:

  • リグの名前は Armature となっている。
  • メッシュは身体 Body、顔面 Face、髪形 Hair となっている。
  • その下には、物理衝突判定用のコライダーがたくさんある。

メッシュはほとんど参照しないので、ぎょろ目クリックでリグ以外を非表示にする。

一個一個でもよいが、リグ以外を[Shift] クリックなどでまとめて選択して、オブジェクトモードの Object - Show/Hide - Hide Selected などでまとめて非表示にするのでもよい。

VRoid VRM リグの方は、ボーン(リグ)だけ見えている状態になったかと思う。

メッシュを非表示にしたので、見かけ上、ボーン(リグ)だけとなった。

このボーン(リグ)をSims 4 人物モデルに埋め込む予定だ。

Sims 4 人物モデルの方には、身体内にボーンやリグはあるが VRM が期待するようなボーン・リグ構造ではないので、このVRoid VRM リグのボーンだけを借りてきて、文字通り換骨奪胎する必要がある。

両方のモデルのメッシュとボーンの位置を揃える

インポート直後の時点ですでに、2つのモデルの身長差・体格差が大きいことは明白だった。換骨奪胎する前には、メッシュとボーンの位置合わせが必要である。

ここで試しに Sims 4 人物モデルの方の表示/非表示を切り替えてみる。

Blender あるあるだが、画面右上の表示モードがオーバレイ表示 Show Overay になっていないとボーンは見えないかもしれないので注意

  • 下半身の高さは大体は合っているが、少し腰の位置が低いか。
  • 顔と上半身の位置はかなりの差があるようだ。

これから作る人物モデルで不要なボーンは削除する。

今回の Sims 4 人物モデルは

  • 短髪であり、髪はおさげ(2本)にまとめている
  • 前髪に至っては、昭和の女学生も顔負けの七三分けとなっている
  • 衣服もボディコンシャス(死語)で外套は着せていない

ほとんどウルトラの母のような単純さとなっている。

これから位置をあわせるのだが、VRoid VRM リグの上半身のボーン(リグ)群は、前面から見ると、やたら複雑に見えることかと思う。

エディットモード Edit Mode に切り替えて、上半身の背骨あたりを選択してセンタリング [.] し、斜め横向きで表示させてみると、構造が多少分かるようになる。

しだれ柳のようにぶら下がっていた多数のボーン(リグ)は、それらに付けられた名前や位置から想像すると、ポニーテール用の髪、前髪、前後の外套の外周などを表象するためのものらしい。

したがって、多くのしだれ柳ボーンは割り当てるメッシュもなく、あっても意味がないので削除する。すっきりした。

※後の制作では削除せず変形 Deform オフで対処としているが、この時は削除した。

これらのボーン(リグ)が全部必要なのかというと、実は必要ない。

ヒューマノイド概要 - VRM ドキュメント では

Unity の HumanoidAvatar を元に決めたのでだいたい同じ

とあり、その Unity においては、基本骨格のみが既定となっている。

tombi-aburage.hatenablog.jp

HumanBodyBones - Unity スクリプトリファレンス

くるぶしと膝の位置を合わせる

Sims 4 人物モデルをいったん表示させ、下半身 Bottom を非表示にする。

...なるほどわからん

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

ハイヒール仕様なのか、くるぶしの位置は高い気がする。

  • 靴 Shoes のメッシュは邪魔な場合、非表示にする
    多分、表示したままでも大丈夫だとは思うが。
  • 基底 Root のボーンが邪魔な場合、作業中は非表示にする
    多分、表示したままだと邪魔だと思う。

リグの球を選択して [.] で拡大しつつ、エディットモードで位置を修正していく。

必ず [Shit] クリック等で左右両方を同時に選択し、基本的に全てショートカット操作で、左右まとめて変更する。見づらいときはワイヤーフレーム表示 Wireframe にするとよい。

当初は上図のように、足のメッシュにボーン(リグ)を収めるべきものと思い込んでいたが、VRoid VRM 由来のモデルで出力されたメッシュとリグの位置関係と確認すると、上図の位置取りは実は妥当ではなかった。

足のリグはインバースキネマティクス IK であり、つま先は下図のようにはみ出させるべきものらしい。

同様にして、膝を修正する。

エディットモードで左右の膝の関節の玉を [Shit] クリック等で両方選択し、垂直固定で上にずらす [g][z]。横向き [3] でも関節の位置の妥当性を確認する。

時々マテリアルプレビュー表示に戻し、Sims 4 人物モデルの下半身をオンオフして、当てはまり具合を確認する。

上半身の位置を合わせる

次に腰の位置を修正しようとしたら隙間がなく、やりづらかった。
すきまを空けるためにも、上半身のなるべく上の方から順に補正していく。

 VRoid VRM リグが見やすいよう、Sims 4 人物モデルの上半身 Topを非表示にする。

神様ごめんなさいグロ画像となりました...

上半身あたりのボーン(リグ)を確認する

  • 上の方に2本、前方に突起しているのは顔と目線のリグ
  • 下の方の2本の突起は乳のリグ
  • ところどころゴミのように浮いている小さなリグは、Sims 4 人物モデルのリグ
    今は VRoid VRM リグを編集しているので、編集モード Edit Mode を抜けない限り、Sims 4 人物モデルのリグが選択されることはない

となっている。

顔と目の VRoid VRM リグの位置合わせの位置については、VRoid VRM 由来のモデルの顔メッシュ Face を表示オンオフさせると、あるべき位置の想定が分かる。

  • 高さは目の位置
  • 幅は本来の目の幅よりも狭く、鼻血止めるときに指で押さえる小鼻あたり

顔・目・喉・鎖骨・肩・肘・上下腕の位置を合わせる

微調整はあとでやるが、目分量で関節部の位置を大体は合わせておく。

  • 顔目リグから首 Neck あたりまでを選択し、真上に引き上げる [g][z] 。

鎖骨・肩の位置も上げる。

肘と上下腕の位置も大体は合わせる。

  • 奥行き以外を調整 [g][Y] したあと、奥行き [g][y]を合わせる。

全ての指の位置を合わせる

手と指には、かなりの数の細かいボーン(リグ)があり、当然ながらメッシュとは正確に合わせなければいけない。

正確に位置合わせするさいには、Sims 4 人物モデルのリグ(小さくで見づらい)がかなり役に立つ。

  • 下腕の先を選択して拡大 [.] すると、Sims 4 人物モデルのリグが表示されているのが見える。
  • これらは手を握る方向に向いたリグであり、 方向については VRoid VRM リグの想定とは異なっているが、ボーンの根元に着目すると、位置は同じと考えられるものが多い。
  • したがって、ボーンの根元側で位置合わせをすればよい。

まず親指について、

  • 正面表示にして奥行き以外を調整 [g][Y] したあと、上から表示[7]にして奥行き [g][y]を調整し、親指の付け根のボーンの根元で位置合わせする。
  • 付け根を合わせた後、つま先方向に向って位置合わせを進める。

親指以外の四指についても同様に進める。

どのみち一指ずつ補正することにはなるのだが、第一関節どうし・第二関節どうし・第三関節どうしは、近い位置には来るので、四指まとめて凡その位置合わせをするのは有益である。

親指と要領は同じである。人差し指を終えたら、中指へ。

ワイヤフレームではなくソリッド表示の方が、リグの位置は分かりやすいかもしれない。関節つかんでは[g]で移動、つかんでは[g]で移動...かなり楽だ。

横向きにすると指どうしが重なったり、胴体と重なったりしてリグを発見・操作しにくいが、

  • 関係ない座標軸を固定した操作、いま操作しないボーンの非表示などを駆使
  • 分かりにくい関節近辺では、関節部を選択した後、拡大 [.] しつつ合わせる

等して何とかすること。

片手が終わったら反対の手も。反転して複写する方法があった気がするが思い出せないので同じように繰り返す。

掌の中央点と手首については、ボーンとリグの構造が大きく異なるらしく、目分量での調整となった。

VRoid VRM モデル由来のメッシュ・リグの位置関係を確認したところ、下図のような位置取りが実は妥当なようなので、そのように位置合わせすることとした。

胸の位置を合わせる。

先ほど調整したのは喉よりも上だけだったので、現在でも、腹メッシュのあたりから胸のリグが出た状態になっている。だいぶ上の方に移動させる。

乳首の位置は Sims 4 の方のリグの先端と合わせればよさそうだ。

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

ゼロからモデルを作る場合には腰から作るため、実のところ、腰が一番重要である。

Sims 4 人体モデル由来のリグが4個集まっているあたりが腰である。
人体モデルの足元の位置決めをする基底 Root もまた、腰に直結している。

レンダリング表示にしてみた。

大体の位置合わせしかしていないせいか、上下腕あたりのボーンは、所々はみ出し気味となっている。髪については盛大にはみ出している。

髪に嵌め込む。

先だって VRoid VRM 由来の髪関連のボーンをザクザクと削除し、左右2本だけにしてしまっている。

Sims 4 人体モデルの髪メッシュを確認すると、そこそこ髪の量があったので、もしかすると削除する髪ボーンを間違えた、もしくは削除しすぎたかもしれないが後の祭り*1

前髪は七三分けになっているので、後ろ髪のツインテール部分しか動かないってことでOK?(妥協)

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

ここらで一旦保存しておく。
朝6時半から開始して、ここまでの作業で5時間半が経過している。昼飯にするか。

ところでコライダーはどうなった?

コライダーを表示させる。
エディットモードで表示したときにはついてきていいないように見えて冷や汗かいた。

オブジェクトモードに切り替えたら、ボーンに追従していた。

ボーン(リグ)の位置合わせを正確に行う。

手・指・腰以外は、Sims 4 人物モデルのリグは見ず目分量で位置合わせしたのだが、ソリッド表示で確認すると、Sims 4 と VRoid の関節の位置ズレが沢山あった。

はじめから正確に合わせておけば二度手間にならなかったのだが、今更言っても仕方ない。

顔以外の全ての関節について、位置合わせを行う。

  • 全ての関節をクリックして拡大 [.] して、正面・横位置を完全に合わせた。

肩より下は、ほとんどの関節で Sims 4 のリグと位置合わせするだけでよかった。
最早完全に重なっているので、違いは分からないと思うが、出来上がりは下図。

ぴったり合わせても、上下腕のボーンがはみ出すのは致し方なしか...

気になる場合は、ボーンの表示のさせ方を8角錐でないものに変更すればよい。

顔については、位置合わせすべきリグはなかった。

Sims 4 人物モデルでは、表情をコントロールするためのリグが顔に沢山あるが、VRoid VRM 由来のモデルでは、シェイプキー(ブレンドシェイプ・モーションキー)で表情をコントロールするため、対応するリグはなかった。

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

ここから先はリグとメッシュ(モデル)の統合となるので、一旦保存しておく。
昼過ぎから再開して、ここまでの作業で2時間半が経過している。

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

この後、アーマチュア(ボーン、リグ)をメッシュに埋め込んだのだが、ポーズモードでテストすると、各所のメッシュが裂けたり、分解したり、破綻が露見した。

tombi-aburage.hatenablog.jp

原因がメッシュそれ自体にあったことに気付くまで4時間位かかったが、何とかトラブルから脱することができた。晩飯でも食うか。

手付かずの顔面以外は、ほぼ勝ったも同然の状態となった

ポーズモードで、顔面以外はほぼ想定どおり動いている。

自動ウェイトが完了した身体 Body と髪 Hair の2つのメッシュは、階層表示 Outliner で参照すると、VRoid VRM リグのアーマチュア Armature の方に勝手に移動していた。

未完了の顔 Face(もともとは Head)、歯 FaceTeeth(もともとは Face)は依然として、Sims 4 人物モデルのリグに属しているので、Sims 4 人物モデルのリグ(アーマチュア)をメッシュのモディファイアーとして割り当ててあれば引き続き操作できる。

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

先ほどの動作確認で1時間弱を要した。

Sims 4 人物モデルの顔と歯から、VRoid VRM リグの顔に移行する作業はまだ残っている。一旦保存しておく。もう遅いので寝るか。

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

翌朝、これまたとても面倒臭い表情の制作に着手した。

ここまでの作業で、髪と身体はリグ(ボーン)でグリグリ動くようになった。

しかし顔は全く手付かずなので、まだポーカーフェイスしかできない。
喜怒哀楽などの感情を表情で表せるよう、表情モーション(モーフ)を設定していく。

面倒くさい作業だが、Sims 4 が用意してくれたリグが使えるだけマシ。

フルスクラッチでゼロからVRMアバターを作成する場合には、Vroid から出力されたシェイプキー(ブレンドシェイプ、モーフ)のそれぞれについて、メッシュを直接変形・編集する必要がある。

しかし本稿では Sims 4 人物モデルを流用していることから、メッシュ変形に Sims 4 のリグを利用することにより、メッシュ自体を直接には触ることなく、簡便に表情を試作・テストできる。

もちろん Sims 4 のリグの種類と挙動は把握していなければならない。

とはいえ VRM アバターに期待される感情表現それ自体が The Sims Ripper から出力されたモデルに実装されているわけではないので、どのように Sims 4 のリグを操作すれば喜怒哀楽などの感情が表現できるのかについては、作成者の腕次第となる。

tombi-aburage.hatenablog.jp

なので最初に練習したわけだ。

まず VRoid VRM リグの顔 Face が現在どう実装されているか、確認しておく。

VRoid VRM リグの顔  Face を表示に戻し、身体 Body を非表示にして対比してみる。

上が Sims 4 人物モデルの顔で、下がVRoid VRM 由来の人物モデルの顔である。

VRoid VRM 由来のモデルの顔の表情コントロールは、Sims 4 とは異なっておりリグではなく、シェイプキー Shape Keys のみで行う実装となっており、シェイプキーが沢山顔メッシュに定義されている。Fcl_何とかというのがシェイプキー。

次に、定義しなければならない表情(シェイプキー)が何なのか仕様を確認する

Blender ではシェイプキーと呼ぶが、VRM 仕様ではブレンドシェイプと呼ぶ。

ブレンドシェイプの設定 - VRM ドキュメント

喜怒哀楽その他の状態を定義していく。NEUTRAL は無表情(メッシュ変形なし)として定義する。ベース Basis も元々無表情(変形なし)の状態であり、これは定義しなくても別のシェイプキーを作成すると自動的に発生するようだ。

定義のさいには、怒っている状態 Fcl_ALL_Angry をいきなり作成することもできるが、

  • 怒っている状態における眉の状態 Fcl_BRW_Angry
  • 同、目の状態 Fcl_EYE_Angry
  • 同、口の状態 Fcl_MTH_Angry

など部位ごとの状態を組み合わせることもできるようだ。
面倒そうなのでしないけど。

やたら沢山あるので、組み合わせを整理したらこうなった。
  • 普通 Neutral、喜怒哀楽、驚き Surprised は、組み合わせでも作れるようだ。
    面倒そうだからしないけど。
    • 但し、眉毛には Neutral という状態はないようだ
    • 但し、目は Neutral ではなく Natural と呼ぶようだ(誤植?)
  • 目と口は、特に様々な細かい調整ができるようだ
  • 皮/牙(八重歯)など、よく分からない人外系の部位も定義はされているようだ
    まあリアル人間以外のアバターの方が世の中には多いからな。

最低限、用意すべき表情(シェイプキー)は何か

VRMドキュメントと対比して、かなり多めに定義されているようだが、最低限という意味では以下のような考えでいけそうだ。

  • 普通と喜怒哀楽は必要だが、驚き Surprised は不要なようだ
  • リップシンク用の口の動きで A,I,U,E,O は必要なようだが、他は不要なようだ
  • まばたき Blink は左ウインク、右ウインク、両目閉じの3つが必要なようだ
  • 皮/牙(八重歯)など、よく分からない部位も不要なようだ

仮に根性で全部定義したとしても、VRアバターのアプリケーションが対応していなければ意味がない。どこまで追求すればいいのかについて、参考になる記事があった。

brand-new.tokyo

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

事前条件
  • VRoid VRM リグの方では、シェイプキー Fcl_EYE_Close が VRoid からインポートされ定義されており、当然ながら VRoid VRM リグの顔メッシュは、このシェイプキーの値に連動して表情が変わるようになっている(下図の左)。
実現すべき要件
  • これと同じ表情を、同じシェイプキーで再現できるようにしたいので、VRoid VRM リグの挙動を参考にして、同じような見た目にする(下図の右)。

まず、Sims 4 人物モデルの顔メッシュを同じような見た目にする。

2つのモデルを往来してメッシュやリグを選択し直したり、シェイプキーの値を変えたり、ポーズさせたりするので、何をどのモードで操作しているのか混乱しないようにすること。

  • 見やすいよう VRoid VRM リグに含まれている方の顔面 Face メッシュを真横に配置し、両目を閉じるシェイプキーの値を 1に変更する(上図の左)。
  • Sims 4 人物モデルの方の顔メッシュに割り付けられている Sims 4 のリグのうち、上まぶたをキッチリ制御できるリグを探し出して、それをポーズモード Pose Mode でうまいこと操作して両目を閉じさせる(上図の右)。

両目を閉じたいなら、左まぶた b__L_UpLid__、右まぶた b__R_UpLid__を同時選択して [r][x]でおしまい。

混乱をきたして何かミスをした場合、たまにリグ操作が利かなくなったり、想定外の表情になったりするが、その場合の典型的なリカバリ手順は以下のとおりである。

  • もしポーズモード の操作のさいに Sims 4 のリグが空回りして表情を操作できない場合には、顔メッシュへの Sims 4 人物モデル由来のリグの割り当てが消去されている。
    この場合、顔メッシュを選択し、オブジェクトモードに変更し、モディファイアプロパティ Modifier Properties からアーマチュアモディファイアを追加して、Sims 4 人物モデル由来のリグをオブジェクト Object に指定すると紐づけは復活する。
  • 色々ポーズをいじった結果、ポーズ(リグ)の初期状態が分からなくなった場合には、初期状態に戻したいリグを選択し、ポーズモード Pose Mode に変更し、すべてのリグを選択し、ポーズ Pose - トランスフォームをクリア Clear Transform - すべて All で初期化すると真顔に戻る。
次に、両目を閉じた状態に対して、シェイプキーを割り当てる。

作成した表情をシェイプキーに関連づけて保存するのだが、この操作は、たいへん分かりづらい。

tombi-aburage.hatenablog.jp

早くも疲れたので、一旦中断し、手抜きの方策を模索する

手作業での作り方は分かったが、それすらも面倒くさいので、誰かが作った Sims 4 の表情ポーズを複写してリグ操作を省略できないか試してみる。

tombi-aburage.hatenablog.jp

Sims 4 の豊富なポーズライブラリを流用するという考え方は間違っていなかったが、顔面以外も大きく変化するようなポーズだったので、シェイプキーを髪や身体にも設定しないと辻褄が合わないらしい。

一般には人物モデルの身体の挙動はボーン(リグ)のみで制御すべきで、シェイプキーでメッシュ変形はさせないようなので、やめておこう。

ここまでに3時間ほどかかったが、この方法での手抜きは難しいと判断し、昨日真夜中の時点から再開とした。

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

顔面崩壊の原因になりそうなので、顔と歯のメッシュも結合しておく。

色々試した結果、顔 Face と歯 FaceTeeth のメッシュを別々にしておくと後々トラブルに見舞われそうだったので、結合して顔 Face メッシュだけに統一した。

tombi-aburage.hatenablog.jp

先ほど、他のメッシュを整理・結合したときに併せてやっておくべきことだったが。

Sims 4 人物モデルのメッシュに、Sims 4 人物モデルのリグを割り当て直す

次の表情に取り掛かる前に、一つ注意すべきことがあった。

  • 先ほど、シェイプキーとして適用をしたさいに、実は Sims 4 のリグの割り当ても全て消去されてしまっており、続けてのリグ操作はできなくなっている。
  • リグ操作できる状態に復帰させるため、モディフィアープロパティ Modifier Properties タブから手動でアーマチュア Armature を追加する。

  • オブジェクト Object 欄において、Sims 4 人物モデル由来のリグ rig を選択して設定する。すると、シェイプキーとして適用を行う直前の状態と同じに戻ったことになる。


    すなわちアーマチュア・モディファイアに Sims 4 人物モデル由来のリグ rig が割り当てられた状態に戻す。

  • シェイプキーの値を先ほどテストのため1にしたが、これもゼロに戻す
  • 直前に作成した表情のままになっている場合、Sims 4 人物モデル由来のリグ rig を選択し、ポーズモード Pose Mode に変更し、いじったリグ(どれをいじったかすら不明なときはすべてのリグ)を選択してから、ポーズ Pose - トランスフォームをクリア Clear Transform - すべて All で初期化する

この操作はシェイプキーの適用とテストをするたびに繰り返し行うので、操作に慣れておくこと。

それ以降は、両目閉じと同じ手順で進めていけばよい。

簡単にできる片眼だけ閉じるシェイプキーを実装
  • 対象を片目ずつにするだけで、両目の場合とやり方は同じ(説明略)

操作すべきリグや、新たに割り当てるべきシェイプキーの名称は当然異なるが、やり方自体は全く同じである。

Blender に不慣れなため、混乱してしまった場合のコツ

Blender の全ての操作は、

  • 選択している対象物とモードの両方が完全に正しくなければ、操作の選択肢すら画面に表示されないので実行できず、
  • 画面右上の階層表示 Outliner、3D画面右上の画面表示モード、一時的な非表示を適切に使い分けなければ、対象物の選択すらままならない。

そんな困難の中で、

  • ボーン(リグ)割り当ての時には、リグ→メッシュ→リグの順序で2つのモデルの両方を選択状態にしながら操作する必要があり、
  • その後の表情シェイプキーの編集では、2つのモデルのリグやメッシュを頻繁に行き来することになり、
  • 局面に応じて、ポーズモード Pose Mode とオブジェクトモード Object Modeを常に正しく切り替える必要があり、
    • しかも直前のモードがポーズモード Pose Mode だった場合、そのまま別のメッシュを選択するとアーマチュアとメッシュの両方を選択した扱いとなり混乱しがちであり、
  • 時には編集モード Edit Mode に移り、すごく重なっている割に開口しているメッシュ(頂点)や、おかしくなった頂点グループを選択して細々と編集したりする必要もあり、
    • その途中で我を忘れてモードや変形状態が分からなくなりがちで、
  • シェイプキーは適用する都度にリグが外れるため、モディファイアプロパティで逐一付け直しが必要であり、
  • シェイプキーはオブジェクトデータプロパティタブで値をゼロや1に操作しながら作業せねばならず、違うキーを選んだままだったり、ゼロに戻し忘れたりするとワケが分からなくなりがち

なので、操作でハマる可能性は多分にある。したがって、

  • 何らか操作不能になった場合には、いまどちらのモデルの何を対象にしてどのモードで操作しているのか適宜確認し、分からない場合には一旦空隙をクリックしたり別の対象物を選んだりして選択を外し、対象物とモードを正しく選択し直す
  • 色々ポーズをいじった結果、ポーズ(リグ)の初期状態が分からなくなった場合には、初期状態に戻したいリグを選択し、ポーズモード Pose Mode に変更し、すべてのリグを選択し、ポーズ Pose - トランスフォームをクリア Clear Transform - すべて All で初期化すると真顔に戻る。
  • リグの操作をするときは、できるだけ[r][x]、[r][z]、[r][y]、[r][X]、[r][Z]、[r][Y]など、多くの座標軸を固定して回転させる方法で操作し、それでだめなら[r][r]。
    回転させる方法ではダメなら、仕方なく移動[g]を併用する
  • 左右対称のリグの操作をするときは、できるだけ両方を同時に選択し、ピボット点をそれぞれの中心 Individual Origin にしてから操作を行う
  • 作業に時間がかかった場合には特に、こまめに保存をする

ことが望ましい。

VR アバターとして最低限、必要な表情をひたすら作成していく

目以外の部位についてもブレンドシェイプキーを実装していく。

最も手抜きな怒り Fcl_ALL_Angry
  • 左内眉 b__L_InBrow__、右内眉 b__R_InBrow__を選択し、[g][z]で下に動かして眉をひそめさせる


    この人物モデルは細眉で目力があるので怒っているように見えるが、元の人物モデルの顔つきによっては、全然怒っているように見えない場合がある

最も手抜きな楽しい Fcl_ALL_Fun
  • 顎関節 b__Jaw__から口を大きめに開ける[r][x] 

最も手抜きな嬉しい Fcl_ALL_Joy
  • 顎関節 b__Jaw__から口を開ける[r][x]
  • 左右の口角 b__L_Mouth__、b__R_Mouth__を強めに上げる [r][y] 
  • 左右の目の下 b__L_LoLid__、b__R_LoLid__を上げる [r][x]

6つ作るのに、4時間くらいかかり、夜中2時になったので続きは明日。

再び、必須の表情のブレンドシェイプキーを手作業で作成していく。

のべ13個くらい作る必要があるが、簡単なものを優先して半分終わったところだ。

3日めの朝となった。

シェイプキーごとの表情を考える上で参考になりそうな素材を探す。

先ほど sims 4 emotion poses で画像検索したさいに、二次元でアバター表現をする場合に使うアバター人物素材画像集 Avatar Constructor Images も見つかったのだが、これらは表情の参考資料としても使えそうだ。

www.freepik.com

中でも @user32208555 という方のページには、典型的な表情やリップシンクの場合における表情や口の形状が図解されており、参考になった。

www.freepik.com

また3Dアバターが完成した暁に、アバター人物素材画像集のような感じのシートを作成しておけば、わざわざ Sims 4 Studio や Blender を起動しなくてもアバターの仕様が分かるのでカタログとしても便利だと思った。

怒り Fcl_ALL_Angry を改良する

先ほどの参考資料にインスパイア(死語)されて改良を行いたくなった。

最も手抜きな怒りでは、眉毛以外は動かしていなかった。

口もとを操作して歯を食いしばった改良版を作ることにした。

  • 上唇の3つのリグ、下唇の3つのリグを引き上げ [g][z]
  • より怒らせたい場合、外眉の引き上げ [g][z]、眉中央の引き下げ [g][z]


    ※別の男性人物モデルの例

楽しい Fcl_ALL_Fun と嬉しい Fcl_ALL_Joy を改良する

ここで一つの疑問が生じた。楽しいと嬉しいって、どういう違いなんだろう?

VMagicMirror のサンプル VRアバターでテストしてみたら、

  • Fun は、にんまり
  • Joy が、にっこり(破顔)

となっていた。表情の強さは Fun < Joy という理解でよさそうだ。

楽しい Fun は、にんまり程度にとどめておく

昨日の手抜き版は、喜び過ぎだったようだ。
口を開けるのは止めにして、左右の口角を少し上げるだけにした [g][z]

嬉しい Joy は、すでににっこり(破顔)レベル

最も手抜きな嬉しいと同じままでよさそうだ。

哀しい Fcl_ALL_Sorrow

  • 内眉 b__L_InBrow__、b__R_InBrow__の位置を上げる [g][z]
  • 眉中央  b__L_MidBrow__、b__R_MidBrow__の位置も下げる
  • 外眉 b__L_OutBrow__、b__R_OutBrow__の位置も下げる

  • 顎関節 b__Jaw__から口を少しだけ開ける[r][x]
  • 左右の口角 b__L_Mouth__、b__R_Mouth__を下げる [g][z] 

あいうえお(母音)リップシンク

  • いは、歯が見えるように上唇と下唇の3点を上下移動 [g][z]
  • あは、顎関節から口を開けるだけ。
  • えは、あ、と同じにする。
  • おは、あの状態から、下唇を上げて下の歯を隠す
  • うは、おの状態から、左右の口角を真ん中に寄せて口を小さく

通常 Neutral も用意

真顔状態を通常とすればよい。

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

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

シェイプキーの値を次々と1に変更していくと、実装漏れがないことはテストできる。
頂点の相対 Relative 移動が加算されるので、だんだん面白い顔になっていく。

テストを終えたら、シェイプキーをゼロに戻しておく。

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

テクスチャかマテリアルの相違で違和感のある部分がある。

髪と頭の境目が不自然な感じになっている。

首と頭の色がかなり違っている。
色だけの話ではなく、そもそも繋がってすらいないのだが...

この2点以外は、特に問題はなさそうだ。

そもそも最初にインポートした時点から、ややおかしい

Blender で新しいダミーのプロジェクトを作成して、もう一度、Sims 4 人物モデルをインポートして比較してみた。

髪については自分のせいで劣化したようだが、首についてはもともとこういうものだったようだ。

VRMアバターとしての動作確認を急ぎたいので、この2点については、別途余裕があれば、モデル全体のテカりと合わせて別途修正することにする。

ここらで一旦、保存する

本日3日めは、朝9時から昼飯を挟んで15時まで作成し続け、5.5時間を要した。
ここで一旦保存しておき、昼寝をする。

最後に顔と目のボーン(リグ)埋め込みを行ったが難航

顔周りは身体よりもさらに面倒ごとが多い。
メッシュ、リグ(ボーン)、頂点グループなどに課題が山積だった。
まあ何とか突破したが。

tombi-aburage.hatenablog.jp

首に穴が開いているのは...放置!後で考える。

最終クリーンアップ処理に向けて保存しておく

昼寝明けから作成し続け、3時間を要した。ここらで保存しておく。

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

選択したものだけエクスポートすることもできるようだが、ファイルも保存してあるので、関係無いオブジェクトを削除する。

  • これまで非表示にしていた VRoid VRM由来のメッシュ(同名で3個)は階層を削除 Delete Hierarchy して消去する
  • VRoid VRM リグをインポートした時に作成されたフォルダ体系と同等にする
    メッシュをアーマチュアの下に移動させる
    オブジェクトに枝番が付いている場合には名前を変更して枝番を消しておく

  • Sims 4 人物モデル由来のリグは階層を削除して消去し、髪・身体・顔メッシュのモディファイアプロパティを開いて、何もリグの無いアーマチュア(ごみ)があれば削除する

  • 新規コレクションで作成した器、カメラ、光源などモデルと直接関係ないものを階層を削除して消去する

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

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

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

首に穴が開いているのは...放置!

その他については、ほとんど問題はなさそうだ。

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

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

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

VMagicMirror に VRM形式のモデルを読み込ませる。

ライセンス画面の顔画像がおかしいが、他の許諾条件は正しかった。

この顔画像サムネイルはどこを参照しているのだろうか。

後日調べたところ、サムネイルは VRM Meta というデータ要素に含まれており、Vroid Hub にアバター登録するとサムネイルを変更できるということだった。

今のところ、あからさまな Sims 4 パクリキャラのままなので、他の人の利用はNG、非公開で登録することにした。

  • TheSims4の改造による新造人間(テスト)

全身と顔アップの両方のサムネイルが登録できるようだが、今はしない。

ローカルからでも、VRoid Hub からでも読み込ませることができる。

VMagicMirror でのテストで不具合

  • 手首の位置が少し下すぎてキーボードにめり込んでいる
  • 首に空いた穴は、やっぱり少々目立つ
  • 目線の動きへの眼球追従については、まったく問題ない

  • 喜怒哀楽の表情モーションは反応していない、まばたき一つしない
    シェイプキーが利いていないようだ。
  • 身体動作を伴うものは身体にメッシュがめり込む
    拍手 clap の場合にこうなった。

出力前にAポーズとなっていたので、 Tポーズに直したら大体治った

これだけで以下の3つの問題は解消した。最初にやるべきだったな。

  • 登場時に手が後ろに回っていたが、少し動かせば出てきた
  • 手首の位置が少し下すぎてキーボードにめり込んでいる
  • 身体動作を伴うものは身体にメッシュがめり込む

以下の2つの問題は解決していない。

  • 首に空いた穴は、やっぱり少々目立つ
  • 喜怒哀楽の表情モーションは反応していない、まばたき一つしない

出力前にアーマチュアVRM情報を修正したら、表情・まばたきも治った

ネットでのべ1日位、関連情報を捜索しつつ実験していたら、

  • 喜怒哀楽等を表象するブレンドシェイプの名称 Name またはプリセット Preset とメッシュ Mesh、シェイプキー Shape の対応関係を明に設定する必要がある
  • この設定は vrm.json というファイルに記録されており、テキストエディタで参照することができる

当初テキストエディタで直接修正したが、何らかミスをしたのか、うまく反映されなかった。

正常に動作するサンプルモデルをリバースエンジニアリングするなど、まる1日試行錯誤していたのだが、ファイル直接編集しなくても GUI で設定ができる場所がちゃんと用意されていたことに後日気付いた。

まず Blender で作成したモデルを、VRoid ハブにアップロードしてダウンロードする。

アップロードすると最適化処理が行われ、その際に上記設定ファイル vrm.json が VRoid Hub に登録した情報で更新されると思われた。vrm.json が更新されたと思われるモデルをダウンロードする。

※後日の制作では、VRoid Hub への登録・アップロード・ダウンロードは必要ないと判明したが、この時は行った。

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

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

すると、

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

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

終わったら VRM 形式でエクスポートする。

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

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

延べ日数では9日かかったが、次は1日で完了できるだろう。

 

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