Tiện ích OpenXR XR_ANDROID_face_tracking

Name String

XR_ANDROID_face_tracking

Loại phần mở rộng

Tiện ích phiên bản

Số máy nhánh đã đăng ký

459

Bản sửa đổi

3

Phần mở rộng và các phần phụ thuộc vào phiên bản

OpenXR 1.0

Ngày sửa đổi gần đây nhất

2025-06-04

Trạng thái IP

Không có thông báo xác nhận quyền sở hữu nào đã biết về quyền sở hữu trí tuệ.

Cộng tác viên

Spencer Quin, Google

Jared Finder, Google

Levana Chen, Google

Tổng quan

Tiện ích này cho phép các ứng dụng lấy trọng số của hình dạng kết hợp và hiển thị biểu cảm khuôn mặt trong trải nghiệm XR.

Tiện ích này nhằm cung cấp thông tin cần thiết để tạo hình đại diện chân thực và thể hiện người dùng một cách biểu cảm trong không gian ảo. Ứng dụng có thể kiểm tra việc kích hoạt hiệu chỉnh khuôn mặt trước khi nhận được trọng số của các hình dạng kết hợp.

Công cụ theo dõi khuôn mặt

Trình theo dõi khuôn mặt là một thiết bị cảm biến theo dõi biểu cảm khuôn mặt thông qua các luồng hình ảnh hướng đến người dùng và chế độ hiệu chuẩn camera. Mục đích chính của tiện ích này là liên kết biểu cảm khuôn mặt của người dùng với hình đại diện của họ trong một cảnh ảo.

Dữ liệu theo dõi khuôn mặt là thông tin cá nhân nhạy cảm và có liên kết chặt chẽ với quyền riêng tư và tính toàn vẹn của cá nhân. Các ứng dụng lưu trữ hoặc chuyển dữ liệu theo dõi khuôn mặt luôn phải yêu cầu người dùng chủ động và cụ thể chấp nhận việc này.

  • Các ứng dụng sẽ nhận được XR_ERROR_PERMISSION_INSUFFICIENT khi tạo một trình theo dõi khuôn mặt đang hoạt động cho đến khi ứng dụng được phép truy cập vào trình theo dõi khuôn mặt.
  • Khi nhận trạng thái khuôn mặt bằng cách sử dụng xrGetFaceStateANDROID, XrFaceStateANDROID::isValid sẽ không trả về XR_TRUE trừ phi ứng dụng đã được cấp quyền truy cập

Kiểm tra khả năng của hệ thống

Cấu trúc XrSystemFaceTrackingPropertiesANDROID được xác định là:

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

Nội dung mô tả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • supportsFaceTracking là một XrBool32 cho biết liệu hệ thống hiện tại có hỗ trợ tính năng theo dõi khuôn mặt hay không.

Một ứng dụng có thể kiểm tra xem hệ thống có khả năng theo dõi khuôn mặt hay không bằng cách mở rộng XrSystemProperties bằng cấu trúc XrSystemFaceTrackingPropertiesANDROID khi gọi xrGetSystemProperties.

Nếu và chỉ khi một thời gian chạy trả về XR_FALSE cho supportsFaceTracking, thì thời gian chạy phải trả về XR_ERROR_FEATURE_UNSUPPORTED từ xrCreateFaceTrackerANDROID.

Tạo một đối tượng theo dõi khuôn mặt

XR_DEFINE_HANDLE(XrFaceTrackerANDROID)

Xử lý XrFaceTrackerANDROID đại diện cho một trình theo dõi khuôn mặt để theo dõi khuôn mặt.

Bạn có thể dùng mã nhận dạng này để truy cập vào dữ liệu theo dõi khuôn mặt bằng các hàm khác trong tiện ích này.

Hàm xrCreateFaceTrackerANDROID được xác định như sau:

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

Nội dung mô tả về tham số

Một ứng dụng có thể tạo một đối tượng XrFaceTrackerANDROID bằng hàm xrCreateFaceTrackerANDROID.

Nếu hệ thống không hỗ trợ tính năng theo dõi khuôn mặt, xrCreateFaceTrackerANDROID sẽ trả về XR_ERROR_FEATURE_UNSUPPORTED.

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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

Cấu trúc XrFaceTrackerCreateInfoANDROID được mô tả như sau:

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

Nội dung mô tả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.

Cấu trúc XrFaceTrackerCreateInfoANDROID mô tả thông tin để tạo một đối tượng XrFaceTrackerANDROID.

Sử dụng hợp lệ (Ngầm ẩn)

Hàm xrDestroyFaceTrackerANDROID được xác định như sau:

XrResult xrDestroyFaceTrackerANDROID(
    XrFaceTrackerANDROID                        faceTracker);

Nội dung mô tả về tham số

Hàm xrDestroyFaceTrackerANDROID giải phóng faceTracker và các tài nguyên cơ bản khi trải nghiệm theo dõi khuôn mặt kết thúc.

Sử dụng hợp lệ (Ngầm ẩn)

Độ an toàn cho luồng

  • Quyền truy cập vào faceTracker và mọi đối tượng con phải được đồng bộ hoá bên ngoài

Mã trả về

Thành công

  • XR_SUCCESS

Thất bại

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

Kiểm tra chế độ hiệu chỉnh khuôn mặt

Hàm xrGetFaceCalibrationStateANDROID được xác định như sau:

XrResult xrGetFaceCalibrationStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    XrBool32*                                   faceIsCalibratedOutput);

Nội dung mô tả về tham số

Ứng dụng có thể kiểm tra trạng thái hiệu chỉnh khuôn mặt bằng hàm xrGetFaceCalibrationStateANDROID.

Khi dịch vụ theo dõi vẫn đang trong quá trình khởi tạo, thời gian chạy có thể trả về XR_ERROR_SERVICE_NOT_READY_ANDROID từ xrGetFaceCalibrationStateANDROID để cho biết rằng ứng dụng có thể thử lại sau.

Nếu hệ thống không hỗ trợ hiệu chỉnh khuôn mặt, xrGetFaceCalibrationStateANDROID sẽ trả về XR_ERROR_FEATURE_UNSUPPORTED. Nếu không, faceIsCalibratedOutput có thể được đặt thành XR_TRUE để phản ánh trạng thái hiệu chỉnh khuôn mặt.

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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

Nhận biểu cảm khuôn mặt

Hàm xrGetFaceStateANDROID trả về các hình dạng kết hợp của biểu cảm khuôn mặt tại một thời điểm nhất định.

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

Nội dung mô tả về tham số

Sử dụng hợp lệ (Ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Thất bại

  • 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

Cấu trúc XrFaceStateGetInfoANDROID mô tả thông tin cần thiết để lấy biểu cảm khuôn mặt.

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

Nội dung mô tả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
  • time là một XrTime mà tại đó các biểu cảm khuôn mặt được yêu cầu.

Các ứng dụng nên yêu cầu một khoảng thời gian bằng với thời gian hiển thị dự kiến cho khung hình được kết xuất.

Sử dụng hợp lệ (Ngầm ẩn)

Cấu trúc XrFaceStateANDROID trả về trạng thái theo dõi khuôn mặt và biểu cảm khuôn mặt.

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;

Nội dung mô tả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.
  • parametersCapacityInput là một uint32_t mô tả dung lượng của mảng parameters hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • parametersCountOutput là một uint32_t mô tả số lượng parameters hoặc dung lượng cần thiết trong trường hợp parametersCapacityInput không đủ.
  • parameters là một con trỏ đến mảng float do ứng dụng phân bổ. Mảng này sẽ được điền trọng số của các hình dạng kết hợp biểu cảm khuôn mặt.
  • faceTrackingStateXrFaceTrackingStateANDROID trạng thái hợp lệ của tính năng theo dõi khuôn mặt.
  • sampleTime là thời gian XrTime mà các biểu thức được trả về được theo dõi hoặc ngoại suy đến. Giá trị này bằng thời gian mà các trọng số biểu thức được yêu cầu nếu quá trình ngoại suy tại thời điểm đó thành công.
  • isValid cho biết liệu dữ liệu có hợp lệ hay không, ngay cả khi dữ liệu đó không phải từ khung hình hiện tại.
  • regionConfidencesCapacityInput là một uint32_t mô tả dung lượng của mảng regionConfidences hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.
  • regionConfidencesCountOutput là một uint32_t mô tả số lượng regionConfidences hoặc dung lượng cần thiết trong trường hợp regionConfidencesCapacityInput không đủ.
  • regionConfidences là một con trỏ đến mảng float do ứng dụng phân bổ. Mảng này sẽ được điền các giá trị độ tin cậy cho từng vùng trên khuôn mặt.
  • Hãy xem phần Tham số kích thước vùng đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước parametersregionConfidences cần thiết.

Ứng dụng có thể đặt parametersCapacityInput thành XR_FACE_PARAMETER_COUNT_ANDROID để nhận các biểu cảm khuôn mặt được lập chỉ mục theo XrFaceParameterIndicesANDROID.

parameters được trả về biểu thị trọng số của các hình dạng kết hợp của biểu cảm khuôn mặt hiện tại.

Mảng parameters sẽ được sắp xếp theo thứ tự để ứng dụng có thể lập chỉ mục các phần tử bằng cách sử dụng enum biểu cảm khuôn mặt tương ứng (ví dụ: XrFaceParameterIndicesANDROID).

Sử dụng hợp lệ (Ngầm ẩn)

  • Bạn phải bật tiện ích XR_ANDROID_face_tracking trước khi sử dụng XrFaceStateANDROID
  • type phảiXR_TYPE_FACE_STATE_ANDROID
  • next phảiNULL hoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
  • Nếu parametersCapacityInput không phải là 0, parameters thì must phải là con trỏ đến một mảng gồm các giá trị parametersCapacityInput float
  • Nếu regionConfidencesCapacityInput không phải là 0, regionConfidences thì must phải là con trỏ đến một mảng gồm các giá trị regionConfidencesCapacityInput float
  • faceTrackingState phải là một giá trị XrFaceTrackingStateANDROID hợp lệ

Liệt kê XrFaceTrackingStateANDROID để xác định các trạng thái khác nhau của trình theo dõi khuôn mặt.

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;

Các enum có ý nghĩa như sau:

Enum

Nội dung mô tả

XR_FACE_TRACKING_STATE_PAUSED_ANDROID

Cho biết tính năng theo dõi khuôn mặt đang tạm dừng nhưng có thể tiếp tục trong tương lai.

XR_FACE_TRACKING_STATE_STOPPED_ANDROID

Tính năng theo dõi đã dừng nhưng ứng dụng vẫn có một trình theo dõi khuôn mặt đang hoạt động.

XR_FACE_TRACKING_STATE_TRACKING_ANDROID

Khuôn mặt được theo dõi và tư thế của khuôn mặt là tư thế hiện tại.

Vùng tin cậy

Tiện ích XR_ANDROID_face_tracking cũng cung cấp các giá trị độ tin cậy cho 3 vùng trên khuôn mặt: mắt trái, mắt phải và phần dưới khuôn mặt. Các giá trị này (từ 0 (không tin tưởng) đến 1 (tin tưởng nhất)) cho biết độ chính xác của tính năng theo dõi khuôn mặt cho từng khu vực.

Bạn có thể sử dụng các giá trị độ tin cậy này để dần vô hiệu hoá blendshape hoặc áp dụng bộ lọc hình ảnh (chẳng hạn như làm mờ) cho vùng khuôn mặt tương ứng. Để có chế độ kiểm soát bật/tắt cơ bản, bạn nên sử dụng ngưỡng 0,3 để huỷ kích hoạt hoàn toàn các hình dạng kết hợp trong vùng khuôn mặt tương ứng.

Khu vực "khuôn mặt dưới" thể hiện mọi thứ bên dưới mắt, bao gồm cả miệng, cằm, má và mũi. Vùng mắt bao gồm mắt và vùng lông mày.

Bảng sau đây mô tả các blendshape liên kết với từng vùng tin cậy:

Vùng tin cậy Blendshape
Mặt dưới `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`
Mặt trên bên trái/phải `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`

Quy ước về hình dạng kết hợp

Tiện ích này xác định 68 hình dạng kết hợp thông qua XR_FACE_PARAMETER_COUNT_ANDROID cho định dạng G-Nome rút gọn. Mỗi tham số trong enum này là một chỉ mục trong mảng hình dạng kết hợp có các giá trị thuộc loại float và thời gian chạy chuẩn hoá thành 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;
Chỉ mục Tên Hình ảnh tham khảo
0 BROW_LOWERER_L
Hình ảnh tham khảo khuôn mặt bình thản
BROW_LOWERER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
BROW_LOWERER_L = 1.0
1 BROW_LOWERER_R
Hình ảnh tham khảo khuôn mặt bình thản
BROW_LOWERER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
BROW_LOWERER_R = 1.0
2 CHEEK_PUFF_L
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_PUFF_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_PUFF_L = 1.0
3 CHEEK_PUFF_R
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_PUFF_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_PUFF_R = 1.0
4 CHEEK_RAISER_L
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_RAISER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_RAISER_L = 1.0
5 CHEEK_RAISER_R
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_RAISER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_RAISER_R = 1.0
6 CHEEK_SUCK_L
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_SUCK_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_SUCK_L = 1.0
7 CHEEK_SUCK_R
Hình ảnh tham khảo khuôn mặt bình thản
CHEEK_SUCK_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHEEK_SUCK_R = 1.0
8 CHIN_RAISER_B
Hình ảnh tham khảo khuôn mặt bình thản
CHIN_RAISER_B = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHIN_RAISER_B = 1.0
9 CHIN_RAISER_T
Hình ảnh tham khảo khuôn mặt bình thản
CHIN_RAISER_T = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
CHIN_RAISER_T = 1.0
10 DIMPLER_L
Hình ảnh tham khảo khuôn mặt bình thản
DIMPLER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
DIMPLER_L = 1.0
11 DIMPLER_R
Hình ảnh tham khảo khuôn mặt bình thản
DIMPLER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
DIMPLER_R = 1.0
12 EYES_CLOSED_L
Hình ảnh tham khảo khuôn mặt bình thản
EYES_CLOSED_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_CLOSED_L = 1.0
13 EYES_CLOSED_R
Hình ảnh tham khảo khuôn mặt bình thản
EYES_CLOSED_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_CLOSED_R = 1.0
14 EYES_LOOK_DOWN_L
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_DOWN_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_DOWN_L = 1.0
15 EYES_LOOK_DOWN_R
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_DOWN_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_DOWN_R = 1.0
16 EYES_LOOK_LEFT_L
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_LEFT_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_LEFT_L = 1.0
17 EYES_LOOK_LEFT_R
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_LEFT_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_LEFT_R = 1.0
18 EYES_LOOK_RIGHT_L
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_RIGHT_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_RIGHT_L = 1.0
19 EYES_LOOK_RIGHT_R
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_RIGHT_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_RIGHT_R = 1.0
20 EYES_LOOK_UP_L
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_UP_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_UP_L = 1.0
21 EYES_LOOK_UP_R
Hình ảnh tham khảo khuôn mặt bình thản
EYES_LOOK_UP_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
EYES_LOOK_UP_R = 1.0
22 INNER_BROW_RAISER_L
Hình ảnh tham khảo khuôn mặt bình thản
INNER_BROW_RAISER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
INNER_BROW_RAISER_L = 1.0
23 INNER_BROW_RAISER_R
Hình ảnh tham khảo khuôn mặt bình thản
INNER_BROW_RAISER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
INNER_BROW_RAISER_R = 1.0
24 JAW_DROP
Hình ảnh tham khảo khuôn mặt bình thản
JAW_DROP = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
JAW_DROP = 1.0
25 JAW_SIDEWAYS_LEFT
Hình ảnh tham khảo khuôn mặt bình thản
JAW_SIDEWAYS_LEFT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
JAW_SIDEWAYS_LEFT = 1.0
26 JAW_SIDEWAYS_RIGHT
Hình ảnh tham khảo khuôn mặt bình thản
JAW_SIDEWAYS_RIGHT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
JAW_SIDEWAYS_RIGHT = 1.0
27 JAW_THRUST
Hình ảnh tham khảo khuôn mặt bình thản
JAW_THRUST = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
JAW_THRUST = 1.0
28 LID_TIGHTENER_L
Hình ảnh tham khảo khuôn mặt bình thản
LID_TIGHTENER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LID_TIGHTENER_L = 1.0
29 LID_TIGHTENER_R
Hình ảnh tham khảo khuôn mặt bình thản
LID_TIGHTENER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LID_TIGHTENER_R = 1.0
30 LIP_CORNER_DEPRESSOR_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_CORNER_DEPRESSOR_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_CORNER_DEPRESSOR_L = 1.0
31 LIP_CORNER_DEPRESSOR_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_CORNER_DEPRESSOR_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_CORNER_DEPRESSOR_R = 1.0
32 LIP_CORNER_PULLER_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_CORNER_PULLER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_CORNER_PULLER_L = 1.0
33 LIP_CORNER_PULLER_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_CORNER_PULLER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_CORNER_PULLER_R = 1.0
34 LIP_FUNNELER_LB
Hình ảnh tham khảo khuôn mặt bình thản
LIP_FUNNELER_LB = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_FUNNELER_LB = 1.0
35 LIP_FUNNELER_LT
Hình ảnh tham khảo khuôn mặt bình thản
LIP_FUNNELER_LT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_FUNNELER_LT = 1.0
36 LIP_FUNNELER_RB
Hình ảnh tham khảo khuôn mặt bình thản
LIP_FUNNELER_RB = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_FUNNELER_RB = 1.0
37 LIP_FUNNELER_RT
Hình ảnh tham khảo khuôn mặt bình thản
LIP_FUNNELER_RT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_FUNNELER_RT = 1.0
38 LIP_PRESSOR_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_PRESSOR_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_PRESSOR_L = 1.0
39 LIP_PRESSOR_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_PRESSOR_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_PRESSOR_R = 1.0
40 LIP_PUCKER_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_PUCKER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_PUCKER_L = 1.0
41 LIP_PUCKER_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_PUCKER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_PUCKER_R = 1.0
42 LIP_STRETCHER_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_STRETCHER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_STRETCHER_L = 1.0
43 LIP_STRETCHER_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_STRETCHER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_STRETCHER_R = 1.0
44 LIP_SUCK_LB
Hình ảnh tham khảo khuôn mặt bình thản
LIP_SUCK_LB = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_SUCK_LB = 1.0
45 LIP_SUCK_LT
Hình ảnh tham khảo khuôn mặt bình thản
LIP_SUCK_LT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_SUCK_LT = 1.0
46 LIP_SUCK_RB
Hình ảnh tham khảo khuôn mặt bình thản
LIP_SUCK_RB = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_SUCK_RB = 1.0
47 LIP_SUCK_RT
Hình ảnh tham khảo khuôn mặt bình thản
LIP_SUCK_RT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_SUCK_RT = 1.0
48 LIP_TIGHTENER_L
Hình ảnh tham khảo khuôn mặt bình thản
LIP_TIGHTENER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_TIGHTENER_L = 1.0
49 LIP_TIGHTENER_R
Hình ảnh tham khảo khuôn mặt bình thản
LIP_TIGHTENER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LIP_TIGHTENER_R = 1.0
50 LIPS_TOWARD
Hình ảnh tham khảo khuôn mặt bình thản
LIPS_TOWARD = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
JAW_DROP = 1.0 và LIPS_TOWARD = 1.0
51 LOWER_LIP_DEPRESSOR_L
Hình ảnh tham khảo khuôn mặt bình thản
LOWER_LIP_DEPRESSOR_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LOWER_LIP_DEPRESSOR_L = 1.0
52 LOWER_LIP_DEPRESSOR_R
Hình ảnh tham khảo khuôn mặt bình thản
LOWER_LIP_DEPRESSOR_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
LOWER_LIP_DEPRESSOR_R = 1.0
53 MOUTH_LEFT
Hình ảnh tham khảo khuôn mặt bình thản
MOUTH_LEFT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
MOUTH_LEFT = 1.0
54 MOUTH_RIGHT
Hình ảnh tham khảo khuôn mặt bình thản
MOUTH_RIGHT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
MOUTH_RIGHT = 1.0
55 NOSE_WRINKLER_L
Hình ảnh tham khảo khuôn mặt bình thản
NOSE_WRINKLER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
NOSE_WRINKLER_L = 1.0
56 NOSE_WRINKLER_R
Hình ảnh tham khảo khuôn mặt bình thản
NOSE_WRINKLER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
NOSE_WRINKLER_R = 1.0
57 OUTER_BROW_RAISER_L
Hình ảnh tham khảo khuôn mặt bình thản
OUTER_BROW_RAISER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
OUTER_BROW_RAISER_L = 1.0
58 OUTER_BROW_RAISER_R
Hình ảnh tham khảo khuôn mặt bình thản
OUTER_BROW_RAISER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
OUTER_BROW_RAISER_R = 1.0
59 UPPER_LID_RAISER_L
Hình ảnh tham khảo khuôn mặt bình thản
UPPER_LID_RAISER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
UPPER_LID_RAISER_L = 1.0
60 UPPER_LID_RAISER_R
Hình ảnh tham khảo khuôn mặt bình thản
UPPER_LID_RAISER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
UPPER_LID_RAISER_R = 1.0
61 UPPER_LIP_RAISER_L
Hình ảnh tham khảo khuôn mặt bình thản
UPPER_LIP_RAISER_L = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
UPPER_LIP_RAISER_L = 1.0
62 UPPER_LIP_RAISER_R
Hình ảnh tham khảo khuôn mặt bình thản
UPPER_LIP_RAISER_R = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
UPPER_LIP_RAISER_R = 1.0
63 TONGUE_OUT
Hình ảnh tham khảo khuôn mặt bình thản
TONGUE_OUT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
TONGUE_OUT = 1.0
64 TONGUE_LEFT
Hình ảnh tham khảo khuôn mặt bình thản
TONGUE_LEFT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
TONGUE_LEFT = 1.0
65 TONGUE_RIGHT
Hình ảnh tham khảo khuôn mặt bình thản
TONGUE_RIGHT = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
TONGUE_RIGHT = 1.0
66 TONGUE_UP
Hình ảnh tham khảo khuôn mặt bình thản
TONGUE_UP = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
TONGUE_UP = 1.0
67 TONGUE_DOWN
Hình ảnh tham khảo khuôn mặt bình thản
TONGUE_DOWN = 0.0
hình ảnh tham chiếu để theo dõi khuôn mặt
TONGUE_DOWN = 1.0

Mã ví dụ để theo dõi khuôn mặt

Đoạn mã ví dụ sau đây minh hoạ cách lấy tất cả trọng số cho các hình dạng kết hợp biểu cảm khuôn mặt.

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));

Các loại đối tượng mới

Hằng số Enum mới

  • XR_FACE_PARAMETER_COUNT_ANDROID

Liệt kê XrObjectType được mở rộng bằng:

  • XR_OBJECT_TYPE_FACE_TRACKER_ANDROID

Liệt kê XrStructureType được mở rộng bằng:

  • 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

Enum mới

Cấu trúc mới

Hàm mới

Vấn đề

Nhật ký phiên bản

  • Bản sửa đổi 1, ngày 5 tháng 9 năm 2024 (Levana Chen)
    • Nội dung mô tả ban đầu của tiện ích
  • Bản sửa đổi 2, ngày 1 tháng 4 năm 2025 (Kenny Vercaemer)
    • Đã thêm các vùng có độ tin cậy về khuôn mặt
  • Bản sửa đổi 3, ngày 4 tháng 6 năm 2025 (Levana Chen)
    • Đã thêm mã lỗi mới.

OpenXR™ và biểu trưng OpenXR là các nhãn hiệu thuộc sở hữu của The Khronos Group Inc. và được đăng ký làm nhãn hiệu ở Trung Quốc, Liên minh Châu Âu, Nhật Bản và Vương quốc Anh.