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
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ố
session
là một tay cầm XrSession trong đó trình theo dõi khuôn mặt sẽ hoạt động.createInfo
là XrFaceTrackerCreateInfoANDROID dùng để chỉ định trình theo dõi khuôn mặt.faceTracker
là tay điều khiển XrFaceTrackerANDROID được trả về.
Ứ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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi gọi xrCreateFaceTrackerANDROID session
phải là một tay cầm XrSession hợp lệcreateInfo
phải là con trỏ đến một cấu trúc XrFaceTrackerCreateInfoANDROID hợp lệfaceTracker
phải là con trỏ đến một tay cầm XrFaceTrackerANDROID
Mã trả về
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
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
type
là XrStructureType của cấu trúc này.next
làNULL
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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi sử dụng XrFaceTrackerCreateInfoANDROID type
phải làXR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Hàm xrDestroyFaceTrackerANDROID được xác định là:
XrResult xrDestroyFaceTrackerANDROID(
XrFaceTrackerANDROID faceTracker);
Nội dung mô tả tham số
faceTracker
là một XrFaceTrackerANDROID do xrCreateFaceTrackerANDROID tạo trước đó.
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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi gọi xrDestroyFaceTrackerANDROID faceTracker
phải là một tay cầm XrFaceTrackerANDROID hợp lệ
Độ 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ề
XR_SUCCESS
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ố
faceTracker
là một XrFaceTrackerANDROID do xrCreateFaceTrackerANDROID tạo trước đó.faceIsCalibratedOutput
cho biết trình theo dõi khuôn mặt đã được hiệu chỉnh hay chưa.
Ứ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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi gọi xrGetFaceCalibrationStateANDROID faceTracker
phải là một tay cầm XrFaceTrackerANDROID hợp lệfaceIsCalibratedOutput
phải là con trỏ đến giá trịXrBool32
Mã trả về
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
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ố
faceTracker
là một XrFaceTrackerANDROID do xrCreateFaceTrackerANDROID tạo trước đó.getInfo
là con trỏ đến XrFaceStateGetInfoANDROID mô tả thông tin để lấy biểu cảm khuôn mặt.faceStateOutput
là con trỏ đến XrFaceStateANDROID nhận trạng thái theo dõi khuôn mặt và biểu cảm khuôn mặt được trả về.
Cách 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 gọi xrGetFaceStateANDROID faceTracker
phải là một tay cầm XrFaceTrackerANDROID hợp lệgetInfo
phải là con trỏ đến cấu trúc XrFaceStateGetInfoANDROID hợp lệfaceStateOutput
phải là con trỏ trỏ đến cấu trúc XrFaceStateANDROID
Mã trả về
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
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
type
là XrStructureType của cấu trúc này.next
làNULL
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ộtXrTime
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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi sử dụng XrFaceStateGetInfoANDROID type
phải làXR_TYPE_FACE_STATE_GET_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
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
type
là XrStructureType của cấu trúc này.next
làNULL
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.parametersCapacityInput
làuint32_t
mô tả dung lượng của mảngparameters
hoặc 0 để cho biết yêu cầu truy xuất dung lượng bắt buộc.parametersCountOutput
là mộtuint32_t
mô tả số lượngparameters
hoặc dung lượng cần thiết trong trường hợpparametersCapacityInput
không đủ.parameters
là con trỏ đến một mảngfloat
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.faceTrackingState
làXrFaceTrackingStateANDROID
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 gianXrTime
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)
- Bạn phải bật tiện ích
XR_ANDROID_face_tracking
trước khi sử dụng XrFaceStateANDROID type
phải làXR_TYPE_FACE_STATE_ANDROID
next
phải làNULL
hoặc 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ì phải là con trỏ đến một mảng các giá trịparametersCapacityInput float
faceTrackingState
phải là một giá trị XrFaceTrackingStateANDROID hợp lệ
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ả |
|
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. |
|
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. |
|
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 | ||
1 | BROW_LOWERER_R | ||
2 | CHEEK_PUFF_L | ||
3 | CHEEK_PUFF_R | ||
4 | CHEEK_RAISER_L | ||
5 | CHEEK_RAISER_R | ||
6 | CHEEK_SUCK_L | ||
7 | CHEEK_SUCK_R | ||
8 | CHIN_RAISER_B | ||
9 | CHIN_RAISER_T | ||
10 | DIMPLER_L | ||
11 | DIMPLER_R | ||
12 | EYES_CLOSED_L | ||
13 | EYES_CLOSED_R | ||
14 | EYES_LOOK_DOWN_L | ||
15 | EYES_LOOK_DOWN_R | ||
16 | EYES_LOOK_LEFT_L | ||
17 | EYES_LOOK_LEFT_R | ||
18 | EYES_LOOK_RIGHT_L | ||
19 | EYES_LOOK_RIGHT_R | ||
20 | EYES_LOOK_UP_L | ||
21 | EYES_LOOK_UP_R | ||
22 | INNER_BROW_RAISER_L | ||
23 | INNER_BROW_RAISER_R | ||
24 | JAW_DROP | ||
25 | JAW_SIDEWAYS_LEFT | ||
26 | JAW_SIDEWAYS_RIGHT | ||
27 | JAW_THRUST | ||
28 | LID_TIGHTENER_L | ||
29 | LID_TIGHTENER_R | ||
30 | LIP_CORNER_DEPRESSOR_L | ||
31 | LIP_CORNER_DEPRESSOR_R | ||
32 | LIP_CORNER_PULLER_L | ||
33 | LIP_CORNER_PULLER_R | ||
34 | LIP_FUNNELER_LB | ||
35 | LIP_FUNNELER_LT | ||
36 | LIP_FUNNELER_RB | ||
37 | LIP_FUNNELER_RT | ||
38 | LIP_PRESSOR_L | ||
39 | LIP_PRESSOR_R | ||
40 | LIP_PUCKER_L | ||
41 | LIP_PUCKER_R | ||
42 | LIP_STRETCHER_L | ||
43 | LIP_STRETCHER_R | ||
44 | LIP_SUCK_LB | ||
45 | LIP_SUCK_LT | ||
46 | LIP_SUCK_RB | ||
47 | LIP_SUCK_RT | ||
48 | LIP_TIGHTENER_L | ||
49 | LIP_TIGHTENER_R | ||
50 | LIPS_TOWARD | ||
51 | LOWER_LIP_DEPRESSOR_L | ||
52 | LOWER_LIP_DEPRESSOR_R | ||
53 | MOUTH_LEFT | ||
54 | MOUTH_RIGHT | ||
55 | NOSE_WRINKLER_L | ||
56 | NOSE_WRINKLER_R | ||
57 | OUTER_BROW_RAISER_L | ||
58 | OUTER_BROW_RAISER_R | ||
59 | UPPER_LID_RAISER_L | ||
60 | UPPER_LID_RAISER_R | ||
61 | UPPER_LIP_RAISER_L | ||
62 | UPPER_LIP_RAISER_R |
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
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
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