開発
開発
プラットフォームを選択

Movement SDK for OpenXRでのフェイストラッキング

このトピックでは、以下について説明します。
  • 自然な表情機能の概要
  • ポリシー
  • フェイストラッキングOpenXR拡張機能の使用ガイド

フェイストラッキングとは

Meta Quest Proのフェイストラッキングは、内向きのフェイスカメラを使用して顔の表情の動きを検出します。Meta Quest 2やMeta Quest 3など、内向きカメラのないデバイスの場合、フェイストラッキングはマイクからの音声によって顔の動きを推定します。こうした動きは、フェイシャルアクションコーディングシステム(FACS)に基づいて、いくつかの表情に分類されます。このリファレンスは、顔の動きを、一般的な顔の筋肉の動き(眉を上げる、眉間にしわを寄せるなど)にマッピングされた表情に分類します。一般的な顔の動きは、こうした動きを複数組み合わせて表される場合もあります。例えば笑顔の場合、左右の口角が上がるだけでなく、頬が動いたり、目が少し閉じたりするかもしれません。そのため、複数のモーションを同時に組み合わせるのが一般的です。これをVRやARで効果的に表現するため、一般的にはこれらをブレンドシェイプ(ツールによってはモーフターゲットとも呼ばれる)として表し、顔がこのアクションを表現している度合を指定します。このAPIでは、それぞれの表情を、定義されたブレンドシェイプとそのブレンドシェイプの度合を指定して伝えます。そのブレンドシェイプが直接解釈され、目を開けているか、瞬きしているか、微笑んでいるかを伝えることができます。ブレンドシェイプを組み合わせてキャラクターにリターゲティングすることで、自然な表情を表現することもできます。

ポリシーと免責事項

フェイストラッキングAPIを使用するには、Oculus SDKライセンス契約開発者データ利用ポリシー、ならびに適用されるすべてのOculusおよびMetaのポリシーと利用規約に従う必要があります。プライバシーとデータ保護に関して適用される法律が、Movementの利用について、またプライバシーとデータ保護に関して適用されるすべての法律に対応する可能性があります。
特に、フェイストラッキングAPIによるデータの取得、使用、保持、および処理について明確に説明しているプライバシーポリシーを、一般公開で容易に閲覧できる状態で掲載し、それに準拠する必要があります。プライバシーとデータ保護について適用される法律で義務付けられていることも含め、抽象化された顔の表情データを取得する前に、そのようなデータへのアクセスおよび使用に関する明確で包括的な情報をユーザーに提供し、ユーザーの同意を得ておかなければなりません。
フェイストラッキングAPIの利用が当社のポリシーに準拠しているかを確認するため、その利用状況を監視する権利を弊社が留保していることに注意してください。
ユーザーが自然な表情機能をオンにしたアプリには、リアルタイムの抽象化された顔の表情データへのアクセス許可が付与されます。このデータは、開発者データ使用ポリシーの下で使用されるユーザーデータです。このデータは、開発者データ使用ポリシーで概説されている用途に限り、使用が許可されます。このデータをデータ使用の禁止行為に使うことは明示的に禁止されています。自然な表情機能では、MetaのフェイストラッキングAPIが利用されています。

XrFaceのサンプルアプリ

XrFaceのサンプルアプリをビルドする

OculusモバイルOpenXR SDK (v47以降)をダウンロードし、以下の方法でXrFaceサンプルアプリをビルドします。
adb uninstall com.oculus.sdk.xrface
cd XrSamples/XrFace/Projects/Android
../../../../gradlew installDebug

XrFaceのサンプルアプリを使う

vユーザーがサンプルアプリを開くと、ワールeたテーブルが表示されます。そのテーブルには、70のブレンドシェイプの重み、フェイスの上下2つの信頼値、すべてのブレンドシェイプと視線のブレンドシェイプのそれぞれに対応する2つの有効性フラグのエントリーがあります。データソースは、フェイストラッキングがどのセンサーデータに基づいて推定されるかを表しています。Visualは、顔の動きが内向きのフェイスカメラと任意のマイクデータに基づいて推定されることを意味します。Audioは、顔の動きがマイクデータだけに基づいて推定されることを意味します。
Using the XrFace Sample App
口、頬、目などの顔の領域を動かすと、それに対応するブレンドシェイプの重みがトリガー/変化します。また、顔の動きに応じてフェイストラッキング領域の信頼値が変化することも確認できます。

フェイストラッキング拡張機能

XR_FB_face_tracking2により、顔のアウトプットを提供する拡張機能が導入されます。この機能は、カスタムセンサーから画像をインプットとして受け取り、さまざまな顔の領域でのアクションに対応するブレンドシェイプの重みをアウトプットします。XR_FB_face_tracking拡張機能では舌のトラッキングと音声によるフェイストラッキングがサポートされていないため、非推奨になったXR_FB_face_tracking拡張機能ではなく、XR_FB_face_tracking2を選択することを強くおすすめします。古いXR_FB_face_tracking拡張機能を使いたい場合は、Khronos OpenXRレジストリで詳細をご確認ください。
APIの総合的なリファレンスについては、APIリファレンスをご覧ください。

アクセス許可

フェイストラッキングを使用する場合、アプリのAndroidマニフェストで以下のアクセス許可を宣言する必要があります。顔の動きをマイクからの音声によって推定するのであれば、RECORD_AUDIOアクセス許可もリクエストする必要があります。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ><!-- Tell the system this app can handle face tracking --><uses-feature android:name="oculus.software.face_tracking" android:required="true" /><uses-permission android:name="com.oculus.permission.FACE_TRACKING" /><!-- Tell the system this app can use audio for face tracking --><uses-permission android:name="android.permission.RECORD_AUDIO" /><!-- Tell the system this app can handle eye tracking --><uses-feature android:name="oculus.software.eye_tracking" android:required="true" /><uses-permission android:name="com.oculus.permission.EYE_TRACKING" />

  ....
</manifest>
重要: アイトラッキングとフェイストラッキングのアクセス許可は個別になっているので、ユーザーはフェイストラッキングのアクセス許可を付与する一方で、アイトラッキングのアクセス許可を却下することができます。アイトラッキングのアクセス許可を却下すると、視線のブレンドシェイプがトラッキングされなくなります。
com.oculus.permission.EYE_TRACKINGcom.oculus.permission.FACE_TRACKINGandroid.permission.RECORD_AUDIOのアクセス許可は、実行時のアクセス許可であるため、アプリケーションで明示的にユーザーにアクセス許可の付与を求める必要があります。アクセス許可について詳しくは、実行時アクセス許可をご覧ください。次の例は、アクセス許可の処理方法を示しています。
  private static final String PERMISSION_FACE_TRACKING = "com.oculus.permission.FACE_TRACKING";
  private static final String PERMISSION_EYE_TRACKING = "com.oculus.permission.EYE_TRACKING";
  private static final String PERMISSION_RECORD_AUDIO = "android.permission.RECORD_AUDIO";
  private static final int REQUEST_CODE_PERMISSION_FACE_AND_EYE_TRACKING = 1;

   @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestFaceAndEyeTrackingPermissionIfNeeded();
  }

  private void requestFaceAndEyeTrackingPermissionIfNeeded() {
    List<String> permissionsToRequest = new ArrayList<>();
    if (checkSelfPermission(PERMISSION_EYE_TRACKING) != PackageManager.PERMISSION_GRANTED) {
      permissionsToRequest.add(PERMISSION_EYE_TRACKING);
    }
    if (checkSelfPermission(PERMISSION_FACE_TRACKING) != PackageManager.PERMISSION_GRANTED) {
      permissionsToRequest.add(PERMISSION_FACE_TRACKING);
    }
    if (checkSelfPermission(PERMISSION_RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
      permissionsToRequest.add(PERMISSION_RECORD_AUDIO);
    }

    if (!permissionsToRequest.isEmpty()) {
      String[] permissionsAsArray =
          permissionsToRequest.toArray(new String[permissionsToRequest.size()]);
      requestPermissions(permissionsAsArray, REQUEST_CODE_PERMISSION_FACE_AND_EYE_TRACKING);
    }
  }

OpenXRの初期化

アプリから特定のOpenXR拡張機能にアクセスするには、事前にOpenXRセッションを作成し、必要なOpenXR拡張機能を有効にする必要があります。アプリのその部分は、どの拡張機能についても共通です。
初期化時には、アプリのすべてのOpenXR拡張機能で共有される、以下のオブジェクトセットを作成できます。
XrInstance instance;
XrSystemId system;
XrSession session;
XrSpace sceneSpace;
詳しくは、SampleXrFramework/Src/XrApp.hヘッダーをご覧ください。
処理については、OpenXRの仕様書で説明されています。
SampleXrFramework/Src/XrApp.cppでは、その初期化がすべて実装されています。

拡張機能を有効にする

XrInstanceを作成するには、すべての拡張機能を明示的に列挙してください。
std::vector<const char*> extensions;

XrInstance instance = XR_NULL_HANDLE;

    XrInstanceCreateInfo instanceCreateInfo = {XR_TYPE_INSTANCE_CREATE_INFO};
    ....
    instanceCreateInfo.enabledExtensionCount = extensions.size();
    instanceCreateInfo.enabledExtensionNames = extensions.data();

    ....
    OXR(initResult = xrCreateInstance(&instanceCreateInfo, &instance));
詳しくは、SampleXrFramework/Src/XrApp.cppをご覧ください。

設定

以下のセクションでは、フェイストラッキング拡張機能の設定に関する手順について説明します。

ヘッダーをインクルードする

ソースコードに、フェイストラッキング用の以下のヘッダーをインクルードします。
   #include <openxr/openxr.h>

OpenXRを初期化する

フェイストラッキングを使う前に、OpenXRセッションを初期化し、拡張機能を有効にする必要があります。セッションの初期化について詳しくは、インスタンスとセッションの作成をご覧ください。
OpenXR拡張機能を1回初期化して、OpenXR APIに対するすべての呼び出しの間で共有する必要があります。それが成功すると、以下のデータが取得されます。
    XrSession Session;
    XrSpace StageSpace;
詳しくは、SampleXrFramework\Src\XrApp.hヘッダーをご覧ください。
拡張機能の名前には、定数XR_FB_FACE_TRACKING2_EXTENSION_NAMEを使うことをおすすめします。

既知の問題点

使われる拡張機能は1つだけですが、XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAMEXR_FB_FACE_TRACKING2_EXTENSION_NAMEと共に有効にする必要があります。そうしないと、目に関連するブレンドシェイプEYES_LOOK_*が提供されません。

互換性を確認する

ユーザーのヘッドセットでフェイストラッキングがサポートされているかどうかを確認する必要があります。確認するには、特定のXrInstanceに関して、xrGetSystemProperties関数を呼び出すことにより、システムプロパティを受け取る必要があります。
そのためには、システムがアイトラッキングをサポートしているかどうかを示すXrSystemFaceTrackingProperties2FB構造体を使ってください。その定義は次のとおりです。
typedef struct XrSystemFaceTrackingProperties2FB {
    XrStructureType    type;
    void* XR_MAY_ALIAS next;
    XrBool32           supportsVisualFaceTracking;
    XrBool32           supportsAudioFaceTracking;
} XrSystemFaceTrackingProperties2FB;
この構造体について詳しくは、XrSystemFaceTrackingProperties2FBをご覧ください。
以下の例は、フェイストラッキングのサポートを確認する方法を示しています。
    XrSystemFaceTrackingProperties2FB faceTrackingSystemProperties{
        XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB};
    XrSystemProperties systemProperties{
        XR_TYPE_SYSTEM_PROPERTIES, &faceTrackingSystemProperties};
    OXR(xrGetSystemProperties(GetInstance(), GetSystemId(), &systemProperties));
    if (faceTrackingSystemProperties.supportsAudioFaceTracking ||
        faceTrackingSystemProperties.supportsVisualFaceTracking) {
        // face tracking is supported!
    }
XrSystemFaceTrackingProperties2FB構造体のsupportsAudioFaceTrackingフィールドでtrueが返される場合、音声駆動によるフェイストラッキングはサポートされています。supportsVisualFaceTrackingフィールドがtrueを返す場合、デバイスでは、内向きのフェイスカメラを使ったフェイストラッキングがサポートされています。

関数ポインターを取得する

フェイストラッカーを作成するには、拡張機能を使う前に、その機能内のすべての関数へのリンクを取得する必要があります。詳しくは、OpenXR仕様書のxrGetInstanceProcAddrをご覧ください。使用例は次のとおりです。
    PFN_xrCreateFaceTracker2FB xrCreateFaceTrackerFB_ = nullptr;
    PFN_xrDestroyFaceTracker2FB xrDestroyFaceTrackerFB_ = nullptr;
    PFN_xrGetFaceExpressionWeights2FB xrGetFaceExpressionWeightsFB_ = nullptr;

    OXR(xrGetInstanceProcAddr(
        GetInstance(),
        "xrCreateFaceTracker2FB",
        (PFN_xrVoidFunction*)(&xrCreateFaceTrackerFB_)));
    OXR(xrGetInstanceProcAddr(
        GetInstance(),
        "xrDestroyFaceTracker2FB",
        (PFN_xrVoidFunction*)(&xrDestroyFaceTrackerFB_)));
    OXR(xrGetInstanceProcAddr(
        GetInstance(),
        "xrGetFaceExpressionWeights2FB",
        (PFN_xrVoidFunction*)(&xrGetFaceExpressionWeightsFB_)));

フェイストラッキング拡張機能の使用

フェイストラッカーの作成

フェイストラッカーを作成するには、フェイストラッカーに対するXrFaceTracker2FBハンドルを呼び出す必要があります。フェイストラッカーに対するXrFaceTracker2FBハンドルを作成して取得するには、xrCreateFaceTracker2FB関数を以下のように定義して呼び出す必要があります。
XrResult xrCreateFaceTracker2FB(
   XrSession session,
   const XrFaceTrackerCreateInfo2FB* createInfo,
   XrFaceTracker2FB* faceTracker);
詳しくは、xrCreateFaceTracker2FBをご覧ください。使用例は次のとおりです。
    XrFaceTracker2FB faceTracker_ = XR_NULL_HANDLE;

    XrFaceTrackerCreateInfo2FB createInfo{XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB};
    createInfo.faceExpressionSet = XR_FACE_EXPRESSION_SET2_DEFAULT_FB;
    createInfo.requestedDataSourceCount = 2;
    XrFaceTrackingDataSource2FB dataSources[2] = {
        XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB,
        XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB};
    createInfo.requestedDataSources = dataSources;

    OXR(xrCreateFaceTracker2FB_(GetSession(), &createInfo, &faceTracker_));
faceExpressionSetrequestedDataSourcesについて詳しくは、XrFaceTrackerCreateInfo2FBをご覧ください。
フェイストラッカーはプロセスごとに1つのインスタンスしか許可されないので、この関数を複数回呼び出した場合は同じハンドルが返されます。ハンドルはプロセスごとに固有です。
重要: この呼び出しが成功するには、アプリのマニフェストにおいてcom.oculus.permission.FACE_TRACKINGアクセス許可をリクエストし、ユーザーによってこのアクセス許可が付与される必要があります。
次のセクションに示すように、この呼び出しが返されてすぐにxrGetFaceExpressionWeights2FBを呼び出すことで、フェイストラッキングブレンドシェイプデータが利用できるようになります。

顔の表情/ブレンドシェイプの重みの取得

特定の時点でフェイストラッカーによってトラッキングされる70のブレンドシェイプの重みと信頼値を取得するには、まずメモリを割り当てる必要があります。この目的のために、XR_FACE_EXPRESSION2_COUNT_FB列挙型とXR_FACE_CONFIDENCE2_COUNT_FB列挙型を使います。
    float weights_[XR_FACE_EXPRESSION2_COUNT_FB] = {};
    float confidence_[XR_FACE_CONFIDENCE2_COUNT_FB] = {};
表情の重みを取得するには、xrGetFaceExpressionWeights2FB関数を呼び出す必要があります。この関数は、特定の時点でフェイストラッカーによってトラッキングされる70のブレンドシェイプの重みと信頼度を取得します。その定義は次のとおりです。
XrResult XRAPI_CALL xrGetFaceExpressionWeights2FB(
   XrFaceTracker2FB faceTracker,
   const XrFaceExpressionInfo2FB* expressionInfo,
   XrFaceExpressionWeights2FB* expressionWeights);
詳しくは、xrGetFaceExpressionWeights2FBをご覧ください。
XrFaceExpressionInfo2FB構造体は、顔の表現がリクエストされるタイミングを表すxrGetFaceExpressionWeights2FB関数パラメーターです。呼び出し側では、レンダリングフレームの予測表示時刻に等しい時刻をリクエストしてください。システムは、リクエストされたタイムスタンプにできる限り近いタイムスタンプで値を返します。呼び出し側が、システムによるリクエストの達成範囲を判断できるようにするため、必ず推定値のタイムスタンプが提供されます。システムでは、その時刻での表情を提供するために適切なモデリングを採用します。XrFaceExpressionInfo2FB構造体の定義は次のとおりです。
typedef struct XrFaceExpressionInfo2FB {
   XrStructureType type;
   const void*     XR_MAY_ALIAS next;
   XrTime          time;
} XrFaceExpressionInfo2FB;
詳しくは、XrFaceExpressionInfo2FBをご覧ください。
XrFaceExpressionWeights2FB構造体は、フェイストラッキングのブレンドシェイプの重みと信頼度を記述する配列が含まれるxrGetFaceExpressionWeights2FB関数パラメーターです。その定義は次のとおりです。
typedef struct XrFaceExpressionWeights2FB {
    XrStructureType             type;
    void* XR_MAY_ALIAS          next;
    uint32_t                    weightCount;
    float*                      weights;
    uint32_t                    confidenceCount;
    float*                      confidences;
    XrBool32                    isValid;
    XrBool32                    isEyeFollowingBlendshapesValid;
    XrFaceTrackingDataSource2FB dataSource;
    XrTime                      time;
} XrFaceExpressionWeights2FB;
詳しくは、XrFaceExpressionWeights2FBをご覧ください。
次の例は、xrGetFaceExpressionWeights2FB関数を呼び出す方法を示しています。
    XrFaceExpressionWeights2FB expressionWeights{XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB};
    expressionWeights.next = nullptr;
    expressionWeights.weights = weights_;
    expressionWeights.confidences = confidence_;
    expressionWeights.weightCount = XR_FACE_EXPRESSION2_COUNT_FB;
    expressionWeights.confidenceCount = XR_FACE_CONFIDENCE2_COUNT_FB;

    XrFaceExpressionInfo2FB expressionInfo{XR_TYPE_FACE_EXPRESSION_INFO2_FB};
    expressionInfo.time = GetPredictedDisplayTime();

    OXR(xrGetFaceExpressionWeights2FB_(faceTracker_, &expressionInfo, &expressionWeights));
重みはアプリによって割り当てられた配列に含められます。それらを参照する方法を、以下の例に示します。
    for (uint32_t i = 0; i < XR_FACE_EXPRESSION2_COUNT_FB; ++i) {
        // weights_[i] contains one specific weight
        ....
    }

フェイストラッカーの破棄

アプリケーションを完了する前に、xrDestroyFaceTracker2FB関数を使ってリソースを解放することをおすすめします。
    OXR(xrDestroyFaceTracker2FB_(faceTracker_));

口形素拡張機能の使用

口形素とは、話し言葉で特定の音を話しているときの顔と口を視覚的に表現したものです。XR_META_face_tracking_visemes拡張機能は、リグがブレンドシェイプに対応するまでの暫定的なソリューションとして口形素が必要な場合に使用できます。

互換性を確認する

ユーザーのヘッドセットで口形素がサポートされているかどうかを確認する必要があります。確認するには、特定のXrInstanceに関して、xrGetSystemProperties関数を呼び出すことにより、システムプロパティを受け取る必要があります。
そのためには、システムが口形素をサポートしているかどうかを示すXrSystemFaceTrackingVisemesPropertiesMETA構造体を使ってください。その定義は次のとおりです。
typedef struct XrSystemFaceTrackingVisemesPropertiesMETA {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsVisemes;
} XrSystemFaceTrackingVisemesPropertiesMETA;
以下の例は、口形素のサポートを確認する方法を示しています。
    XrSystemFaceTrackingVisemesPropertiesMETA faceTrackingVisemesSystemProperties{
        XR_TYPE_SYSTEM_FACE_TRACKING_VISEMES_PROPERTIES_META};
    XrSystemProperties systemProperties{XR_TYPE_SYSTEM_PROPERTIES,
        &faceTrackingVisemesSystemProperties};
    OXR(xrGetSystemProperties(instance, systemId, &systemProperties));
    if (faceTrackingVisemesSystemProperties.supportsVisemes) {
        // visemes are supported!
    }

口形素の重みの取得

口形素を取得するには、xrGetFaceExpressionWeights2FB関数を呼び出し、XrFaceExpressionWeights2FB構造体の次のチェーンにXrFaceTrackingVisemesMETAを追加する必要があります。XrFaceTrackingVisemesMETA構造体の定義は次のとおりです。xrGetFaceExpressionWeights2FBの呼び出し後にisValidフラグをチェックすることで、返されるデータの有効性を確認してください。
typedef struct XrFaceTrackingVisemesMETA {
    XrStructureType    type;
    const void*        next;
    XrBool32           isValid;
    float              visemes[XR_FACE_TRACKING_VISEME_COUNT_META];
} XrFaceTrackingVisemesMETA;
以下の例は、ブレンドシェイプではなく口形素を取得するためにxrGetFaceExpressionWeights2FB関数を呼び出す方法を示しています。
    XrFaceExpressionWeights2FB expressionWeights{XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB};
    expressionWeights.weightCount = 0;
    expressionWeights.confidenceCount = 0;

    XrFaceTrackingVisemesMETA visemeInfo{XR_TYPE_FACE_TRACKING_VISEMES_META};
    expressionWeights.next = &visemeInfo;

    XrFaceExpressionInfo2FB expressionInfo{XR_TYPE_FACE_EXPRESSION_INFO2_FB};
    expressionInfo.time = GetPredictedDisplayTime();

    OXR(xrGetFaceExpressionWeights2FB_(faceTracker_, &expressionInfo, &expressionWeights));

    if (visemeInfo.isValid) {
        for (uint32_t i = 0; i < XR_FACE_TRACKING_VISEME_COUNT_META; ++i) {
            // visemeInfo.visemes[i] contains a weight of specific visemes
        }
    }
weightCountconfidenceCount0を割り当てるのではなく、有効な値をweightCountweightsconfidenceCountconfidencesに渡すと、ブレンドシェイプと口形素の両方がxrGetFaceExpressionWeights2FB関数によって返されます。

口形素ビジュアルリファレンス

口形素音素中程度強調回転
SIL
中性
 
XR_META_Face_Tracking_Viseme_SIL
なし
XR_META_Face_Tracking_Viseme_SIL_rot
PP
p、b、m
put、bat、mat
XR_META_Face_Tracking_Viseme_PP
XR_META_Face_Tracking_Viseme_PP_emp
XR_META_Face_Tracking_Viseme_PP_rot
FF
f、v
fat、vat
XR_META_Face_Tracking_Viseme_FF
XR_META_Face_Tracking_Viseme_FF_emp
XR_META_Face_Tracking_Viseme_FF_rot
TH
th
think、that
XR_META_Face_Tracking_Viseme_TH
XR_META_Face_Tracking_Viseme_TH_emp
XR_META_Face_Tracking_Viseme_TH_rot
DD
t、d
tip、doll
XR_META_Face_Tracking_Viseme_DD
XR_META_Face_Tracking_Viseme_DD_emp
XR_META_Face_Tracking_Viseme_DD_rot
KK
k、g
call、gas
XR_META_Face_Tracking_Viseme_KK
XR_META_Face_Tracking_Viseme_KK_emp
XR_META_Face_Tracking_Viseme_KK_rot
CH
tS、dZ、S
chair、join、she
XR_META_Face_Tracking_Viseme_CH
XR_META_Face_Tracking_Viseme_CH_emp
XR_META_Face_Tracking_Viseme_CH_rot
SS
s、z
sir、zeal
XR_META_Face_Tracking_Viseme_SS
XR_META_Face_Tracking_Viseme_SS_emp
XR_META_Face_Tracking_Viseme_SS_rot
NN
n、l
lot、not
XR_META_Face_Tracking_Viseme_NN
XR_META_Face_Tracking_Viseme_NN_emp
XR_META_Face_Tracking_Viseme_NN_rot
RR
r
red
XR_META_Face_Tracking_Viseme_RR
XR_META_Face_Tracking_Viseme_RR_emp
XR_META_Face_Tracking_Viseme_RR_rot
AA
A:
car
XR_META_Face_Tracking_Viseme_AA
XR_META_Face_Tracking_Viseme_AA_emp
XR_META_Face_Tracking_Viseme_AA_rot
E
e
bed
XR_META_Face_Tracking_Viseme_E
XR_META_Face_Tracking_Viseme_E_emp
XR_META_Face_Tracking_Viseme_E_rot
IH
ih
tip
XR_META_Face_Tracking_Viseme_IH
XR_META_Face_Tracking_Viseme_IH_emp
XR_META_Face_Tracking_Viseme_IH_rot
OH
oh
toe
XR_META_Face_Tracking_Viseme_OH
XR_META_Face_Tracking_Viseme_OH_emp
XR_META_Face_Tracking_Viseme_OH_rot
OU
ou
book
XR_META_Face_Tracking_Viseme_OU
XR_META_Face_Tracking_Viseme_OU_emp
XR_META_Face_Tracking_Viseme_OU_rot
ナビゲーションロゴ
日本語
© 2026 Meta