フェイストラッキング

Webカメラ・iPhone を使ったフェイストラッキング

本ガイドでは、VRC Avatar Viewer のアバターを表示するアプリを「ビューアーアプリ」、モーションキャプチャするアプリ (Motion Capture for VRC Avatar Viewer) を「キャプチャーアプリ」と呼びます。

Motion Capture for VRC Avatar Viewer (以降「キャプチャーアプリ」) は、まばたきや口の動きなどの表情もアバターに反映できます。表情データの取得方法と、アバターへの送信形式をそれぞれ選択して使います。

2 つのデータソース (取得方法)

  • Webカメラ (デフォルト) PC に接続した Webカメラの映像から表情を推定します。追加機材が不要で誰でも使えますが、頬や舌の動きは取得できないなど制約があります。
  • iPhone (iFacialMocap) Face ID 対応の iPhone と iFacialMocap (有料の iOS アプリ) を使うと、ARKit ベースの 52 種類の高精度な表情データを取得できます。Webカメラを大きく上回る表現力です。

取得した表情データを、どの形式でアバターへ送るかは「表情送信形式」で選択します。先にアバター側の対応形式を確認し、その対応形式に合わせて選んでください (詳細は Step 3 以降)。

Tips
  • iFacialMocap が接続中の場合、Webカメラより iFacialMocap の表情データが優先されます (体の動きは Webカメラのまま)
  • 送信形式によらず、iFacialMocap が有効ならそちらの表情データが使われます
  • VRChat 連携の詳細は VRChat でフェイストラッキング ガイドを参照してください
1

Webカメラで表情をとる

デフォルトの方法です。配信モードガイド の手順でカメラを開始すれば、自動的に Webカメラから表情も推定されます。追加の設定は不要です。

Webカメラで表情をとる
Webカメラで表情をとる

1-1. 取得できる表情

  • まばたき (両目それぞれ)
  • 母音 (あ・い・う・え・お)
  • 視線 (上下左右)
  • 眉の上下、口の開閉、口角の動き など

1-2. 取得できない / 苦手なもの

  • 頬の膨らみ、舌の動き
  • 暗所では精度が大きく落ちます。顔がはっきり見える明るさが必要
  • 横顔・うつむきなど、顔の正面が見えない角度
送信形式の選び方
  • Webカメラ単体で使う場合の推奨は VRM 標準 です。たいていのアバターで自然に動きます
  • Perfect SyncやVRCFTも動作します。しかし、上記のように取得できない動きがあります。
2

iPhone で高精度な表情をとる (iFacialMocap)

Face ID 対応の iPhone (iPhone X 以降) を使うと、Webカメラより大幅に表情の精度を上げられます。iFacialMocap という iOS アプリが必要です。

iFacialMocap
iFacialMocap

2-1. 必要なもの

  • Face ID 対応の iPhone または iPad Pro
  • App Store で購入した iFacialMocap (iOS 有料アプリ)
  • iPhone と PC が 同じ Wi-Fi (LAN) に接続されていること

2-2. iPhone 側のセットアップ

  1. iPhone で iFacialMocap を起動する
  2. 画面上に「PC側のソフトウェアと接続してください」と表示されるので、IP アドレス (例: 192.168.1.10) を控える
IPアドレスが表示されない時
  • iFacialMocapの設定を開いて、「宛先設定」を確認してください。「宛先IPアドレス」に値が入っていると表示されません。その下にある「宛先設定のリセット」を押してアプリを再起動すれば表示されます。

2-3. キャプチャーアプリ側のセットアップ

  1. キャプチャーアプリの「iFacialMocap のIPアドレス」欄に、控えた iPhone の IP を入力
  2. 「iFacialMocap を使う」をONにする
  3. 横のステータスが 「受信中」 になれば接続成功

2-4. ステータス表示の意味

ステータス意味
停止中「iFacialMocap を使う」トグルが OFF
IP未入力iPhone の IP が空欄。入力すると自動で接続を試みます
接続待機中ハンドシェイクは送信したが iPhone から応答がない (iFacialMocap が起動していない / IP 違い / 別ネットワークなど)
受信中正常に表情データを受信しています

2-5. 取得できる表情

ARKit ベースの 52 種類のブレンドシェイプ + 頭の回転 + 左右の視線が取得できます。Webカメラで取れない頬の膨らみや舌も含まれます (アバター側がそのブレンドシェイプを持っている必要があります)。

Webカメラとの併用について
  • iFacialMocap を有効にしている間も、体・腕・指の動きは Webカメラから取得され続けます
  • 「表情だけ iFacialMocap、体は Webカメラ」というハイブリッド構成です
3

アバターがサポートしているフェイストラッキング形式を確認する

表情送信形式を選ぶ前に、現在表示しているアバターがどのフェイストラッキング形式に対応しているかを Viewer アプリ側で確認します。対応していない形式を選ぶと、キャプチャーアプリから表情データを送ってもアバター側で正しく動きません。

対応しているフェイストラッキング形式
対応しているフェイストラッキング形式
  1. Viewer アプリで対象のアバターを表示する
  2. 配信モード (Streaming) を ON にする
  3. 配信パネル内の 「フェイストラッキング」 ボタンをクリック
  4. ウインドウ上部の「タイプ」ボタンの下にある 「対応:」 表示を確認する
対応形式の見方
  • 「対応: VRM/VRChat 標準, Perfect Sync」 のように、現在ロード中のアバターがサポートしている形式が表示されます
  • キャプチャーアプリ側の「表情送信形式」と Viewer 側の「タイプ」は、この対応形式の中から同じものを選んでください
  • 対応していない形式を選んだ場合、表情が動かなかったり、一部のブレンドシェイプだけが反映されないことがあります
4-1

表情送信形式 (ブレンドシェイプ規格) を選ぶ

Step 3 で確認したアバター側の対応形式に合わせて、キャプチャーアプリの「表情送信形式」ドロップダウンから選択します。

表情送信形式の選択
表情送信形式の選択

VRM 標準

VRM が元から持っているまばたき・母音・視線などの基本表情を VMC で送ります。どのアバターでも動きますが、表現はシンプルです。VRChatアバターでも目、口が動作します。Webカメラ単体で使う場合のデフォルト推奨です。

Perfect Sync

ARKit の 52 種類のブレンドシェイプを VMC で送ります。Perfect Sync 対応アバターでは、口角・眉・瞼の繊細な動きまで反映されます。iFacialMocap と組み合わせると効果的です。

VRCFT

VRCFaceTracking 5.x の Unified Expressions 規格です。VRChat 内のアバターと同じ表情を再現できる点が特徴です。

Tips
  • VRCFTは、基本的にはアバターに専用アドオンを追加する必要があります。Perfect SyncはVRChatアバター、VRMアバターどちらでも対応していれば利用可能です。
4-2

表情の送信をオンにする

キャプチャーアプリの送信する部位の「表情」をオンにします。すでにオンになっている場合はそのままでOKです。

送信部位の「表情」をオン
送信部位の「表情」をオン
6

Viewer アプリ側でフェイストラッキングのタイプを選ぶ

Viewer アプリ側でフェイストラッキングのタイプを選ぶ
Viewer アプリ側でフェイストラッキングのタイプを選ぶ

Step 3 で確認した対応形式の中から、キャプチャーアプリ側で選んだ「表情送信形式」と同じ「タイプ」を Viewer アプリ側でも選びます。Viewer 側のタイプは、配信モードのツールバー → 「フェイストラッキング」ボタンで開くウインドウから切り替えます。

5-1. ウインドウを開く

  1. Viewer アプリでアバターを表示する
  2. 配信モード (Streaming) を ON にする
  3. 配信パネル内の 「フェイストラッキング」 ボタンをクリック

5-2. タイプを切り替える

ウインドウ上部の「タイプ」ボタンをクリックするたびに、VRM/VRChat 標準 → Perfect Sync → VRCFT の順に切り替わります。キャプチャーアプリ側の選択と一致させてください。

Viewer 側「タイプ」キャプチャーアプリ側「表情送信形式」
VRM/VRChat 標準VRM 標準
Perfect SyncPerfect Sync
VRCFTVRCFT

5-3. 注意点

  • VRCFT 選択中はカテゴリ別の表情強度スライダーが無効化されます: VRCFT は VRChat OSC 経由で表情パラメータを直接駆動するため、Viewer 側のブレンドシェイプ強度調整は適用されません
任意

表情だけVRCFaceTrackingに任せる

体のモーションだけをキャプチャーアプリから送り、表情は VRCFaceTrackingから送る構成にできます。iFacialMocapはもちろん、VRCFaceTrackingがサポートしている様々なモジュールを利用できます。

基本的には、VRCFTやフェイストラッキングデバイスを理解している上級者向けの設定です

[キャプチャーアプリ] →VMC Protocol→ [Viewer アプリ]
[iFacialMocap] → [VRCFaceTracking] →VRChat OSC→ [Viewer アプリ]

使い分け

担当送信経路送る内容
モーション系VMCプロトコル体、頭、腕、手などの姿勢
表情の送信系VRChat OSCまばたき、口、眉、視線などのフェイストラッキング

手順

  1. キャプチャーアプリで通常どおりモーション送信を開始する
  2. キャプチャーアプリの 表情送信 を OFF にする
  3. VRCFaceTracking を起動し、VRCFaceTracking 側で iFacialMocap と接続する
  4. Viewer アプリ側のフェイストラッキングタイプを VRCFT に切り替え、受信を ON にする
  5. VRCFaceTracking が Viewer アプリを接続先として認識し、Viewer 上のアバターの表情が動くことを確認する
VRCFaceTracking
VRCFaceTracking
表情送信のオフ
表情送信のオフ
注意点
  • Viewerアプリを受信状態にしてから、VRCFaceTrackingを起動してトラッキング状態にしてください。ただ、アドオンによっては逆でないと認識しない場合もあります。
  • 一度、VRCFaceTrackingを再起動すると直る場合もあります
  • 表情が動かない場合、アバターに入れている VRCFT アドオン側の FX 制御が原因のことがあります。特に VRCFury で生成されたアドオン(MrSauceアドオンなど)では、VRCFaceTrackingを起動したのち、Viewerを受信状態にして下さい。
  • キャプチャーアプリの表情送信を OFF にするのは、VMC 経由の表情と VRChat OSC 経由の表情が二重に反映されるのを避けるためです。体のモーション送信は ON のままで問題ありません
  • Viewer アプリ側を VRCFT に切り替えないと、VRCFaceTracking からの VRChat OSC 表情パラメータを受け取れません
  • VRCFaceTracking と Viewer アプリの詳しい接続確認は VRCFaceTracking 連携 ガイドを参照してください

上記どれを試しても動かない場合は、作者までお問い合わせください。ただ、解決できない可能性も高いです