はいぬっかメモ

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

Meta Quest Pro 表情トラッキング/ パーフェクトシンク対応表 ※追記あり

 

Meta Quest Proの内部にはフェイストラッキング用のカメラが内蔵されており、ユーザーの表情・視線の動きをリアルタイムにトラッキングできます。

 

モデルをこれに対応させるには、Meta Movement SDK の OVRFaceExpressions で定義された63個のシェイプキーが必要です。

Meta Movement SDK 公式ドキュメント

 

iPhoneフェイストラッキング(ARKit)向けのシェイプキーが揃っていれば、ほぼシェイプキー名の差し替えで対応可能です。

一部は、ARKitのシェイプキーを上下左右に分割して作成することになります。

 

青字は、ARKitのシェイプキーを左右(L/R)・上下(T/B)に分ける項目です。

赤字は、新規で作成する項目です。

 

全て揃っていなくてもそこそこ動きます。

 

 

  OVRFaceExpressions ARKitとの互換 内容
1 BrowLowererL browDownLeft 左眉全体を下げる
2 BrowLowererR browDownRight 右眉全体を下げる
3 CheekPuffL cheekPuff
左頬をふくらます
4 CheekPuffR cheekPuff 右頬をふくらます
5 CheekRaiserL cheekSquintLeft 左頬をもちあげる
6 CheekRaiserR cheekSquintRight 右頬をもちあげる
7 CheekSuckL 新規 左頬をへこます ※CheekPuffLの逆ベクトル
8 CheekSuckR 新規 右頬をへこます ※CheekPuffRの逆ベクトル
9 ChinRaiserB mouthShrugLower 上唇を上げる
10 ChinRaiserT mouthShrugUpper 下唇を上げる
11 DimplerL mouthDimpleLeft 左えくぼ (口角を後ろに引く)
12 DimplerR mouthDimpleRight 右えくぼ (口角を後ろに引く)
13 EyesClosedL eyeBlinkLeft 左閉じ目
14 EyesClosedR eyeBlinkRight 右閉じ目
15 EyesLookDownL eyeLookDownLeft 左目で下を見るときの瞼
16 EyesLookDownR eyeLookDownRight 右目で下を見るときの瞼
17 EyesLookLeftL eyeLookOutLeft 左目で左を見るときの瞼
18 EyesLookLeftR eyeLookInRight 右目で左を見るときの瞼
19 EyesLookRightL eyeLookInLeft 左目で右を見るときの瞼
20 EyesLookRightR eyeLookOutRight 右目で右を見るときの瞼
21 EyesLookUpL eyeLookUpLeft 左目で上を見るときの瞼
22 EyesLookUpR eyeLookUpRight 右目で上を見るときの瞼
23 InnerBrowRaiserL browInnerUp 左眉の内側を上げる
24 InnerBrowRaiserR browInnerUp 右眉の内側を上げる
25 JawDrop jawOpen 顎を開く
26 JawSidewaysLeft jawLeft 左に顎をずらす
27 JawSidewaysRight jawRight 右に顎をずらす
28 JawThrust jawForward 顎を前に出す
29 LidTightenerL eyeSquintLeft 左目を細める
30 LidTightenerR eyeSquintRight 右目を細める
31 LipCornerDepressorL mouthFrownLeft 左口角を下げる
32 LipCornerDepressorR mouthFrownRight 右口角を下げる
33 LipCornerPullerL mouthSmileLeft 左口角を上げる
34 LipCornerPullerR mouthSmileRight 右口角を上げる
35 LipFunnelerLB mouthFunnel 左の下唇をラッパ状に突き出す (ウの口)
36 LipFunnelerLT mouthFunnel 左の上唇をラッパ状に突き出す (ウの口)
37 LipFunnelerRB mouthFunnel 右の下唇をラッパ状に突き出す (ウの口)
38 LipFunnelerRT mouthFunnel 右の上唇をラッパ状に突き出す (ウの口)
39 LipPressorL 新規 左唇を上下に圧縮する 唇の幅は変化しない
40 LipPressorR 新規 右唇を上下に圧縮する 唇の幅は変化しない
41 LipPuckerL mouthPucker 左唇を細めつつ突き出す (チューの口)
42 LipPuckerR mouthPucker 右唇を細めつつ突き出す (チューの口)
43 LipStretcherL mouthStretchLeft 左口角を引き下げつつ横に伸ばす
44 LipStretcherR mouthStretchRight 右口角を引き下げつつ横に伸ばす
45 LipSuckLB mouthRollLower 左の下唇を巻き込む (もぐもぐの口)
46 LipSuckLT mouthRollUpper 右の上唇を巻き込む (もぐもぐの口)
47 LipSuckRB mouthRollLower 左の下唇を巻き込む (もぐもぐの口)
48 LipSuckRT mouthRollUpper 右の上唇を巻き込む (もぐもぐの口)
49 LipTightenerL mouthPressLeft 左の口角をぎゅっと緊張 ※ARKitより弱める
50 LipTightenerR mouthPressRight 右の口角をぎゅっと緊張 ※ARKitより弱める
51 LipsToward mouthClose 顎を開いた状態で唇を閉じる
52 LowerLipDepressorL mouthLowerDownLeft 左の下唇を引き下げる
53 LowerLipDepressorR mouthLowerDownRight 右の下唇を引き下げる
54 MouthLeft mouthLeft 口全体を左に寄せる
55 MouthRight mouthRight 口全体を右に寄せる
56 NoseWrinklerL noseSneerLeft 左の鼻をしかめる (左の眉根が寄る)
57 NoseWrinklerR noseSneerRight 右の鼻をしかめる (右の眉根が寄る)
58 OuterBrowRaiserL browOuterUpLeft 左眉の外側を上げる
59 OuterBrowRaiserR browOuterUpRight 右眉の外側を上げる
60 UpperLidRaiserL eyeWideLeft 左の目を見開く
61 UpperLidRaiserR eyeWideRight 右の目を見開く
62 UpperLipRaiserL mouthUpperUpLeft 左の上唇を引き上げる
63 UpperLipRaiserR mouthUpperUpRight 右の上唇を引き上げる

 

 

 

VRChatでQuestProのフェイストラッキングを使いたい人向けの追記:

ALXRとVRCFaceTrackingを用いて、表情のOSCデータをVRChatへ送信することができます。サックーさんの記事が参考になります。

qiita.com

このシステムでは、検知した各種表情に対して、任意のシェイプキーを自由に割り当て可能になっています。このため、ARKit用シェイプキーの文字列をわざわざQuestPro用にリネームする必要はありません。

 

UnityでQuestProのトラッキング環境を自作している人向けの追記:

VRMのBlendshape Clip経由の表情定義でフェイストラッキングできるスクリプトを、くにやんさんが公開されています。

Meta Movement SDKで定義された文字列で、Clipを63個用意し、それぞれに対応するBlendShapeを登録しておけば、QuestProで動作させることができます(パーフェクトシンクと同じしくみです)。

github.com

FaceExpressionsController.cs
FaceExpressionsControllerVRM.cs
の2つを、BlendShapeを持つオブジェクト(VRoidであれば"Face")にアタッチします。