สตริงชื่อ
XR_ANDROID_face_tracking
ประเภทชิ้นงาน
การขยายเวลาอินสแตนซ์
หมายเลขต่อที่จดทะเบียน
459
การแก้ไข
1
การพึ่งพาส่วนขยายและเวอร์ชัน
วันที่แก้ไขล่าสุด
2024-09-06
สถานะ IP
ไม่มีการอ้างสิทธิ์ IP ที่รู้จัก
ผู้เขียน
Spencer Quin จาก Google
Jared Finder จาก Google
Levana Chen จาก Google
ภาพรวม
ส่วนขยายนี้ช่วยให้แอปพลิเคชันรับน้ำหนักของรูปร่างการผสมและแสดงผลการแสดงออกทางสีหน้าในประสบการณ์ XR ได้
ส่วนขยายนี้มีไว้เพื่อให้ข้อมูลที่จำเป็นในการสร้างรูปโปรไฟล์ที่สมจริงและการแสดงออกของผู้ใช้ในพื้นที่เสมือนจริง แอปพลิเคชันสามารถตรวจสอบการเปิดใช้งานการปรับเทียบใบหน้าก่อนที่จะรับน้ำหนักของรูปร่างการผสม
เครื่องมือติดตามใบหน้า
เครื่องมือติดตามใบหน้าเป็นอุปกรณ์ตรวจจับที่ติดตามการแสดงออกทางสีหน้าผ่านสตรีมรูปภาพที่แสดงต่อผู้ใช้และการสอบเทียบกล้อง วัตถุประสงค์หลักของส่วนขยายนี้คือจับคู่การแสดงออกทางสีหน้าของผู้ใช้กับรูปโปรไฟล์ในฉากเสมือน
ข้อมูลการติดตามใบหน้าเป็นข้อมูลส่วนบุคคลที่ละเอียดอ่อนและเชื่อมโยงกับความเป็นส่วนตัวและความเป็นธรรมส่วนบุคคลอย่างใกล้ชิด เราขอแนะนำอย่างยิ่งว่าแอปพลิเคชันที่จัดเก็บหรือโอนข้อมูลการติดตามใบหน้าควรขอความยินยอมจากผู้ใช้อย่างชัดเจนและเฉพาะเจาะจงเสมอ
- แอปพลิเคชันจะได้รับ
XR_ERROR_PERMISSION_INSUFFICIENT
เมื่อสร้างอุปกรณ์ติดตามใบหน้าที่ทำงานอยู่จนกว่าแอปพลิเคชันจะได้รับอนุญาตให้เข้าถึงอุปกรณ์ติดตามใบหน้า - เมื่อรับสถานะใบหน้าโดยใช้ xrGetFaceStateANDROID XrFaceStateANDROID::isValid จะไม่แสดงผล
XR_TRUE
เว้นแต่จะมีการอนุญาตให้แอปพลิเคชันเข้าถึง
สร้างแฮนเดิลเครื่องมือติดตามใบหน้า
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_ANDROID_face_tracking
ก่อนเรียกใช้ xrCreateFaceTrackerANDROID session
ต้องเป็นแฮนเดิล XrSession ที่ถูกต้องcreateInfo
ต้องเป็นพอยน์เตอร์ไปยังโครงสร้าง XrFaceTrackerCreateInfoANDROID ที่ถูกต้องfaceTracker
ต้องเป็นพอยน์เตอร์ไปยังแฮนเดิล XrFaceTrackerANDROID
รหัสการคืนสินค้า
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
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนใช้ XrFaceTrackerCreateInfoANDROID type
ต้องเป็นXR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
next
ต้องเป็นNULL
หรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง
ฟังก์ชัน xrDestroyFaceTrackerANDROID มีคำจำกัดความดังนี้
XrResult xrDestroyFaceTrackerANDROID(
XrFaceTrackerANDROID faceTracker);
คําอธิบายพารามิเตอร์
faceTracker
คือ XrFaceTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateFaceTrackerANDROID
ฟังก์ชัน xrDestroyFaceTrackerANDROID จะปล่อย faceTracker
และทรัพยากรที่เกี่ยวข้องเมื่อประสบการณ์การติดตามใบหน้าสิ้นสุดลง
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนเรียกใช้ xrDestroyFaceTrackerANDROID faceTracker
ต้องเป็นแฮนเดิล XrFaceTrackerANDROID ที่ถูกต้อง
ความปลอดภัยของชุดข้อความ
- การเข้าถึง
faceTracker
และตัวแฮนเดิลย่อยต้องได้รับการซิงค์จากภายนอก
รหัสการคืนสินค้า
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
ตรวจสอบการปรับเทียบใบหน้า
ฟังก์ชัน xrGetFaceCalibrationStateANDROID
ได้รับการกําหนดดังนี้
XrResult xrGetFaceCalibrationStateANDROID(
XrFaceTrackerANDROID faceTracker,
XrBool32* faceIsCalibratedOutput);
คําอธิบายพารามิเตอร์
faceTracker
คือ XrFaceTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateFaceTrackerANDROIDfaceIsCalibratedOutput
ระบุว่ามีการปรับเทียบอุปกรณ์ติดตามใบหน้าหรือไม่
แอปพลิเคชันสามารถตรวจสอบสถานะการสอบเทียบใบหน้าได้โดยใช้ฟังก์ชัน xrGetFaceCalibrationStateANDROID
หากระบบไม่รองรับการปรับเทียบใบหน้า xrGetFaceCalibrationStateANDROID จะแสดงผลเป็นXR_ERROR_FEATURE_UNSUPPORTED
มิเช่นนั้น ระบบอาจตั้งค่า faceIsCalibratedOutput
เป็น XR_TRUE
เพื่อแสดงสถานะการปรับเทียบใบหน้า
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนเรียกใช้ xrGetFaceCalibrationStateANDROID faceTracker
ต้องเป็นแฮนเดิล XrFaceTrackerANDROID ที่ถูกต้องfaceIsCalibratedOutput
ต้องเป็นพอยน์เตอร์ไปยังค่าXrBool32
รหัสการคืนสินค้า
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
จับการแสดงความรู้สึกทางสีหน้า
ฟังก์ชัน xrGetFaceStateANDROID จะแสดงผลรูปร่างที่ผสมผสานของการแสดงออกทางใบหน้า ณ เวลาหนึ่งๆ
XrResult xrGetFaceStateANDROID(
XrFaceTrackerANDROID faceTracker,
const XrFaceStateGetInfoANDROID* getInfo,
XrFaceStateANDROID* faceStateOutput);
คําอธิบายพารามิเตอร์
faceTracker
คือ XrFaceTrackerANDROID ที่สร้างขึ้นก่อนหน้านี้โดย xrCreateFaceTrackerANDROIDgetInfo
คือพอยน์เตอร์ไปยัง XrFaceStateGetInfoANDROID ที่อธิบายข้อมูลเพื่อรับการแสดงสีหน้าfaceStateOutput
เป็นพอยน์เตอร์ไปยัง XrFaceStateANDROID ที่ได้รับสถานะการติดตามใบหน้าและการแสดงออกทางใบหน้าที่แสดงผล
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนเรียกใช้ xrGetFaceStateANDROID faceTracker
ต้องเป็นแฮนเดิล XrFaceTrackerANDROID ที่ถูกต้อง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
ที่ขอการแสดงสีหน้า
แอปพลิเคชันควรขอเวลาเท่ากับเวลาที่คาดการณ์ไว้สำหรับการแสดงเฟรมที่ผ่านการจัดการแสดงผล
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนใช้ XrFaceStateGetInfoANDROID type
ต้องเป็นXR_TYPE_FACE_STATE_GET_INFO_ANDROID
next
ต้องเป็นNULL
หรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง
โครงสร้าง XrFaceStateANDROID จะแสดงสถานะการติดตามใบหน้าและการแสดงออกทางใบหน้า
typedef struct XrFaceStateANDROID {
XrStructureType type;
void* next;
uint32_t parametersCapacityInput;
uint32_t parametersCountOutput;
float* parameters;
XrFaceTrackingStateANDROID faceTrackingState;
XrTime sampleTime;
XrBool32 isValid;
} XrFaceStateANDROID;
คำอธิบายสมาชิก
type
คือ XrStructureType ของโครงสร้างนี้next
คือNULL
หรือพอยน์เตอร์ไปยังโครงสร้างถัดไปในเชนโครงสร้าง ไม่มีการกำหนดโครงสร้างดังกล่าวใน OpenXR หลักหรือส่วนขยายนี้parametersCapacityInput
คือuint32_t
ที่อธิบายความจุของอาร์เรย์parameters
หรือ 0 เพื่อระบุคําขอดึงข้อมูลความจุที่จําเป็นparametersCountOutput
คือuint32_t
ที่อธิบายจำนวนparameters
หรือความจุที่จําเป็นในกรณีที่parametersCapacityInput
ไม่เพียงพอparameters
เป็นพอยน์เตอร์ไปยังอาร์เรย์float
ที่แอปพลิเคชันจัดสรร ซึ่งจะเต็มไปด้วยน้ำหนักของรูปร่างการผสมผสานการแสดงออกทางสีหน้าfaceTrackingState
คือXrFaceTrackingStateANDROID
ของสถานะความถูกต้องของการติดตามใบหน้าsampleTime
คือเวลาXrTime
ที่ระบบจะติดตามหรือคาดการณ์นิพจน์ที่แสดงผล ซึ่งเท่ากับเวลาที่ขอน้ำหนักนิพจน์หากการประมาณในเวลานั้นสําเร็จisValid
ระบุว่าข้อมูลถูกต้องหรือไม่ แม้ว่าจะไม่มาจากกรอบเวลาปัจจุบัน- ดูรายละเอียดเกี่ยวกับการดึงข้อมูล
parameters
ขนาดที่ต้องการได้ที่ส่วนพารามิเตอร์ขนาดบัฟเฟอร์
แอปพลิเคชันสามารถตั้งค่า parametersCapacityInput
เป็น XR_FACE_PARAMETER_COUNT_ANDROID
เพื่อรับการแสดงออกทางสีหน้าที่จัดทําดัชนีโดย XrFaceParameterIndicesANDROID
parameters
ที่แสดงผลคือน้ำหนักของรูปร่างการผสมผสานของการแสดงออกทางสีหน้าปัจจุบัน
การอัปเดตอาร์เรย์ parameters
จะจัดเรียงเพื่อให้แอปพลิเคชันสามารถจัดทำดัชนีองค์ประกอบโดยใช้นิพจน์ใบหน้าที่เกี่ยวข้อง (เช่น XrFaceParameterIndicesANDROID)
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_face_tracking
ก่อนใช้ XrFaceStateANDROID type
ต้องเป็นXR_TYPE_FACE_STATE_ANDROID
next
ต้องเป็นNULL
หรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง- หาก
parametersCapacityInput
ไม่ใช่0, parameters
ต้องเป็นพอยน์เตอร์ไปยังอาร์เรย์ของค่าparametersCapacityInput 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 |
คำอธิบาย |
|
บ่งบอกว่าการติดตามใบหน้าหยุดชั่วคราว แต่อาจกลับมาทำงานต่อได้ในอนาคต |
|
การติดตามหยุดลงแล้ว แต่ลูกค้ายังมีอุปกรณ์ติดตามใบหน้าที่ทำงานอยู่ |
|
ใบหน้าได้รับการติดตามและท่าทางเป็นปัจจุบัน |
รูปแบบของรูปร่างการผสม
ส่วนขยายนี้กําหนดรูปร่างการผสม 63 รายการผ่าน
XR_FACE_PARAMETER_COUNT_ANDROID
สําหรับรูปแบบ G-Nome แบบลดขนาด พารามิเตอร์แต่ละรายการในนิพจน์นี้จะเป็นดัชนีในอาร์เรย์รูปร่างผสมซึ่งมีค่าเป็นประเภท 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
} XrFaceParameterIndicesANDROID;
ดัชนี | ชื่อ | รูปภาพอ้างอิง | |
---|---|---|---|
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 |
ตัวอย่างโค้ดสําหรับการติดตามใบหน้า
โค้ดตัวอย่างต่อไปนี้แสดงวิธีรับน้ำหนักทั้งหมดสำหรับรูปร่างการผสมผสานการแสดงออกทางสีหน้า
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));
ประเภทออบเจ็กต์ใหม่
ค่าคงที่ 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
Enum ใหม่
โครงสร้างใหม่
ฟังก์ชันใหม่
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
ปัญหา
ประวัติเวอร์ชัน
- การแก้ไข 1, 05-09-2024 (Levana Chen)
- คำอธิบายส่วนขยายเริ่มต้น