見出し画像

Meta Quest Pro で フェイストラッキングを試す

「Meta Quest Pro」 で フェイストラッキングを試したのでまとめました。

・Meta Quest Pro
・Oculus Integration v46.0
・UniVRM v0.106.0
・Unity 2021.3.10f1

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リファレンスは、次のとおりです。

OVRFaceExpressionsのAPIリファレンス

(3)  「OVRCameraRig」の「General → Face Tracking Support」に「Required」を指定。

(4)  「OVRCameraRig」の「Permission Requests On Startup → Face Tracking」をチェック。

5. フェイストラッキングの実行 

フェイストラッキングの実行手順は、次のとおりです。

(1) アクセス許可のダイアログが表示されるので、許可ボタンを押す。

(2) 目を閉じるのが同期するのを確認。

6. 関連

【おまけ】 ブレンドシェイプの定数一覧

フェイストラッキングのブレンドシェイプの定数一覧は、次のとおりです。

・眉
 ・InnerBrowRaiserL
 ・InnerBrowRaiserR
 ・OuterBrowRaiserL
 ・OuterBrowRaiserR
 ・BrowLowererL
 ・BrowLowererR

・まぶた
 ・UpperLidRaiserL
 ・UpperLidRaiserR
 ・LidTightenerL
 ・LidTightenerR

・目
 ・EyesClosedL
 ・EyesClosedR
 ・EyesLookDownL
 ・EyesLookDownR
 ・EyesLookLeftL
 ・EyesLookLeftR
 ・EyesLookRightL
 ・EyesLookRightR
 ・EyesLookUpL
 ・EyesLookUpR

・頬
 ・CheekPuffL
 ・CheekPuffR
 ・CheekRaiserL
 ・CheekRaiserR
 ・CheekSuckL
 ・CheekSuckR

・えくぼ
 ・DimplerL
 ・DimplerR

・鼻
 ・NoseWrinklerL
 ・NoseWrinklerR

・口
 ・MouthLeft
 ・MouthRight
 ・LipCornerDepressorL
 ・LipCornerDepressorR
 ・LipCornerPullerL
 ・LipCornerPullerR
 ・LipFunnelerLB
 ・LipFunnelerLT
 ・LipFunnelerRB
 ・LipFunnelerRT
 ・LipPressorL
 ・LipPressorR
 ・LipPuckerL
 ・LipPuckerR
 ・LipStretcherL
 ・LipStretcherR
 ・LipSuckLB
 ・LipSuckLT
 ・LipSuckRB
 ・LipSuckRT
 ・LipTightenerL
 ・LipTightenerR
 ・LipsToward
 ・UpperLipRaiserL
 ・UpperLipRaiserR
 ・LowerLipDepressorL
 ・LowerLipDepressorR


・顎
 ・ChinRaiserB
 ・ChinRaiserT
 ・JawDrop
 ・JawSidewaysLeft
 ・JawSidewaysRight
 ・JawThrust



この記事が気に入ったらサポートをしてみませんか?