VRChatでフェイシャルトラッキング対応アバターを作る方法

概要

こちらでQuest Proのフェイシャルトラッキングの方法を解説したので、今回は対応アバターの作成方法を説明します。
virtual-neco.hatenablog.com

知識があまり無い人でも出来るように書きますが、ある程度改変知識があるものとして説明するので、何をしているのか細かくは説明しません。
詳しく知りたい方はExpressionメニューの設定方法を検索すると大体同じ事をしていますのでそちらを見て下さい。
英語のドキュメント読む気力がある人はVRC Face Trackingのサイト見に行くと大体書いてあるので参考に。
docs.vrcft.io

あと、今回説明で使用したフェイストラッキング対応済みのアバターサンプルを置いとくので参考にして下さい。

wrchg.booth.pm

前提

・VRC Face Trackingを導入済み
・フェイストラッキングアバターで動作確認済み
・Unityでアバターの改変がちょっとでも出来る

仕組み

VRCFTから送られてくるパラメータには目の開き具合や口の開き具合、微笑んでいるかなど様々なパラメータがあります。
Expressionパラメータに該当パラメータを入れておくと自動で表情に対応した値に更新されます。

パラメータの例
youtu.be あとはExpressionメニューを使った改変と同じ事をするだけです

目のトラッキング

目のトラッキングアバターに特別な事をする必要はありません。
VRChat標準のEye Look機能(ランダムに他の人を見る機能)がONになっていれば使用できます。 実際は下の表情トラッキングの方法でも目のトラッキングは可能ですが、 こちらの方が導入が簡単でうまく動かないトラブルが少ないです。
(私はずっと目がうまくトラッキングできなくて困ってた)

表情のトラッキング

ここではひとまず例として、まばたきの設定だけしていきましょう。
まばたきが出来ればあとは同じ方法で口角上げや口すぼめなど他の表情も設定できます。

1.Expressionパラーメータの設定

ここから使いたいパラメータを探し出します。
すべて英語で書かれているので必要に応じて翻訳サイトを使用して下さい。
docs.vrcft.io
全て乗ってる訳では無い?のですがここに対応した表情の画像が乗っています。
docs.vrcft.io

今回はまばたきなので「v2/EyeLidRight」と「v2/EyeLidLeft」を使用します。(Eye Lidはまぶたの意味)
右の説明で目の開き具合を0~0.75で、目を見開いた状態を0.75~1.0で渡されると書いてあります。

AvatarDescriptorのExpressionの中にあるParametersをダブルクリック。
リストに行を追加し先程探し出したパラメータに名前を変更、Typeは「float」、Syncedはチェック。

2.AnimationControllerの設定

AvatarDescriptorのFXをクリックしてFXファイルを探す。 探し出したFXファイルをダブルクリックしてAnimatorを開く。
パラメータに先程入力したのと同じパラメータを追加する。

新しいレイヤーを作成。
分かりやすい名前に変更 。 Weightを1に設定。
(左右の目用に2つ作成する)

右クリックでBlendTreeを作成。
作成したBlendTreeをダブルクリック。

blendTreeをクリック。
パラメータを先程設定したパラメータに設定。
+ボタン→Add Motion Fieldを押してMotionを2行にする。
今回は目の開き具合を0~0.75で表現するのでAutomate Thresholdsのチェックを外し、Thresholdを0と0.75に設定。

Projectの適当なフォルダにアニメーションファイルを作成する。
今回は左右のまばたきなので目を閉じた状態と通常状態のアニメーションファイルを左右それぞれ作成する。
今回は目を閉じた状態を「◯◯EyeOpeness」目を開けた状態を「◯◯EyeNormal」に名前を変更した。

作成したアニメーションをBlendTreeのMotionに入れる。

3.Animationの設定

アバターのアニメーションを編集するためにAvatarDescriptorのFX をクリックしてFXファイルを探し、Animatorに入れる。

Animationウィンドウを出す。

Hierachyのアバターをクリック。
Animationウィンドウで編集するAnimationを選択。
今回は目を開いた状態と目を閉じた状態のAnimationそれぞれで行う。

Add Propertyから顔のメッシュのあるオブジェクト(ハオランくんはbody)→Skinnded Mesh Renderer→目的の表情のBlend Shape(今回はまばたきなのでウィンクを使用)を追加。

1秒の所のひし形を右クリックして削除する。
アニメーションの用途に合わせて数値を変更する。
今回はまばたきなので目を開いた状態のアニメーションは0、 目を閉じた状態のアニメーションは100に設定

4.動作確認

アップロードしてアバターが動く確認しましょう。
うまく動きましたか?これが出来れば他の表情も対応してみましょう。

もし動かない場合は アクションメニュー(Expressionで使う円形のメニュー)→Options→OSC→OSC Debugを開くと動画のデバッグメニューが出てきます。 youtu.be
ここでパラメータが反応していればアバターのFXレイヤーの何かがおかしいです。
反応してなければ一度VRCFTの設定からRisky Settings→Reset VRChat Configをしてアバターを再読み込みして見ましょう。
それでも治らなければアバターのParameterの設定かVRCFTがおかしいです。

うまく行かない場合は私にDMして貰えればお手伝いします。
お気軽にどうぞ。
にゃー! (@virtual_neco) / X

OSCmoothで表情を滑らかに

実はこのままではVRCFTから送られてくるデータの更新頻度が少し低く、表情がカクカクして見えます。
他の人から見ると更に更新頻度が下がり、もっとカクカクしています。 これを解決するOSCmoothというツールがあります。
画面右側の目だけOSCmoothを入れた比較動画を作りました。
後半目をパチパチした時少し違うと思います。
youtu.be
多分他の人の視点だともっと違いが分かりやすいのかな。

こちらも入れてみましょう

ここからUnityPackageをダウンロードして導入。
github.com

ToolからOSCmoothを開く。
Avatarアバターを入れる。
LayerにFXを選択。
Parameter Configurationを開く。
Add New Parameterで枠を追加し、滑らかにしたいパラメータを入れる。
Apply OSCmooth to Layerを押す。

おしまい

気が向いたらよく起きそうなトラブルシューティングや、便利な機能の付け方を追記しときます。
おしまい

Quest ProとVirtual desktopを使用してVRCでフェイストラッキングする方法

概要

最近Virtual Desktop StreamerでQuest Proのフェイストラッキング情報が送れる様になったのでやり方を解説します。
英語のドキュメント読む気力がある人はVRC Face Trackingのサイト見に行くと大体書いてあるので参考に。
docs.vrcft.io

使用ソフト

・Virtual Desktop Streamer
・VRC Face Tracking

前提

・Quest Proを持っている
・Virtual Desktop Streamerを使ってVRCをプレイできる

ソフトインストール

1.VRC Face Trackingのサイトに行きダウンロード/インストールをする。
docs.vrcft.io

2.VRC Face Trackingを開き「Virtual Desktop」モジュールをインストールする

設定

1.Quest Proの設定を開き、下記2つの設定をONにする。
・動きのトラッキング→自然な表情→自然な表情
・動きのトラッキング→アイトラッキング→アイトラッキング

2.Virtual Desktop Streamerを開き下記設定をONにする。
・STREAMING→Advanced Options→Forward face/eye tracking to PC

3.VRCを開き下記設定をONにする
・アクションメニュー(Expressionで使う円形のメニュー)→Options→OSC→Enabled

動作確認

ここまででフェイストラッキングの準備は完了です。
下記ワールドに権利の問題無い動作確認用のアバターを用意したので確認しましょう。
一応Avatar World検索でVRCFTと検索するとフェイストラッキング対応アバターが置いてあるワールドが出てきますが、権利的にOKか分からなかったので用意しました。

vrchat.com

アバター

普段のアバターでフェイストラッキングをしたい場合はこちらの記事を見て下さい。
virtual-neco.hatenablog.com

VIVEフェイシャルトラッカーをMeta Quest2 を使って無線でPCに接続する方法

概要

Quest2で無線PCVRをやっている人は、フェイシャルトラッカーを使おうとするとパソコンまでUSBケーブルを伸ばす必要が出てしまう。
これでは無線PCVRを使う意味が無い。
そこでPCやAndroidに接続したUSBを、他のPCへ共有できるVirtualHereを使用し、Quest2に接続したフェイシャルトラッカーを無線で使用する方法を解説する。

正しここで解説する事は”通常”の使用方法では無い為、全て自己責任でやって欲しい。
またVirtualHereは1ライセンス$25必要である事を最初に断っておく。

1.VirtualHereをQusetにインストール

VirtualHereにOculus版は無いがSideQuestというツールを使用し、Android版VirtualHereをインストールする。 方法は「SideQuest apk インストール」等で検索して欲しい。
(これ一つで記事になる内容だし、いくつか他のヒトの記事あるからゆるして)

2.VirtualHereのカメラアクセス許可

フェイシャルトラッカーを使用する為にはVirtualHereへカメラ使用を許可する必要がある。
しかし、Quest2にはカメラアクセスの設定項目が無い為、1.で使用したSideQusetからコマンドで許可を行う。

Command To Runと書かれた場所に下のコマンドを入力してRUN COMMANDを押す

adb shell pm grant --user 0 com.virtualhere.androidserver android.permission.CAMERA


Command Completed. と表示されれば成功

3.VirtualHere PCソフトダウンロード

VirtualHereのホームページに行ってClientをダウンロードをする。
インストールは不要で直接使える。

VirtualHere USB Client | VirtualHere
よく分からない人は多分
「VirtualHere Client for Windows (64-Bit Win10,Win11/Server」
をダウンロードすれば良いはず。

4.VirtualHereライセンス購入

PCとQuestそれぞれVirtualHereを起動するとPC側で図のような画面になる。

ここで念のためフェイシャルトラッカーを認識するか確認しよう。
Questにフェイシャルトラッカーを接続して画面上で許可を押す。
PC側に"HTC Multimedia Camera"が表示されれば正常に認識されている。

Android Hubを右クリック → Properties → Buyを押して購入手続きを行う。

フェイシャルトラッカーを使用する

HTC Multimedia Cameraを右クリックしてUse this deviceを押せばPCへUSB接続されている状態になる。 また、Android Hubを右クリック → Auto-Use all on this Hubにチェックを入れておけば、自動で接続される。 後は各自用意したアプリで使用すれば良い。
私はこれを使用している。
booth.pm

初版:2022.11.10

VRC Avatar3.0 とりあえずアバターに表情を付ける方法

VRC Avatar 3.0での表情の付け方の記録を残しておきます

この情報は2022年2月22日の情報です。

 

まず表情の設定を入れる物を作るために

Assets>VRCSDK>Example3>Animation>Controllers

に入ってる

vrc_AvatarV3HandsLayer2をCtrl + Dで複製してから分かりやすい名前に変えます。

 

f:id:virtual_neco:20220222183127p:plain

 

今回はMyFaceという名前にしてMyというフォルダに入れました。

f:id:virtual_neco:20220222183443p:plain

 

これをクリックすると次のような画面になるので

Right Hand (Left Handも同じ作業をする)をクリック①するとFistやOpenといった名前の物が出てきます。

それぞれハンドサイン(手の形)の名前です。

Fist(握りこぶし)

Open (パー)

Point(指差し)

Peace(ピース)

RockNRoll(ロックンロール)

Gun(ガン)

Thumbsup(サムズアップ)

 

 

ハンドサインの名前をクリック②するとInspectorに表情アニメーションを入れるMotion③という場所があるので、アバターのモデルが入っていた場所のどこかに用意されている表情アニメーションを入れます。

 

例えばPeaceに笑顔のアニメーションを入れるとピースのハンドサインをした時にアバターが笑ってくれます。

 

薄荷ちゃんアバターの場合はこの場所に表情アニメーションが入っていました

f:id:virtual_neco:20220222183446p:plain

 

 

それが終わったらアバターをクリック①してPlayable LayersのCustumをクリック②して

f:id:virtual_neco:20220222184800p:plain

 

FXの横をクリック①すると今設定してた表情の設定(今回はMyface)を入れられるようになるので入れます②。

f:id:virtual_neco:20220222184448p:plain

 

これで完了

後はアップロードすれば表情が付いているはず。

 

 

VRCで無限歩行をする方法

無限歩行とは?

VRChatではフルトラッキングの状態でもスティック入力で移動をすると歩行アニメーションが再生されてしまって見た目があまり良くない。

リアルで歩いて移動すれば問題無いし、せっかくフルトラなのだから自分の足で歩きたが、すぐに壁にぶつかってしまい殆ど移動は出来ない。

しかし、無限歩行をすると壁にぶつからずリアルで無限に歩き続けられる。

youtu.be

無限歩行の仕組み

仕組み自体はシンプルで、部屋の中を円形に歩く。

左回りに歩いた場合VR内でも左回りに回ってしまうので、VR内で右回転の操作をすることで回転が打ち消し合って真っ直ぐ歩く事ができる。
youtu.be 動画で歩いてる位のスペースが有れば十分無限歩行が可能。 また有線ヘッドセットを使用している場合、動画のように8の字に回るとケーブルが絡まずに済む。

回転操作の種類

無限歩行では回転速度に合わせて部屋内を歩く(あるいは逆)事になるが、私が知っている操作方法は3種類あって、どれも一長一短なので暇な人は全部試してみるといいと思う。

  1. VRCの回転操作を使う
  2. OVR Advanced SettingsのSpaceTurnを使う
  3. OVR Advanced SettingsのSmoothTurnを使う

1. VRCの回転操作を使う

そのまんま。
VRChatの移動・回転操作はスティックの倒す量で速度が変わるので、歩くのに丁度いい速度で回転するように調整する。

メリット

・ツールの導入が不要

デメリット

・スティックの入力量がシビアで調整が難しい。

2.OVR Advanced SettingsのSpaceTurnを使う

殆どのフルトラの人にはお馴染みのツールOVR Advanced Settingsに空間を掴んで回転する"SpaceTurn"という機能がある。

この機能で空間を掴んだまま回ると空間も一緒に回ってくれるので真っ直ぐ歩ける訳だ。

メリット

・歩く速度と回転速度を合わせる必要が無い為非常に簡単。

デメリット

・ツールを導入する必要がある。
・空間を掴んで移動する"Space Drag"機能を使う人はReset offsetした時に無限歩行で移動した分もリセットされてしまう。
・手の向きに合わせて空間が回る為、片手の向きを変えられない。つまり腕を振るのが難しい。
ハリトラ(もしかしたらUniMotionも?情報下さい)の人はできないぽい1

設定方法

1.OVR Advanced Settingsを導入する

2.SteamVRメニューを開いてライブラリの左側にアイコンが追加されているので開く。

3.Rotation→SpaceTurn の Right(またはLeft) Handにチェックを入れる。

4.Bindingsで好きな空いているボタン等にRight(またはLeft)Hand Space Turnを割り振る。

5.割り当てた操作を行いながら歩く

3. OVR Advanced SettingsのSmoothTurnを使う

OVR Advanced Settingsに右回り(または左回り)に一定の速度で回転する"SmoothTurn"という機能があるのでそれを使う方法。

メリット

・常に一定の速度で回転するので歩く速度が変化しない

デメリット

・回転速度が設定で決まる為、早く歩く・遅く歩く、といった事が出来ない。
・空間を掴んで移動する"Space Drag"機能を使う人はReset offsetした時に無限歩行で移動した分もリセットされてしまう。
ハリトラ(もしかしたらUniMotionも?情報下さい)の人はできないぽい2

設定方法

1.OVR Advanced Settingsを導入する

2.SteamVRメニューを開いてライブラリの左側にアイコンが追加されているので開く。

3.Bindingsで好きな空いているボタン等にRight(またはLeft)Hand Space Turnを割り振る。

4.割り当てた操作でSmooth Turnを試して回転速度を確認し、Rotation→Smooth Turn Rateで速度を調整する。

5.割り当てた操作を行いながら歩く


リアルの壁にぶつからない?

プレイエリアの境界線の表示距離を長めに設定すれば壁の位置が分かってぶつからない。

youtu.be




  1. 空間を回したときに体だけ置いてかれてた。
    回避する設定があるかもしれないが、私はハリトラを持っていない為未検証
  2. 1と同じ