Tiện ích OpenXR XR_ANDROID_face_tracking

Chuỗi tên

XR_ANDROID_face_tracking

Loại phần mở rộng

Tiện ích thực thể

Số điện thoại mở rộng đã đăng ký

459

Bản sửa đổi

1

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

OpenXR 1.0

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

2024-09-06

Trạng thái IP

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

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 các hình dạng kết hợp và kết xuất biểu cảm trên 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 rõ nét người dùng trong không gian ảo. Ứng dụng có thể kiểm tra việc kích hoạt tính năng hiệu chỉnh khuôn mặt trước khi lấy trọng số của các hình dạng kết hợp.

Trình 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 luồng hình ảnh hướng về người dùng và quá trình hiệu chỉnh máy ảnh. Mục đích chính của tiện ích này là liên kết biểu cảm trên 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à liên quan chặt chẽ đến quyền riêng tư và tính toàn vẹn 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 phải luôn yêu cầu người dùng chấp nhận một cách chủ động và cụ thể để thực hiện việc này.

  • Các ứng dụng sẽ nhận được XR_ERROR_PERMISSION_INSUFFICIENT khi tạo trình theo dõi khuôn mặt đang hoạt động cho đến khi ứng dụng được cấp quyền truy cập vào trình theo dõi khuôn mặt.
  • Khi lấy 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 phép truy cập

Tạo tên người dùng cho trình theo dõi khuôn mặt

XR_DEFINE_HANDLE(XrFaceTrackerANDROID)

Tay điều khiển 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ể sử dụng tay cầm này để truy cập 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 là:

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

Nội dung mô tả tham số

Ứng dụng có thể tạo một tay điều khiển XrFaceTrackerANDROID bằng cách sử dụ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.

Cách sử dụng hợp lệ (ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • 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ỏ 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 tay điều khiển XrFaceTrackerANDROID.

Cách sử dụng hợp lệ (ngầm ẩn)

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

XrResult xrDestroyFaceTrackerANDROID(
    XrFaceTrackerANDROID                        faceTracker);

Nội dung mô tả tham số

Hàm xrDestroyFaceTrackerANDROID sẽ 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.

Cách 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 tay điều khiển con phải được đồng bộ hoá bên ngoài

Mã trả về

Thành công

  • XR_SUCCESS

Không thành công

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

Kiểm tra việc hiệu chỉnh mặt đồng hồ

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

XrResult xrGetFaceCalibrationStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    XrBool32*                                   faceIsCalibratedOutput);

Nội dung mô tả 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.

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

Cách sử dụng hợp lệ (ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • 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

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 trên 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ả tham số

Cách sử dụng hợp lệ (ngầm ẩn)

Mã trả về

Thành công

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Không thành công

  • 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 để nhận 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ỏ 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 tại đó biểu cảm khuôn mặt được yêu cầu.

Ứng dụng nên yêu cầu thời gian bằng với thời gian hiển thị dự đoán cho khung hình đã kết xuất.

Cách 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 trên 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;
} XrFaceStateANDROID;

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

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ 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.
  • parametersCapacityInputuint32_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 bắt buộc.
  • 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à con trỏ đến một mảng float do ứng dụng phân bổ sẽ được điền bằng trọng số của các hình dạng kết hợp biểu cảm khuôn mặt.
  • faceTrackingStateXrFaceTrackingStateANDROID của 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 tại đó các biểu thức được trả về được theo dõi hoặc ngoại suy. Giá trị này bằng thời điểm mà 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.
  • Hãy xem phần Tham số kích thước bộ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước parameters bắt buộc.

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

parameters được trả về thể hiện 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.

Các bản cập nhật mảng parameters sẽ được sắp xếp để ứ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 trên khuôn mặt tương ứng (ví dụ: XrFaceParameterIndicesANDROID).

Cách sử dụng hợp lệ (ngầm ẩn)

Biến 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ó 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ế hiện tại.

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

Tiện ích này xác định 63 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 vào một mảng hình dạng kết hợp có giá trị là loại float và thời gian chạy được 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
} XrFaceParameterIndicesANDROID;
Chỉ mục Tên Hình ảnh tham khảo
0 BROW_LOWERER_L
Hình ảnh tham chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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 chiếu khuôn mặt bình thường
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

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

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 trên khuôn mặt.

XrSession session; // previously initialized, for example 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

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:
bool 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;

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,
    };

    CHECK_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
        }
    }
}

// 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

Bổ sung enum XrObjectType bằng:

  • XR_OBJECT_TYPE_FACE_TRACKER_ANDROID

Bổ sung enum XrStructureType:

  • XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
  • XR_TYPE_FACE_STATE_GET_INFO_ANDROID
  • XR_TYPE_FACE_STATE_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