Meta Quest Pro で フェイストラッキングを試す
「Meta Quest Pro」 で フェイストラッキングを試したのでまとめました。
1. フェイストラッキング
ヘッドセットの内向きカメラによって、プレイヤーの表情を検出します。プレイヤーの表情は、63種類のブレンドシェイプとして取得できます。
2. 開発環境の準備
Oculus Questアプリと同様です。
3. VRMの配置
VRMの配置方法は、以下で紹介しています。
今回は、パーフェクトシンク可能な「千駄ヶ谷 渋(iPhone用BlendShapeあり)」を使わせてもらいました。
ブレンドシェイプは「Face.backed」の「Skinned Mesh Renderer」にあります。
4. フェイストラッキングの追加
フェイストラッキングの追加手順は、次のとおりです。
(1) VRMモデル(今回はFace.backed)に「OVR Face Expressions」を追加。
(2) VRMモデル(今回はFace.backed)にフェイストラッキングを制御する新規スクリプト「FaceExpressionsController.cs」を追加。
63種類のブレンドシェイプが用意されていますが、今回は左右の目を閉じるブレンドシェイプを反映させました。
・FaceExpressionsController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FaceExpressionsController : MonoBehaviour
{
private OVRFaceExpressions faceExpressions;
private SkinnedMeshRenderer meshRenderer;
// スタート時に呼ばれる
void Start()
{
faceExpressions = GetComponent<OVRFaceExpressions>();
meshRenderer = GetComponent<SkinnedMeshRenderer>();
}
// フレーム更新毎に呼ばれる
void Update()
{
if (faceExpressions == null || meshRenderer == null) return;
// フェイストラッキングの有効時
if (faceExpressions.FaceTrackingEnabled && faceExpressions.ValidExpressions)
{
// 目を閉じるを同期
meshRenderer.SetBlendShapeWeight(13, 100 * faceExpressions[OVRFaceExpressions.FaceExpression.EyesClosedL]);
meshRenderer.SetBlendShapeWeight(14, 100 * faceExpressions[OVRFaceExpressions.FaceExpression.EyesClosedR]);
}
}
}
「OVRFaceExpressions」のAPIリファレンスは、次のとおりです。
(3) 「OVRCameraRig」の「General → Face Tracking Support」に「Required」を指定。
(4) 「OVRCameraRig」の「Permission Requests On Startup → Face Tracking」をチェック。
5. フェイストラッキングの実行
フェイストラッキングの実行手順は、次のとおりです。
(1) アクセス許可のダイアログが表示されるので、許可ボタンを押す。
(2) 目を閉じるのが同期するのを確認。
6. 関連
【おまけ】 ブレンドシェイプの定数一覧
フェイストラッキングのブレンドシェイプの定数一覧は、次のとおりです。