ส่วนขยาย XR_ANDROID_face_tracking OpenXR

Name String

XR_ANDROID_face_tracking

ประเภทส่วนขยาย

ส่วนขยายอินสแตนซ์

หมายเลขต่อที่ลงทะเบียน

459

การแก้ไข

3

การขึ้นต่อกันของส่วนขยายและเวอร์ชัน

OpenXR 1.0

วันที่แก้ไขล่าสุด

2025-06-04

สถานะ IP

ไม่มีการอ้างสิทธิ์ใน IP ที่ทราบ

ผู้เขียน

Spencer Quin, Google

Jared Finder, Google

Levana Chen, Google

ภาพรวม

ส่วนขยายนี้ช่วยให้แอปพลิเคชันรับน้ำหนักของรูปร่างผสมและแสดงผล การแสดงสีหน้าในประสบการณ์ XR ได้

ส่วนขยายนี้มีจุดประสงค์เพื่อให้ข้อมูลที่จำเป็นในการสร้างอวตารที่สมจริง และแสดงตัวตนของผู้ใช้ในพื้นที่เสมือนได้อย่างชัดเจน แอปพลิเคชันสามารถตรวจสอบการเปิดใช้งานการปรับเทียบใบหน้าก่อน รับค่าถ่วงน้ำหนักของรูปร่างผสม

เครื่องมือติดตามใบหน้า

เครื่องมือติดตามใบหน้าคืออุปกรณ์ตรวจจับที่ติดตามการแสดงสีหน้าผ่าน สตรีมรูปภาพที่หันหน้าไปทางผู้ใช้และการปรับเทียบกล้อง จุดประสงค์หลักของส่วนขยายนี้คือการจับคู่สีหน้าของผู้ใช้กับอวตารในฉากเสมือน

ข้อมูลการติดตามใบหน้าเป็นข้อมูลส่วนบุคคลที่ละเอียดอ่อนและเชื่อมโยงอย่างใกล้ชิดกับ ความเป็นส่วนตัวและความสมบูรณ์ของข้อมูลส่วนบุคคล เราขอแนะนำอย่างยิ่งให้แอปพลิเคชัน ที่จัดเก็บหรือโอนข้อมูลการติดตามใบหน้าขอความยินยอมจากผู้ใช้เสมอ เพื่อดำเนินการดังกล่าว

  • แอปพลิเคชันจะได้รับ XR_ERROR_PERMISSION_INSUFFICIENT เมื่อสร้างเครื่องมือติดตามใบหน้าที่ทำงานอยู่จนกว่าแอปพลิเคชันจะได้รับอนุญาตให้เข้าถึงเครื่องมือติดตามใบหน้า
  • เมื่อรับสถานะใบหน้าโดยใช้ xrGetFaceStateANDROID XrFaceStateANDROID::isValid จะไม่แสดงผล XR_TRUE เว้นแต่จะได้รับอนุญาตให้เข้าถึงแอปพลิเคชัน

ตรวจสอบความสามารถของระบบ

โครงสร้าง XrSystemFaceTrackingPropertiesANDROID มีคำจำกัดความดังนี้

typedef struct XrSystemFaceTrackingPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsFaceTracking;
} XrSystemFaceTrackingPropertiesANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง
  • supportsFaceTracking คือ XrBool32 ที่ระบุว่าระบบปัจจุบันรองรับการติดตามใบหน้าหรือไม่

แอปพลิเคชันสามารถตรวจสอบว่าระบบสามารถติดตามใบหน้าได้หรือไม่ โดยขยาย XrSystemProperties ด้วย โครงสร้าง XrSystemFaceTrackingPropertiesANDROID เมื่อเรียกใช้ xrGetSystemProperties

หากรันไทม์แสดงผล XR_FALSE สำหรับ supportsFaceTracking รันไทม์ต้องแสดงผล XR_ERROR_FEATURE_UNSUPPORTED จาก xrCreateFaceTrackerANDROID

สร้างแฮนเดิลเครื่องมือติดตามใบหน้า

XR_DEFINE_HANDLE(XrFaceTrackerANDROID)

แฮนเดิล XrFaceTrackerANDROID แสดงถึงเครื่องมือติดตามใบหน้าสำหรับการติดตามใบหน้า

แฮนเดิลนี้ใช้เพื่อเข้าถึงข้อมูลการติดตามการเคลื่อนไหวของใบหน้าได้โดยใช้ฟังก์ชันอื่นๆ ในส่วนขยายนี้

ฟังก์ชัน xrCreateFaceTrackerANDROID มีคำจำกัดความดังนี้

XrResult xrCreateFaceTrackerANDROID(
    XrSession                                   session,
    const XrFaceTrackerCreateInfoANDROID*       createInfo,
    XrFaceTrackerANDROID*                       faceTracker);

คำอธิบายพารามิเตอร์

  • session คือแฮนเดิล XrSession ที่ตัวติดตามใบหน้าจะ ทำงานอยู่
  • createInfo คือ XrFaceTrackerCreateInfoANDROID ที่ใช้เพื่อระบุ เครื่องมือติดตามใบหน้า
  • faceTracker คือแฮนเดิล XrFaceTrackerANDROID ที่แสดงผล

แอปพลิเคชันสามารถสร้างแฮนเดิล XrFaceTrackerANDROID ได้โดยใช้ฟังก์ชัน xrCreateFaceTrackerANDROID

หากระบบไม่รองรับการติดตามใบหน้า xrCreateFaceTrackerANDROID จะแสดงผล XR_ERROR_FEATURE_UNSUPPORTED

การใช้งานที่ถูกต้อง (โดยนัย)

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

โครงสร้าง XrFaceTrackerCreateInfoANDROID อธิบายได้ดังนี้

typedef struct XrFaceTrackerCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrFaceTrackerCreateInfoANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ไม่มี โครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้

โครงสร้าง XrFaceTrackerCreateInfoANDROID อธิบายข้อมูลสำหรับ สร้างแฮนเดิล XrFaceTrackerANDROID

การใช้งานที่ถูกต้อง (โดยนัย)

ฟังก์ชัน xrDestroyFaceTrackerANDROID มีคำจำกัดความดังนี้

XrResult xrDestroyFaceTrackerANDROID(
    XrFaceTrackerANDROID                        faceTracker);

คำอธิบายพารามิเตอร์

ฟังก์ชัน xrDestroyFaceTrackerANDROID จะปล่อย faceTracker และ ทรัพยากรพื้นฐานเมื่อประสบการณ์การติดตามใบหน้าสิ้นสุดลง

การใช้งานที่ถูกต้อง (โดยนัย)

ความปลอดภัยของเธรด

  • การเข้าถึง faceTracker และแฮนเดิลย่อยทั้งหมดต้องซิงค์ภายนอก

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

ตรวจสอบการปรับใบหน้า

ฟังก์ชัน xrGetFaceCalibrationStateANDROID มีคำจำกัดความดังนี้

XrResult xrGetFaceCalibrationStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    XrBool32*                                   faceIsCalibratedOutput);

คำอธิบายพารามิเตอร์

  • faceTracker คือ XrFaceTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateFaceTrackerANDROID
  • faceIsCalibratedOutput ระบุว่าได้ปรับเทียบเครื่องมือติดตามใบหน้าแล้วหรือไม่

แอปพลิเคชันสามารถตรวจสอบสถานะการปรับเทียบใบหน้าได้โดยใช้ฟังก์ชัน xrGetFaceCalibrationStateANDROID

เมื่อบริการติดตามยังอยู่ระหว่างการเริ่มต้น รันไทม์อาจ ส่งคืน XR_ERROR_SERVICE_NOT_READY_ANDROID จาก xrGetFaceCalibrationStateANDROID เพื่อระบุว่าแอปพลิเคชันสามารถ ลองอีกครั้งในภายหลังได้

หากระบบไม่รองรับการปรับเทียบใบหน้า xrGetFaceCalibrationStateANDROID จะแสดงผล XR_ERROR_FEATURE_UNSUPPORTED มิเช่นนั้น อาจตั้งค่า faceIsCalibratedOutput เป็น XR_TRUE เพื่อแสดงสถานะการปรับเทียบใบหน้า

การใช้งานที่ถูกต้อง (โดยนัย)

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_SERVICE_NOT_READY_ANDROID

รับการแสดงสีหน้า

ฟังก์ชัน xrGetFaceStateANDROID จะแสดงผลรูปร่างผสมของ การแสดงออกทางสีหน้า ณ เวลาที่กำหนด

XrResult xrGetFaceStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    const XrFaceStateGetInfoANDROID*            getInfo,
    XrFaceStateANDROID*                         faceStateOutput);

คำอธิบายพารามิเตอร์

  • faceTracker คือ XrFaceTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateFaceTrackerANDROID
  • getInfo คือตัวชี้ไปยัง XrFaceStateGetInfoANDROID ที่อธิบาย ข้อมูลที่จะใช้รับการแสดงสีหน้า
  • faceStateOutput คือตัวชี้ไปยัง XrFaceStateANDROID ที่รับ สถานะการติดตามใบหน้าและสีหน้าที่ส่งคืน

การใช้งานที่ถูกต้อง (โดยนัย)

รหัสการคืนสินค้า

สำเร็จ

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ความล้มเหลว

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_TIME_INVALID

โครงสร้าง XrFaceStateGetInfoANDROID อธิบายข้อมูลที่จะ รับการแสดงออกทางสีหน้า

typedef struct XrFaceStateGetInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrTime             time;
} XrFaceStateGetInfoANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ไม่มี โครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
  • time คือ XrTime ที่มีการขอการแสดงออกทางสีหน้า

แอปพลิเคชันควรขอเวลาเท่ากับเวลาแสดงผลที่คาดการณ์ไว้สำหรับ เฟรมที่แสดง

การใช้งานที่ถูกต้อง (โดยนัย)

โครงสร้าง XrFaceStateANDROID จะแสดงผลสถานะการติดตามใบหน้าและ การแสดงสีหน้า

typedef struct XrFaceStateANDROID {
    XrStructureType               type;
    void*                         next;
    uint32_t                      parametersCapacityInput;
    uint32_t                      parametersCountOutput;
    float*                        parameters;
    XrFaceTrackingStateANDROID    faceTrackingState;
    XrTime                        sampleTime;
    XrBool32                      isValid;
    uint32_t                      regionConfidencesCapacityInput;
    uint32_t                      regionConfidencesCountOutput;
    float*                        regionConfidences;
} XrFaceStateANDROID;

คำอธิบายสมาชิก

  • type คือ XrStructureType ของโครงสร้างนี้
  • next คือ NULL หรือตัวชี้ไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง ไม่มี โครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้
  • parametersCapacityInput คือ uint32_t ที่อธิบายความจุของอาร์เรย์ parameters หรือ 0 เพื่อระบุคำขอเรียกความจุที่จำเป็น
  • parametersCountOutput คือ uint32_t ที่อธิบายจำนวน parameters หรือความจุที่จำเป็นในกรณีที่ parametersCapacityInput ไม่เพียงพอ
  • parameters เป็นตัวชี้ไปยังอาร์เรย์ที่แอปพลิเคชันจัดสรรของ float ซึ่ง จะเต็มไปด้วยน้ำหนักของรูปร่างผสมของสีหน้า
  • faceTrackingState คือXrFaceTrackingStateANDROIDสถานะความถูกต้องของ การติดตามใบหน้า
  • sampleTime คือเวลา XrTime ที่มีการติดตามหรือประมาณค่าของนิพจน์ที่แสดงผล ซึ่งเท่ากับเวลาที่มีการขอค่าถ่วงน้ำหนักของนิพจน์ หากการประมาณค่าในช่วงเวลานั้นสำเร็จ
  • isValid ระบุว่าข้อมูลถูกต้องหรือไม่ แม้ว่าจะไม่ได้มาจากเฟรมปัจจุบัน ก็ตาม
  • regionConfidencesCapacityInput คือ uint32_t ที่อธิบายความจุของอาร์เรย์ regionConfidences หรือ 0 เพื่อระบุคำขอเรียกความจุที่จำเป็น
  • regionConfidencesCountOutput คือ uint32_t ที่อธิบายจำนวน regionConfidences หรือความจุที่จำเป็นในกรณีที่ regionConfidencesCapacityInput ไม่เพียงพอ
  • regionConfidences คือตัวชี้ไปยังอาร์เรย์ float ที่แอปพลิเคชันจัดสรร ซึ่ง จะกรอกค่าความเชื่อมั่นสำหรับแต่ละภูมิภาคของใบหน้า
  • ดูคำอธิบายโดยละเอียดเกี่ยวกับการดึงข้อมูลขนาด parameters และ regionConfidences ที่จำเป็นได้ที่ส่วนพารามิเตอร์ขนาดบัฟเฟอร์

แอปพลิเคชันสามารถตั้งค่า parametersCapacityInput เป็น XR_FACE_PARAMETER_COUNT_ANDROID เพื่อรับการแสดงสีหน้าซึ่งจัดทำดัชนีโดย XrFaceParameterIndicesANDROID

parameters ที่แสดงผลจะแสดงถึงน้ำหนักของรูปร่างผสม ของสีหน้าปัจจุบัน

การอัปเดตอาร์เรย์ parameters จะเรียงตามลำดับเพื่อให้แอปพลิเคชัน สามารถจัดทำดัชนีองค์ประกอบโดยใช้การแสดงสีหน้าที่สอดคล้องกัน enum (เช่น XrFaceParameterIndicesANDROID)

การใช้งานที่ถูกต้อง (โดยนัย)

  • ต้องเปิดใช้ส่วนขยาย XR_ANDROID_face_tracking ก่อนใช้ XrFaceStateANDROID
  • type ต้องเป็น XR_TYPE_FACE_STATE_ANDROID
  • next ต้องเป็น NULL หรือพอยน์เตอร์ที่ถูกต้องไปยัง โครงสร้างถัดไปในห่วงโซ่โครงสร้าง
  • หาก parametersCapacityInput ไม่ใช่ 0, parameters ต้องเป็นพอยน์เตอร์ไปยัง อาร์เรย์ของค่า parametersCapacityInput float
  • หาก regionConfidencesCapacityInput ไม่ใช่ 0, regionConfidences ต้องเป็นพอยน์เตอร์ไปยัง อาร์เรย์ของค่า regionConfidencesCapacityInput float
  • faceTrackingState ต้องเป็นค่า XrFaceTrackingStateANDROID ที่ถูกต้อง

การแจงนับ XrFaceTrackingStateANDROID จะระบุสถานะต่างๆ ของเครื่องมือติดตามใบหน้า

typedef enum XrFaceTrackingStateANDROID {
    XR_FACE_TRACKING_STATE_PAUSED_ANDROID = 0,
    XR_FACE_TRACKING_STATE_STOPPED_ANDROID = 1,
    XR_FACE_TRACKING_STATE_TRACKING_ANDROID = 2
} XrFaceTrackingStateANDROID;

โดย Enum มีความหมายดังนี้

Enum

คำอธิบาย

XR_FACE_TRACKING_STATE_PAUSED_ANDROID

ระบุว่าระบบหยุดการติดตามใบหน้าชั่วคราว แต่อาจกลับมาติดตามอีกครั้งในอนาคต

XR_FACE_TRACKING_STATE_STOPPED_ANDROID

การติดตามหยุดแล้ว แต่ไคลเอ็นต์ยังคงมีเครื่องมือติดตามใบหน้าที่ใช้งานอยู่

XR_FACE_TRACKING_STATE_TRACKING_ANDROID

ระบบจะติดตามใบหน้าและท่าทางของใบหน้า

ภูมิภาคที่มีความเชื่อมั่น

XR_ANDROID_face_tracking ส่วนขยายยังให้ค่าความเชื่อมั่นสำหรับ 3 ส่วนของใบหน้า ได้แก่ ตาซ้าย ตาขวา และใบหน้าส่วนล่าง ค่าเหล่านี้ ซึ่งมีตั้งแต่ 0 (ไม่มีความมั่นใจ) ถึง 1 (มีความมั่นใจสูงสุด) แสดงถึงความแม่นยำ ของการติดตามใบหน้าสำหรับแต่ละภูมิภาค

คุณสามารถใช้ค่าความเชื่อมั่นเหล่านี้เพื่อค่อยๆ ปิดใช้ Blendshape หรือใช้ ฟิลเตอร์ภาพ (เช่น การเบลอ) กับภูมิภาคใบหน้าที่เกี่ยวข้อง สำหรับการควบคุมเปิด/ปิดพื้นฐาน เราขอแนะนำให้ใช้เกณฑ์ 0.3 เพื่อปิดใช้งาน Blend Shape อย่างสมบูรณ์ในภูมิภาคใบหน้าที่เกี่ยวข้อง

ส่วน "ใบหน้าส่วนล่าง" หมายถึงทุกอย่างที่อยู่ใต้ดวงตา รวมถึงปาก คาง แก้ม และจมูก ภูมิภาคดวงตารวมถึงดวงตาและบริเวณคิ้ว

ตารางต่อไปนี้อธิบายรูปร่างผสมที่เชื่อมโยงกับแต่ละภูมิภาคที่มีความเชื่อมั่น

ภูมิภาคความเชื่อมั่น Blendshape
ใบหน้าส่วนล่าง `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID`, `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID`, `XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID`, `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID`, `XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID`
ใบหน้าด้านซ้าย/ขวาบน `XR_FACE_PARAMETER_INDICES_BROW_LOWERER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_BROW_LOWERER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_CLOSED_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_CLOSED_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_R_ANDROID`, `XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_L_ANDROID`, `XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_R_ANDROID`

การตั้งชื่อรูปร่างผสม

ส่วนขยายนี้กำหนดรูปร่างผสม 68 รายการผ่าน XR_FACE_PARAMETER_COUNT_ANDROIDสำหรับรูปแบบ G-Nome ที่ลดขนาด พารามิเตอร์แต่ละรายการ ใน Enum นี้คือดัชนีในอาร์เรย์รูปร่างผสมที่มีค่าเป็นประเภทของ float และรันไทม์จะทําให้เป็นปกติเป็น 1 - 0

typedef enum XrFaceParameterIndicesANDROID {
    XR_FACE_PARAMETER_INDICES_BROW_LOWERER_L_ANDROID = 0,
    XR_FACE_PARAMETER_INDICES_BROW_LOWERER_R_ANDROID = 1,
    XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID = 2,
    XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID = 3,
    XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID = 4,
    XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID = 5,
    XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID = 6,
    XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID = 7,
    XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID = 8,
    XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID = 9,
    XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID = 10,
    XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID = 11,
    XR_FACE_PARAMETER_INDICES_EYES_CLOSED_L_ANDROID = 12,
    XR_FACE_PARAMETER_INDICES_EYES_CLOSED_R_ANDROID = 13,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_L_ANDROID = 14,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_R_ANDROID = 15,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_L_ANDROID = 16,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_R_ANDROID = 17,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_L_ANDROID = 18,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_R_ANDROID = 19,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_L_ANDROID = 20,
    XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_R_ANDROID = 21,
    XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_L_ANDROID = 22,
    XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_R_ANDROID = 23,
    XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID = 24,
    XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID = 25,
    XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID = 26,
    XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID = 27,
    XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_L_ANDROID = 28,
    XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_R_ANDROID = 29,
    XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID = 30,
    XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID = 31,
    XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID = 32,
    XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID = 33,
    XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID = 34,
    XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID = 35,
    XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID = 36,
    XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID = 37,
    XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID = 38,
    XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID = 39,
    XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID = 40,
    XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID = 41,
    XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID = 42,
    XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID = 43,
    XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID = 44,
    XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID = 45,
    XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID = 46,
    XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID = 47,
    XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID = 48,
    XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID = 49,
    XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID = 50,
    XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID = 51,
    XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID = 52,
    XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID = 53,
    XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID = 54,
    XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID = 55,
    XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID = 56,
    XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_L_ANDROID = 57,
    XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_R_ANDROID = 58,
    XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID = 59,
    XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID = 60,
    XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID = 61,
    XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID = 62,
    XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID = 63,
    XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID = 64,
    XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID = 65,
    XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID = 66,
    XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID = 67
} XrFaceParameterIndicesANDROID;
ดัชนี ชื่อ รูปภาพอ้างอิง
0 BROW_LOWERER_L
รูปภาพอ้างอิงของหน้านิ่ง
BROW_LOWERER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
BROW_LOWERER_L = 1.0
1 BROW_LOWERER_R
รูปภาพอ้างอิงของหน้านิ่ง
BROW_LOWERER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
BROW_LOWERER_R = 1.0
2 CHEEK_PUFF_L
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_PUFF_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_PUFF_L = 1.0
3 CHEEK_PUFF_R
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_PUFF_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_PUFF_R = 1.0
4 CHEEK_RAISER_L
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_RAISER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_RAISER_L = 1.0
5 CHEEK_RAISER_R
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_RAISER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_RAISER_R = 1.0
6 CHEEK_SUCK_L
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_SUCK_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_SUCK_L = 1.0
7 CHEEK_SUCK_R
รูปภาพอ้างอิงของหน้านิ่ง
CHEEK_SUCK_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHEEK_SUCK_R = 1.0
8 CHIN_RAISER_B
รูปภาพอ้างอิงของหน้านิ่ง
CHIN_RAISER_B = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHIN_RAISER_B = 1.0
9 CHIN_RAISER_T
รูปภาพอ้างอิงของหน้านิ่ง
CHIN_RAISER_T = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
CHIN_RAISER_T = 1.0
10 DIMPLER_L
รูปภาพอ้างอิงของหน้านิ่ง
DIMPLER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
DIMPLER_L = 1.0
11 DIMPLER_R
รูปภาพอ้างอิงของหน้านิ่ง
DIMPLER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
DIMPLER_R = 1.0
12 EYES_CLOSED_L
รูปภาพอ้างอิงของหน้านิ่ง
EYES_CLOSED_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_CLOSED_L = 1.0
13 EYES_CLOSED_R
รูปภาพอ้างอิงของหน้านิ่ง
EYES_CLOSED_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_CLOSED_R = 1.0
14 EYES_LOOK_DOWN_L
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_DOWN_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_DOWN_L = 1.0
15 EYES_LOOK_DOWN_R
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_DOWN_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_DOWN_R = 1.0
16 EYES_LOOK_LEFT_L
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_LEFT_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_LEFT_L = 1.0
17 EYES_LOOK_LEFT_R
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_LEFT_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_LEFT_R = 1.0
18 EYES_LOOK_RIGHT_L
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_RIGHT_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_RIGHT_L = 1.0
19 EYES_LOOK_RIGHT_R
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_RIGHT_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_RIGHT_R = 1.0
20 EYES_LOOK_UP_L
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_UP_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_UP_L = 1.0
21 EYES_LOOK_UP_R
รูปภาพอ้างอิงของหน้านิ่ง
EYES_LOOK_UP_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
EYES_LOOK_UP_R = 1.0
22 INNER_BROW_RAISER_L
รูปภาพอ้างอิงของหน้านิ่ง
INNER_BROW_RAISER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
INNER_BROW_RAISER_L = 1.0
23 INNER_BROW_RAISER_R
รูปภาพอ้างอิงของหน้านิ่ง
INNER_BROW_RAISER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
INNER_BROW_RAISER_R = 1.0
24 JAW_DROP
รูปภาพอ้างอิงของหน้านิ่ง
JAW_DROP = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
JAW_DROP = 1.0
25 JAW_SIDEWAYS_LEFT
รูปภาพอ้างอิงของหน้านิ่ง
JAW_SIDEWAYS_LEFT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
JAW_SIDEWAYS_LEFT = 1.0
26 JAW_SIDEWAYS_RIGHT
รูปภาพอ้างอิงของหน้านิ่ง
JAW_SIDEWAYS_RIGHT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
JAW_SIDEWAYS_RIGHT = 1.0
27 JAW_THRUST
รูปภาพอ้างอิงของหน้านิ่ง
JAW_THRUST = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
JAW_THRUST = 1.0
28 LID_TIGHTENER_L
รูปภาพอ้างอิงของหน้านิ่ง
LID_TIGHTENER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LID_TIGHTENER_L = 1.0
29 LID_TIGHTENER_R
รูปภาพอ้างอิงของหน้านิ่ง
LID_TIGHTENER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LID_TIGHTENER_R = 1.0
30 LIP_CORNER_DEPRESSOR_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_CORNER_DEPRESSOR_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_CORNER_DEPRESSOR_L = 1.0
31 LIP_CORNER_DEPRESSOR_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_CORNER_DEPRESSOR_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_CORNER_DEPRESSOR_R = 1.0
32 LIP_CORNER_PULLER_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_CORNER_PULLER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_CORNER_PULLER_L = 1.0
33 LIP_CORNER_PULLER_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_CORNER_PULLER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_CORNER_PULLER_R = 1.0
34 LIP_FUNNELER_LB
รูปภาพอ้างอิงของหน้านิ่ง
LIP_FUNNELER_LB = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_FUNNELER_LB = 1.0
35 LIP_FUNNELER_LT
รูปภาพอ้างอิงของหน้านิ่ง
LIP_FUNNELER_LT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_FUNNELER_LT = 1.0
36 LIP_FUNNELER_RB
รูปภาพอ้างอิงของหน้านิ่ง
LIP_FUNNELER_RB = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_FUNNELER_RB = 1.0
37 LIP_FUNNELER_RT
รูปภาพอ้างอิงของหน้านิ่ง
LIP_FUNNELER_RT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_FUNNELER_RT = 1.0
38 LIP_PRESSOR_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_PRESSOR_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_PRESSOR_L = 1.0
39 LIP_PRESSOR_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_PRESSOR_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_PRESSOR_R = 1.0
40 LIP_PUCKER_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_PUCKER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_PUCKER_L = 1.0
41 LIP_PUCKER_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_PUCKER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_PUCKER_R = 1.0
42 LIP_STRETCHER_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_STRETCHER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_STRETCHER_L = 1.0
43 LIP_STRETCHER_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_STRETCHER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_STRETCHER_R = 1.0
44 LIP_SUCK_LB
รูปภาพอ้างอิงของหน้านิ่ง
LIP_SUCK_LB = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_SUCK_LB = 1.0
45 LIP_SUCK_LT
รูปภาพอ้างอิงของหน้านิ่ง
LIP_SUCK_LT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_SUCK_LT = 1.0
46 LIP_SUCK_RB
รูปภาพอ้างอิงของหน้านิ่ง
LIP_SUCK_RB = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_SUCK_RB = 1.0
47 LIP_SUCK_RT
รูปภาพอ้างอิงของหน้านิ่ง
LIP_SUCK_RT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_SUCK_RT = 1.0
48 LIP_TIGHTENER_L
รูปภาพอ้างอิงของหน้านิ่ง
LIP_TIGHTENER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_TIGHTENER_L = 1.0
49 LIP_TIGHTENER_R
รูปภาพอ้างอิงของหน้านิ่ง
LIP_TIGHTENER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LIP_TIGHTENER_R = 1.0
50 LIPS_TOWARD
รูปภาพอ้างอิงของหน้านิ่ง
LIPS_TOWARD = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
JAW_DROP = 1.0 and LIPS_TOWARD = 1.0
51 LOWER_LIP_DEPRESSOR_L
รูปภาพอ้างอิงของหน้านิ่ง
LOWER_LIP_DEPRESSOR_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LOWER_LIP_DEPRESSOR_L = 1.0
52 LOWER_LIP_DEPRESSOR_R
รูปภาพอ้างอิงของหน้านิ่ง
LOWER_LIP_DEPRESSOR_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
LOWER_LIP_DEPRESSOR_R = 1.0
53 ปากซ้าย
รูปภาพอ้างอิงของหน้านิ่ง
MOUTH_LEFT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
MOUTH_LEFT = 1.0
54 ปากขวา
รูปภาพอ้างอิงของหน้านิ่ง
MOUTH_RIGHT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
MOUTH_RIGHT = 1.0
55 NOSE_WRINKLER_L
รูปภาพอ้างอิงของหน้านิ่ง
NOSE_WRINKLER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
NOSE_WRINKLER_L = 1.0
56 NOSE_WRINKLER_R
รูปภาพอ้างอิงของหน้านิ่ง
NOSE_WRINKLER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
NOSE_WRINKLER_R = 1.0
57 OUTER_BROW_RAISER_L
รูปภาพอ้างอิงของหน้านิ่ง
OUTER_BROW_RAISER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
OUTER_BROW_RAISER_L = 1.0
58 OUTER_BROW_RAISER_R
รูปภาพอ้างอิงของหน้านิ่ง
OUTER_BROW_RAISER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
OUTER_BROW_RAISER_R = 1.0
59 UPPER_LID_RAISER_L
รูปภาพอ้างอิงของหน้านิ่ง
UPPER_LID_RAISER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
UPPER_LID_RAISER_L = 1.0
60 UPPER_LID_RAISER_R
รูปภาพอ้างอิงของหน้านิ่ง
UPPER_LID_RAISER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
UPPER_LID_RAISER_R = 1.0
61 UPPER_LIP_RAISER_L
รูปภาพอ้างอิงของหน้านิ่ง
UPPER_LIP_RAISER_L = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
UPPER_LIP_RAISER_L = 1.0
62 UPPER_LIP_RAISER_R
รูปภาพอ้างอิงของหน้านิ่ง
UPPER_LIP_RAISER_R = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
UPPER_LIP_RAISER_R = 1.0
63 แลบลิ้น
รูปภาพอ้างอิงของหน้านิ่ง
TONGUE_OUT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
TONGUE_OUT = 1.0
64 TONGUE_LEFT
รูปภาพอ้างอิงของหน้านิ่ง
TONGUE_LEFT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
TONGUE_LEFT = 1.0
65 TONGUE_RIGHT
รูปภาพอ้างอิงของหน้านิ่ง
TONGUE_RIGHT = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
TONGUE_RIGHT = 1.0
66 TONGUE_UP
รูปภาพอ้างอิงของหน้านิ่ง
TONGUE_UP = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
TONGUE_UP = 1.0
67 TONGUE_DOWN
รูปภาพอ้างอิงของหน้านิ่ง
TONGUE_DOWN = 0.0
รูปภาพอ้างอิงการติดตามใบหน้า
TONGUE_DOWN = 1.0

ตัวอย่างโค้ดสำหรับการติดตามใบหน้า

โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับน้ำหนักทั้งหมดสำหรับรูปร่างผสมการแสดงสีหน้า

XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized, e.g. created at app startup.

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateFaceTrackerANDROID xrCreateFaceTrackerANDROID; // previously initialized
PFN_xrDestroyFaceTrackerANDROID xrDestroyFaceTrackerANDROID; // previously initialized
PFN_xrGetFaceStateANDROID xrGetFaceStateANDROID; // previously initialized
PFN_xrGetFaceCalibrationStateANDROID xrGetFaceCalibrationStateANDROID; // previously initialized

// Inspect system capability
XrSystemProperties properties{XR_TYPE_SYSTEM_PROPERTIES};
XrSystemFaceTrackingPropertiesANDROID faceTrackingProperties{XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_ANDROID};
properties.next = &faceTrackingProperties;
CHK_XR(xrGetSystemProperties(instance, systemId, &properties));
if (!faceTrackingProperties.supportsFaceTracking) {
  // face tracking is not supported.
  return;
}

XrFaceTrackerANDROID faceTracker;
XrFaceTrackerCreateInfoANDROID
        createInfo{.type = XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID,
                    .next = nullptr};
CHK_XR(xrCreateFaceTrackerANDROID(session, &createInfo, &faceTracker));

// If the system supports face calibration:
XrBool32 isCalibrated;
CHK_XR(xrGetFaceCalibrationStateANDROID(faceTracker, &isCalibrated));
if (!isCalibrated) {
    // Redirect the user to system calibration setting.
}

XrFaceStateANDROID faceState;
float faceExpressionParameters[XR_FACE_PARAMETER_COUNT_ANDROID];
faceState.type = XR_TYPE_FACE_STATE_ANDROID;
faceState.next = nullptr;
faceState.parametersCapacityInput = XR_FACE_PARAMETER_COUNT_ANDROID;
faceState.parameters = faceExpressionParameters;
float regionConfidences[XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID];
faceState.regionConfidencesCapacityInput = XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID;
faceState.regionConfidences = regionConfidences;

while (1) {
    // ...
    // For every frame in the frame loop
    // ...
    XrFrameState frameState; // previously returned from xrWaitFrame

    XrFaceStateGetInfoANDROID faceGetInfo{
            .type = XR_TYPE_FACE_STATE_GET_INFO_ANDROID,
            .next = nullptr,
            .time = frameState.predictedDisplayTime,
    };

    CHK_XR(xrGetFaceStateANDROID(faceTracker, &faceGetInfo, &faceState));
    if (faceState.isValid) {
        for (uint32_t i = 0; i < XR_FACE_PARAMETER_COUNT_ANDROID; ++i) {
            // parameters[i] contains a weight of specific blend shape
        }
        for (uint32_t i = 0; i < XR_FACE_REGION_CONFIDENCE_COUNT_ANDROID; ++i) {
            // regionConfidences[i] contains a confidence value of a specific region
        }
    }
}

// after usage
CHK_XR(xrDestroyFaceTrackerANDROID(faceTracker));

ประเภทออบเจ็กต์ใหม่

ค่าคงที่ Enum ใหม่

  • XR_FACE_PARAMETER_COUNT_ANDROID

มีการขยายการแจงนับ XrObjectType ด้วยรายการต่อไปนี้

  • XR_OBJECT_TYPE_FACE_TRACKER_ANDROID

มีการขยายการแจงนับ XrStructureType ด้วยรายการต่อไปนี้

  • XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
  • XR_TYPE_FACE_STATE_GET_INFO_ANDROID
  • XR_TYPE_FACE_STATE_ANDROID
  • XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_ANDROID

Enums ใหม่

โครงสร้างใหม่

ฟังก์ชันใหม่

ปัญหา

ประวัติเวอร์ชัน

  • การแก้ไขครั้งที่ 1, 05-09-2024 (Levana Chen)
    • คำอธิบายส่วนขยายเริ่มต้น
  • การแก้ไขครั้งที่ 2, 01-04-2025 (Kenny Vercaemer)
    • เพิ่มภูมิภาคที่มีความมั่นใจเกี่ยวกับใบหน้า
  • การแก้ไข 3, 2025-06-04 (Levana Chen)
    • เพิ่มรหัสข้อผิดพลาดใหม่

OpenXR™ และโลโก้ OpenXR เป็นเครื่องหมายการค้าของ The Khronos Group Inc. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร