15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IwakenLabAdvent Calendar 2022

Day 11

Meta Quest Proを使ってVRChatでフェイストラッキングをする話

Last updated at Posted at 2022-12-11

概要

この記事はMeta Quest Proを使ってVRChatでフェイストラッキングをする話です。
VRChatterでQuestProを買った方も結構いるようですが、Quest2と同じような使い方をしてしまっていませんか?
せっかく高い買い物をしたわけなので、機能をフルに使っていきましょう!
この記事はQuest(Air)Link、VirtualDeskTop、SteamLinkを使ってPCVRでVRChatをプレイできる環境にあるかつ、基本的なアバター用Animator編集等ができる方向けとなっています。

更新情報

2023年7月 VRCFaceTrackingの仕組みが大きく変わったので修正しました。
2023年12月 VDとSteamLinkでのやり方を追記

必要なもの

参考資料

環境構築

VRCFaceTrackingのインストール(共通)

ここから最新のVRCFaceTrackingをダウンロードします。
image.png
ダウンロードしたインストーラーをダブルクリックしてインストールします。
image.png

インストールが終わったらVRCFaceTrackingのアプリを起動しておきましょう
image.png

Virtual Desktopを使う場合

まずQuest側でVDを開き、アイトラッキングとフェイストラッキングへのアクセスに許可を出します。
一度拒否してしまっていた場合は、プライバシー設定からオンにしてください
image.png
次にPCにつないだらPC側のVDの設定で Streaming > Forward tracking data to PC にチェックを入れます。その下にある2つの項目は外して大丈夫です。(それぞれ疑似フルトラとIndexコンエミュレーターになります)
image.png

今度はVRCFTの画面に行き、Module Registry から Virtual Desktop を探して install します。
image.png

VDを使う場合の設定は以上です。

Steam Linkを使う場合

※現在まだ出たてなので今後変更がある可能性が高いです。
こちらもまずQuest側でアプリを開いた時に出るフェイストラッキングへのアクセスへ許可を与えてください。
一度拒否してしまった場合も同様にプライバシー設定から許可を与えてください。
image.png

次にこちらから最新のzipをダウンロードします。
image.png

次にVRCFTに行き、Module Registry から Install Module from .zip を押して先ほどダウンロードしたzipを選んでインストールします。
image.png
※現状このモジュールを入れると自動でモジュールが切り替わらない仕様になってしまっているようなので、VDとかQuestLinkを使いたい場合は一度このモジュールをアンインストールする必要があります。

今度はSteamLinkでPCに接続し、SteamVRの中から設定のうち VR設定 を開き、
image
Steamリンク からOSC関連の設定を3つオンにし、 Output Port9015 に変更します。
image

SteamLinkを使う場合の設定は以上です。

Quest Linkを使う場合

今となっては設定がやや面倒なのであまりお勧めしません

Quest Proを開発者モードにする

公式ドキュメント通りにやればよいと思います。
開発者登録として組織を作らなくちゃいけないですが適当で大丈夫です。
スマホアプリからの操作はこちらの記事のスクショが分かりやすいです。

Oculusアプリでの設定

まず「 一般 」タブで「 提供元不明アプリ 」の許可と「 OpenXRランタイム 」をOculusに設定します。
画像のようになればオッケーです。
image.png
次で「 ベータ 」タブで「 開発者ランタイム機能 」をオンにし、そうすると現れる アイトラッキング表情認識 の項目をオンにします。
この時 周囲確認 はオフのままにしておいてください。
画像のようになればオッケーです。(公開テストチャンネルは関係ないです)
image.png

次にVRCFTに行き、QuestPro用のモジュールをインストールします。
image

QuestLinkを使う場合の設定は以上です。

OpenXRランタイムの話

詳しい説明は省きますが、VRCFTを使う上で厄介な設定がOpenXRランタイムというものです。
接続方法によって変わるので併用する場合は特に注意が必要です。

VD・SteamLinkの場合

ランタイムは SteamVR にしてください。
SteamVRの設定から OpenXR を開いて STEAMVRをOPENXRランタイムとして設定 を押します。
現在のOpenXRランタイムがSteamVRになっていれば何もしなくて大丈夫です。
image.png

QuestLinkの場合

ランタイムは Oculus にしてください。
Oculusアプリから「 一般 」タブで「 OpenXRランタイム 」をOculusに設定します。
画像のようになればオッケーです。
image.png

アバターの準備

さて環境はできましたが、動かす対象のアバターがないと何もできないのでそちらをやっていきます。
現在は標準のEyeTracking設定のアバターなら眼だけは動かせるようなんですが自分がうまくいってないのでよくわかりません…
VRCFaceTracking対応Publicアバターが置いてあるらしいワールドを紹介しておきます。

とはいえやはり自分のアバターをいろいろ自由に動かしたいですよね。
基本的にはυμβρανさんのアバターセットアップ記事と公式のEyeTrackingLipTrackingのセットアップガイドを見れば分かりますが、補足を入れつつ書いていきます。

※2023年7月現在推奨パラメーター名が更新されており、下記設定のアバターはLegacyと認識されます。動作はしますが将来的に動かなくなる可能性があります。

まずは瞬きだけやってみる

これは自分がやってみて思ったんですが、一気に視線とか口とかまでやろうとするとしんどいので、いったん瞬きだけやって実際に動かしてモチベ上げるといいんじゃないかなと思います。

ExpressionParametersの準備

ここではデフォルトのParametersのファイルを複製してそこに追加していきます。
複製したファイルにLeftEyeLidExpandedSqueezeRightEyeLidExpandedSqueezeという名前のFloatパラメータを追加します。
image.png
それをAvatarDescriptorのParametersに入れましょう。
image.png

AnimationControllerの準備

この部分はυμβρανさんの記事の「 FXの作成 」の章が完璧なのでそちらを参照してください。
1点アバターのシェイプキーにJoy・Wideがない場合のBlendTreeの設定について例の紹介です。
JoyもWideもない場合はこのようにすれば問題なく動作します。
image.png
ちなみにThreshold(閾値)ですが、例えば思ったより目が開かない場合はこのように値を小さくすると補正できたりします。
image.png

アップロード

あとはアバターのAnimatorにFxのControllerがないことを確認して、PlayableLayerのFxには入っていることを確認してアップロードしましょう!
ちなみにTestでのアップロードはOSCがうまく動かないことが多かったので普通にアップロードするのが良さそうです。

VRChatで動かしてみる

さてここから実際にVRChatを起動して動作確認をしてみましょう

  1. 上記で紹介した3つのうちどれかででPCに接続する

  2. VRCFaceTrackingのアプリを起動する

  3. HomeでQuest Proの横の「Toggle Tracking」をこの色にする
    image.png

  4. その後SteamVRを起動してVRChatを起動する。

  5. アップロードしたアバターに着替える

  6. メニューボタン長押しからアクションメニューを開き,Options/OSC/EnabledからOSCを有効化する
    OculusScreenshot1670756329 (2).jpeg
    注 アバターを再アップロードしたら上記メニューのResetConfigをする

動作確認

ここまで来たら、実際に瞬きしたらアバターも瞬きしてるか見てみましょう!
もしうまくいってなかったら上記メニューのOSC Debugを開きます。
VRChat_2022-12-11_19-59-50.117_3840x2160.png
そこにLeftEyeLidExpandedSqueezeRightEyeLidExpandedSqueezeがあってリアルタイムで値が動いていればトラッキングデータがOSCで送信されてきているので、アバター側に問題がある可能性が高いです。
パラメータのつづりを間違えてたりする可能性があります。
もしここにその表示がなかったり動いてなかったりしたらOSC周りかトラッキング自体がうまくいってないかもしれません。
VRChatを再起動したら直ったりしたこともあります。

発展

アニメーションの追加

瞬きができたらあとは大体同じ要領で、パラメータとシェープキーを紐づけたアニメーションを設定することでいろいろできます。
ただ 視線の動き に関してはυμβρανさんの記事や公式のEyeTrackingガイドでは Additive レイヤーでやると書いてありますが自分はうまくいきませんでした。そこで自分はFxレイヤーでやったらうまくいったことを記しておきます。
自分は瞬きに加えて、視線の動き、あ・い・うの口の形、ほっぺのふくらみを追加しました。
あの形はJawOpen、いの形はMouthUpperUpLeft、うの形はMouthPout、ほっぺのふくらみはCheekPuffRightのパラメータを使用しました。
実際に設定した例を貼ります。
image.png

(2023/2/25追記)
追加で眉毛の動きも設定してみました。
使ったパラメーターはBrowDown~BrowInnerUp~です。
変則的なBlendTreeですがいい感じに動いています。
image.png

また、アバターによっては左右の目を別々に動かすシェイプキーの用意がないこともあると思います。
そういった場合はどちらかの目のXのパラメータ(LeftEyesXなど)を選んで両方の目を動かすアニメーションを設定することでおおむね問題ないです。
画像の例では目を下に向けるシェイプキーがない場合ですがこれでもそんなに支障なかったです。
image.png

LipSyncの干渉を防ぐ(2023/3/12追記)

口のトラッキングを活用する場合、標準のLipSyncと干渉するのでそれをOFFにした方が良さそうです。
多分ModeをViseme Parameter Onlyにすると良さそうです。
image.png

VIVE Pro Eye & Facial Trackerとの違い

残念ながらVIVE Pro Eye & Facial Trackerで取れて、Quest Proでは取れない値がいくつかあります。
こちらのスプレッドシートでまとめられています。多分左端がVIVEのです。
おおむね舌の動きと瞳の大きさが取れないのが大きいかなと感じています。
それらも使いたかったらVIVEの方を買いましょう()

他人から見たときにスムーズになるようにする

どうやらVRChatのOSCは同期感覚の問題でカクカクに見えてしまうことがあるそうです。

こちらで紹介されているOSCmooth を使ってみましょう。
注意としてもともと設定されているAnimationControllerが上書きされ、一度設定したものに再度適用するとうまくいかないっぽいので、元のものを複製しておくとよいです。
アプデで修正されてました!

  1. Unitypackageを開いてインストールする。
  2. Tools/OSCmoothを開く
    image.png
  3. Avatarのところに使いたい対象のアバターをセットする
  4. LayerがFXなのを確認してUse Playable Layer Parametersを押す
  5. Apply OSCmooth to Animatorを押す
    image.png

これでいい感じにスムースしてくれるようになりました。

まとめ

さて、ここまで多分QuestProでフェイストラッキングができているのではないでしょうか?できてたらうれしいです。
アバターにリアルの表情が反映されるのが本当にいいことなのか議論の余地がある気はしますが、自分は結構面白くて好きです。
あと手の形と表情を分離できたのが快適でした。
ぜひQuestProをお持ちの皆さんは挑戦してみてください!

最後に自分のアバターがどうなったか貼っておきます。

15
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?