はいぬっかメモ

キャラクターモデルをVR空間で眺めたい

3Dアバターをフェイストラッキングに対応させよう

 
------------------------------------------------------------
技術書典14に参加しました!
FACSに基づくフェイストラッキングでかわいい表情をつくる知見をまとめたものです
------------------------------------------------------------
 
 
既存の3Dモデルをフェイストラッキングに対応させる手順とリンク集
 
フェイストラッキングに対応したiPhoneまたはiPadが必要です
 
モデラーさん向けを想定していますが、
Unityだけで完結するかんたんコースもあります
 
 

 
※以下、VRMのバージョン系は 0.xで行っています vrm-1.0での動作は未確認です
 
 

◆ 既存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:表情調整

 iFacialMocapとVRMClipEditSupporterで、iOSバイスのARKit機能を使ったフェイストラッキングを行う
 フェイストラッキングに対応したiPhoneまたはiPadが必要
 ・iPhone側とWindows側それぞれにiFacialMocapアプリをインストールし実行
 ・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:シェイプキー編集 ★上級者向け

 VRM Add-on for Blenderを使い、⑥で出力したVRMBlenderにインポート
 ③の合成で表現しきれなかった表情を調整する
 不足しているシェイプキー、表情調整用の補助シェイプキーの追加も行う
 52個すべて完成したら同アドオンでVRMエクスポート
 
 
 

⑧ UnityまたはWindowsアプリ:シェイプキー転送 ★上級者向け

 Blenderで編集する前後で、頂点数が微妙に変わってしまう
 これを回避するため、編集後のVRMから編集前のVRMにシェイプキーを転送
 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)※デスクトップモード専用
    iPhoneiPad ※デスクトップモード専用(2023年7月現在はモジュールが未対応)
 
1-3.公開アバターでテスト
フェイストラッキングに対応したPublic avatarで動作を確認
 
公式ドキュメントの下部メニューに、VRCFaceTrackingのDiscordサーバーへのリンクがある
#avatar-showoff チャンネルのピン止めで、Public avatarのワールドが紹介されている
 
2.アバターセットアップ

アバターモデルをVRChat用のプロジェクトにインポートし、VRCFaceTrackingの各種設定を行う

詳しくは公式ドキュメント参照

VRCFaceTracking Program | VRCFaceTracking