作成した表情を後で簡単に再現できるようにするには、作成した表情(実体は変形させられた顔面周りのメッシュの状態)をシェイプキー Shapekey に関連づけて保存(正確には適用)する必要がある。
この操作は、モードの切り替えや命令が多く、たいへん分かりづらい。
表情を13種類作るなら、少なくとも13個のシェイプキーを適用(保存)してテストする必要がある。
事前条件
試作した表情をシェイプキーと関連づけて保存する操作方法
- Sims 4 人物モデルの頭メッシュをオブジェクトモード Object Mode で選択する。
直前のモードがポーズモード Pose Mode だった場合、そのまま別のメッシュを選択するとアーマチュアとメッシュの両方を選択した扱いとなり混乱するので、オブジェクトモードに変更して、[選択]-[なし]してから、頭メッシュを選び直す。
- モディファイアープロパティ Modifier Properties タブを開くと、Sims 4 人物モデルのリグ(アーマチュア)に対応した rig が定義されているはずだ。
二つある場合、もう一方は別途インポートした別の人物モデルのリグ由来のものであると思われ関係ない。 - 右の方にある、下向きの山アイコンのプルダウンメニューの中に、[シェイプキーとして適用] Apply as Shape Key というメニュー項目があるのでこれを選択する。
そうすると、試作した表情が消え、元の真顔(無表情)に戻るハズだ。 - オブジェクトデータプロパティ Object Data Properties タブを開くと、シェイプキーが1つ追加されている。
先ほどの画面で表示されていたリグの名前 Armature と同名で追加されているハズだ。※Blender が日本語設定の場合、名前はカタカナでアーマチュア - 先ほど作成した表情を示すシェイプキーの標準的な名前に変更しておくとよい。
VRoid VRM 人物モデルでは怒りのシェイプキーは Fcl_ALL_Angry - 相対 Relative にチェックを入れる。ここでシェイプキーの値 Value を 1 にすれば、作成した表情になることをテストできるだろう。
- テストが終わったら、シェイプキーの値 Value は 0 に戻しておく。戻すのを忘れると、次の表情を制作するさいにはまる。
次の表情を作成するために必要となる作業
- テスト後にオブジェクトモードを抜けて編集モード Eidt Mode に切り替えると、たった今試作したシェイプキーが選択されているので、試作した表情のままになっているはずだ。
この場合、同じ表情をまだ編集している扱いになるので、ベース Basis というシェイプキーを選んで真顔に戻す。 - ポーズモード Pose Mode で操作しようとしても、シェイプキーとして適用 Apply as Shape Key したさいに、Sims 4 人物モデルのリグ(アーマチュア)に対応した rig が消去されるので、Sims 4 人物モデルのリグによる顔面操作は空振りに終わるようになってしまっているはずだ。
この場合、モディファイアープロパティ Modifier Properties タブより[モディファイアーを追加]して、アーマチュアを追加する。追加しただけだとリグが割り当てられていないため相変わらず操作できないので、オブジェクト Object 欄に、Sims 4 人物モデルのリグ(アーマチュア)に対応した rig を設定し直す。 - オブジェクトモードやポーズモードに戻したら真顔ではなくなっているはずだ。
先ほど適用した時点のリグ(アーマチュア)の状態に復帰している。
これを真顔に戻すには、Sims 4 人物モデルのリグ(アーマチュア)rig を選択し、ポーズモード Pose Mode に変更し、[選択]-[すべて]で全てのリグを選択し、[ポーズ] Pose - [トランスフォームをクリア] Clear Transform - [すべて] All で初期化する。
顔周りのメッシュを1つに統合しない限り、口が分離したり、耳飾りが外れたりするので注意
顔のメッシュが複数メッシュに分離されている場合、統合しないと顔面崩壊が起こる場合がある。
顔に限ったことでもないがメッシュに開口部が残存している場合、重複頂点を統合するなどしないと、メッシュが分離するので注意
インポートした時点で、すでにメッシュに開口部が存在していることが多い。近傍座標の重複頂点の統合などで縫い合わせておかないとメッシュが分離する。
顔周りのメッシュを1つに統合していたとしても、頂点グループに対する頂点の割り当てが妥当ではない場合、顔面崩壊するので注意
顔のメッシュが1つに統合されていたとしても、頂点グループの状態がおかしい場合には顔面崩壊が起こる場合がある。
難解な「シェイプキーとして適用」周りの操作を半自動化してみた
上記のような複雑な操作を間違いなく行うことは難しいので、スクリプトとして半自動化してみた。