2022/02/25にVRChatがOSCに対応し、外部装置からアバターのパラメータを操作できるようになった
VIVEフェイシャルトラッカーを使用して口元を動かしてみるメモ
(2022/02/26時点の情報、間違っているかもしれませんので自己責任で)
Quest+VirtualDesktop環境で使用しています
また、Binaryで値を管理する仕組みを使っているため、Float値を使用した方法の場合はやり方が異なります
VIVEフェイシャルトラッカー
www.vive.com/jp/accessory/facial-tracker/
USB-TypeC(メス)→USB-TypeA(オス)変換コネクタorケーブル※1
USB-TypeA(オス)→USB-TypeA(メス)延長ケーブル※1
養生テープ(細め)※2
※1 Questの場合、VIVEフェイシャルトラッカーをPCに直接有線で接続する必要があるため必要です
VIVEフェイシャルトラッカーはUSB-TypeC(オス)の短いケーブルしか出ていません
※2 専用の取り付けパーツを3Dプリントで作っている人もいるみたいですが、無いのでひとまずテープでぐるぐる巻き
SRanipal Runtime (1.3.2.0)
developer.vive.com/resources/vive-sense/eye-and-facial-tracking-sdk/download/latest/
VRCFaceTracking(v3.0.1 ※1※2)
github.com/benaclejames/VRCFaceTracking
BinaryParameterTool(v1.2.1 ※2)
github.com/regzo2/BinaryParameterTool
ゆにてぃー
ぶれんだー
※1 2/26時点ではバイナリが存在しないため、自分でビルドする必要があります※3
Visual StudioでNETデスクトップ開発を使用できるようにした状態でプロジェクトファイルを開けばビルドできるはず
※2 メーカーやVRChat公式が出しているソフトウェアではないため、自己責任で
※3 どうやらv3.0.0のバイナリでも動くらしい…?
VIVEフェイシャルトラッカーをPCに接続
ドライバー不要で、デバイスマネージャーにはWebカメラ(HTC Multimedia Camera)として記載されてました
この時点ではまだQuestにつけないほうが楽です
SRanipal Runtimeをインストール
手順に従って入れてください
VRCFaceTrackingを起動
コンソールが表示されて、「Lip Tracking Initialized」と表示されていればひとまずよさそう
1.デバイスマネージャー
Blenderを起動し、設定したい対象のアバターを読み込む
どこをフェイシャルトラッキングするかを決める
以下リンクを参考に、必要な顔の動きの項目をピックアップします
github.com/benaclejames/VRCFaceTracking/wiki/Parameters#lip-tracking-parameters
github.com/benaclejames/VRCFaceTracking/wiki/Blend-Shapes-Setup
github.com/benaclejames/VRCFaceTracking/wiki/Lip-Tracking-Setup
実際にBlend Shapesを作る
例:SmileSadRight(顔の右側の口角が下がる~上がるのようなもの)の場合
SmileRightとSadRightを用意する
使用してないですが、割当ての補助ツールもあるよう
https://github.com/benaclejames/VRCFaceTracking/wiki/Blend-Shapes-Setup#shape-key-tools
スカルプトモードを使用すると楽な場合あり
https://github.com/benaclejames/VRCFaceTracking/wiki/Blend-Shapes-Setup#sculpting-shape-keys
Unityにアバターとしてインポート&SDK3の基本的なセッティングをする
いつもの
空で大丈夫なので、FXレイヤーとExpressions Menu、Parametersのファイル指定は必要
先程作成したBlend Shapesの
・1フレーム目のみで、対象のBlend Shapeが100となっているアニメーション
・1フレーム目のみで、対象のBlend Shapeが0になっているアニメーション
を作成
複合パラメータの場合は、
・1フレーム目のみで、片方のBlend Shapeが100となっているアニメーション
・1フレーム目のみで、もう一方のBlend Shapeが100となっているアニメーション
・1フレーム目のみで、どちらのBlend Shapeも0となっているアニメーション
を作成
例:SmileSadRightの場合
A.SmileRightが100のアニメーション
B.SadRightが100のアニメーション
C.SmileRightとSadRightが0のアニメーション
を作成する
Binary Parameter Toolsのunitypackageを入れ、Tools→Binary Parameter Toolsから開く
Binary Parameter Toolsを用いて、各対象のパラメータに対して遷移を作成する
まず1つだけ作って後の工程に進んで確認するのがおすすめ
-Animater Controller
FXレイヤーに指定したアニメーションコントローラー
-Parameter
対象のパラメータ名(例:SmileSadRight)
-Binary Resolution
値の細かさ(2であれば2段階、8であれば8段階)
-Combined Parameter
以下に指定されている項目を使用するときに選択
github.com/benaclejames/VRCFaceTracking/wiki/Parameters#combined-lip-parameters
(2つの項目(0~1)を1つ(-1~1)にまとめているため、その-1と1の時のアニメーションをそれぞれ指定できる)
-Animation Properties
・Float Parameter
Floatの値として入力して自分で遷移を作成する(多分)
・Direct Animation
アニメーションを指定することで、各段階に応じた動きを組んでくれる
-Initial Clip
表情が何も入力されていない時のアニメーション(5.の例でC)
-Final Clip
表情が最大の時のアニメーション(5.の例でA)
-Final Negative Clip
まとめられた項目の時の、表情が最小のときのアニメーション(5.の例でB)
入力後、下部のボタンを押すと、指定したアニメーションコントローラーにLayerと、使用するparameterが追加される
修正する場合は、一旦Layerとそのparameterを削除し再度行う
アニメーションコントローラーのParametersに追加されたboolの項目をExpressionsのParametersに追加する
あっぷろーど
4.必要な項目
7.設定の例
8.Parametersを転記
VRCFaceTrackingが起動している状態でVRChatを起動
R→Options→OSC→EnabledをONに
VRCFaceTracking上でpを押して一旦停止する
VRChatで対象のアバターに切り替える
R→Options→OSC→Reset Config
VRCFaceTracking上でpを押して開始に
鼻のあたりからぶら下げる形でフェイシャルトラッカーを持って、動くか確認する
Due to a bug with VRChat's current OSC implementation, it's important you pause the runtime before switching avatars, and unpause when the swap has completed.
と記載されているため、3、6を行っているが、行わなくても動いてはいるよう…?
VRChatを再起動する
R→Options→OSC→Reset Configする
R→Options→OSC→OSC Debugにて、対象のparameterの項目(/avater/parameters/~)があり、表情を変更したときに動いているか確認する
項目がない場合、上記Reset ConfigをしわすれているorParametersに入れ忘れている
動いていない場合、フェイシャルトラッカーがうまくつながっていないかも
R→Options→Config→Debugにて、Parametersに対象のparameterの項目があり、表情を変更したときに動いているか確認する
項目がない場合、Parametersに入れ忘れている
動いていない場合、VRChatを再起動