3Dアバターをフェイストラッキングに対応させよう
------------------------------------------------------------
技術書典14に参加しました!
FACSに基づくフェイストラッキングでかわいい表情をつくる知見をまとめたものです
------------------------------------------------------------
既存の3Dモデルをフェイストラッキングに対応させる手順とリンク集
モデラーさん向けを想定していますが、
Unityだけで完結するかんたんコースもあります
◆ 既存3Dモデルにフェイストラッキング用シェイプキーを実装する
① Unity:VRM化
Unity上のFBXモデルをVRMモデルとしてエクスポート
② Unity:パーフェクトシンク化
①のVRMモデルをUnityにインポート
HANA_ToolのClipBuilder機能で、モデルにBlendshapeClipを追加
ARKitで定義されたシェイプキーと同名のBlendShapeClip52個をまとめて追加する
・元モデルが該当シェイプキーを持っている場合
⇒ ツールが自動的に割り当てる
・元モデルが該当シェイプキーを持っていない場合
⇒ 空のClipのみ作成される
ARKitで定義された表情になるべく近いシェイプキーを、モデルが持っている表情シェイプキーの中から選び、手動で設定していく
例:【JawOpen】 「aa」:50% 「oh」:30%
【MouthSmileLeft】 「LipSmile」:50%
【MouthSmileRight】 「LipSmile」:50%
③ Unity:表情調整
・Unity上のシーンにモデルを置き、VRMClipEditSupporterでモデルを指定して受信
・Play Modeではなく通常状態で使用する
リアルタイムで顔を動かしながらClipを編集
Clip内のスライダを動かし、表情を構成する要素ひとつひとつをシェイプキーの合成により調整
ARKitで定義された表情一覧
------------------------------------------------
ここでVRM出力 ⇒ 「パーフェクトシンク対応モデル」完成
『Luppet』や『vear』などのパーフェクトシンク対応アプリで、フェイストラッキングを利用可能です
Blenderでさらに表情をブラッシュアップしたい、
またはモデルをVRChatで使いたい場合は ⇒ ④ へすすむ
------------------------------------------------
④ Unity:シェイプキー統合
HANA_ToolのClipToShape機能で、③で調整したBlendshapeClipそれぞれを単独シェイプキーに変換
⑤ Unity:シェイプキー書き出し
HANA_ToolのWriter機能で、④で統合したシェイプキーを書き出す
⑥ Unity:シェイプキー追加
HANA_ToolのReader機能で、⑤で書き出したシェイプキーデータを元VRMに追加
(※同一名のシェイプキーがある場合はコピーされないので、あらかじめHANA_ToolのRemover機能で削除しておく)
これにより、デフォルトの表情セットと調整済みのシェイプキーを同時に持つVRMができる
いったんこのVRMをエクスポート
------------------------------------------------
かんたんコースでの表情調整はここまで
⇒ ⑨へすすむ
------------------------------------------------
⑦ Blender:シェイプキー編集 ★上級者向け
③の合成で表現しきれなかった表情を調整する
不足しているシェイプキー、表情調整用の補助シェイプキーの追加も行う
52個すべて完成したら同アドオンでVRMエクスポート
⑧ UnityまたはWindowsアプリ:シェイプキー転送 ★上級者向け
Blenderで編集する前後で、頂点数が微妙に変わってしまう
HANA_ToolのBuildCopy、またはFaceForgeを使用
転送が完了したモデルを使い、Unity上で改めて③の表情調整を行う
------------------------------------------------
③~⑧を繰り返し、フェイストラッキングのクオリティを追求
⇒ きがすんだら⑨へ
------------------------------------------------
⑨ Unity:シェイプキー書き出し
HANA_ToolのWriter機能で、完成版の52個のシェイプキーを書き出す
または、⑧のモデルの顔メッシュを取得する
⑩ Unity:最終モデルにシェイプキーをコピー
VRChat用のシーン上に置かれたFBXモデルに対し、HANA_ToolのReaderで⑨のシェイプキーデータを追加する
または、顔メッシュを⑨で取得したメッシュに差し替える
VRChatでフェイストラッキングを利用するには、UnityのVRChat向けプロジェクトにVRCFaceTrackingのアセットを導入し、必要な設定を行ったうえでアバターをアップロードする必要があります
◆ VRChatでフェイストラッキングを利用する
VRChatは公式でOSCデータの受信に対応している
VRChatFaceTrackingは、フェイストラッキングのOSCデータ送信を行う外部ソフトウェア
公式ドキュメント
1.環境構築
1-1.VRCFaceTrackingをインストール
1-2.対応ハードウェアに応じたセットアップ
◇対応デバイス
・Viveシリーズ
・Pico 4 Pro
・Quest Pro
・Pimax
・Varjo
・Android(MeowFace)※デスクトップモード専用
1-3.公開アバターでテスト
公式ドキュメントの下部メニューに、VRCFaceTrackingのDiscordサーバーへのリンクがある
2.アバターセットアップ
アバターモデルをVRChat用のプロジェクトにインポートし、VRCFaceTrackingの各種設定を行う
詳しくは公式ドキュメント参照