رشته نام
XR_ANDROID_face_tracking
نوع افزونه
افزونه نمونه
شماره داخلی ثبت شده
۴۵۹
بازنگری
۳
وابستگیهای افزونه و نسخه
آخرین تاریخ اصلاح
۲۰۲۵-۰۶-۰۴
وضعیت آیپی
هیچ ادعای مالکیت معنوی شناختهشدهای وجود ندارد.
مشارکتکنندگان
اسپنسر کوئین، گوگل
جارد فایندر، گوگل
لوانا چن، گوگل
نمای کلی
این افزونه به برنامهها این امکان را میدهد که وزن اشکال ترکیبی را دریافت کرده و حالات چهره را در تجربیات XR رندر کنند.
این افزونه برای ارائه اطلاعات مورد نیاز برای ایجاد آواتارهای واقعگرایانه و نمایشهای گویا از کاربران در فضای مجازی در نظر گرفته شده است. این برنامه میتواند قبل از دریافت وزن اشکال ترکیبی، فعالسازی کالیبراسیون صورت را بررسی کند.
ردیاب چهره
ردیاب چهره، یک دستگاه حسگر است که حالت چهره را از طریق جریانهای تصویر روبروی کاربر و کالیبراسیون دوربین ردیابی میکند. هدف اصلی این افزونه، نگاشت حالات چهره کاربر به آواتارهای او در یک صحنه مجازی است.
دادههای ردیابی چهره، اطلاعات شخصی حساسی هستند و ارتباط نزدیکی با حریم خصوصی و یکپارچگی شخصی دارند. اکیداً توصیه میشود برنامههایی که دادههای ردیابی چهره را ذخیره یا منتقل میکنند، همیشه از کاربر اجازه فعال و خاص برای انجام این کار را بخواهند.
- برنامهها هنگام ایجاد یک ردیاب چهره فعال، تا زمانی که به برنامه اجازه دسترسی به ردیاب چهره داده نشود،
XR_ERROR_PERMISSION_INSUFFICIENTدریافت خواهند کرد. - هنگام دریافت حالت چهره با استفاده از xrGetFaceStateANDROID ، تابع XrFaceStateANDROID::isValid مقدار
XR_TRUEرا برنمیگرداند، مگر اینکه دسترسی به برنامه مجاز شده باشد.
بررسی قابلیت سیستم
ساختار XrSystemFaceTrackingPropertiesANDROID به صورت زیر تعریف شده است:
typedef struct XrSystemFaceTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsFaceTracking;
} XrSystemFaceTrackingPropertiesANDROID;
توضیحات اعضا
-
type، نوع XrStructureType این ساختار است. -
nextNULLیا اشارهگری به ساختار بعدی در یک زنجیره ساختار است. -
supportsFaceTrackingیک XrBool32 است که نشان میدهد آیا سیستم فعلی از ردیابی چهره پشتیبانی میکند یا خیر.
یک برنامه میتواند با بسط دادن XrSystemProperties با ساختار XrSystemFaceTrackingPropertiesANDROID هنگام فراخوانی xrGetSystemProperties ، بررسی کند که آیا سیستم قادر به ردیابی چهره است یا خیر.
اگر و فقط اگر یک زمان اجرا XR_FALSE برای supportsFaceTracking برگرداند، آن زمان اجرا باید XR_ERROR_FEATURE_UNSUPPORTED از xrCreateFaceTrackerANDROID برگرداند.
یک دسته ردیاب چهره ایجاد کنید
XR_DEFINE_HANDLE(XrFaceTrackerANDROID)
دسته XrFaceTrackerANDROID نشان دهنده یک ردیاب چهره برای ردیابی چهره است.
از این دسته میتوان برای دسترسی به دادههای ردیابی چهره با استفاده از سایر توابع این افزونه استفاده کرد.
تابع xrCreateFaceTrackerANDROID به صورت زیر تعریف شده است:
XrResult xrCreateFaceTrackerANDROID(
XrSession session,
const XrFaceTrackerCreateInfoANDROID* createInfo,
XrFaceTrackerANDROID* faceTracker);
توضیحات پارامتر
-
sessionیک دسته XrSession است که در آن ردیاب چهره فعال خواهد بود. -
createInfoهمان XrFaceTrackerCreateInfoANDROID است که برای مشخص کردن ردیاب چهره استفاده میشود. -
faceTrackerشناسه XrFaceTrackerANDROID برگردانده شده است.
یک برنامه میتواند با استفاده از تابع xrCreateFaceTrackerANDROID یک شناسه XrFaceTrackerANDROID ایجاد کند.
اگر سیستم از ردیابی چهره پشتیبانی نکند، 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 است که قبلاً توسط xrCreateFaceTrackerANDROID ساخته شده است. -
faceIsCalibratedOutputنشان میدهد که آیا ردیاب چهره کالیبره شده است یا خیر.
یک برنامه میتواند وضعیت کالیبراسیون چهره را با استفاده از تابع xrGetFaceCalibrationStateANDROID بررسی کند.
وقتی سرویس ردیابی هنوز در حال مقداردهی اولیه است، ممکن است زمان اجرا XR_ERROR_SERVICE_NOT_READY_ANDROID از 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 -
XR_ERROR_SERVICE_NOT_READY_ANDROID
حالتهای چهره را دریافت کنید
تابع xrGetFaceStateANDROID اشکال ترکیبی از حالات چهره را در یک زمان معین برمیگرداند.
XrResult xrGetFaceStateANDROID(
XrFaceTrackerANDROID faceTracker,
const XrFaceStateGetInfoANDROID* getInfo,
XrFaceStateANDROID* faceStateOutput);
توضیحات پارامتر
-
faceTrackerیک XrFaceTrackerANDROID است که قبلاً توسط xrCreateFaceTrackerANDROID ساخته شده است. -
getInfoیک اشارهگر به 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;
uint32_t regionConfidencesCapacityInput;
uint32_t regionConfidencesCountOutput;
float* regionConfidences;
} XrFaceStateANDROID;
توضیحات اعضا
-
type، نوع XrStructureType این ساختار است. -
nextباNULLیا اشارهگری به ساختار بعدی در یک زنجیره ساختار است. چنین ساختارهایی در هسته OpenXR یا این افزونه تعریف نشدهاند. -
parametersCapacityInputیکuint32_tاست که ظرفیت آرایهparametersرا توصیف میکند، یا 0 برای نشان دادن درخواستی برای بازیابی ظرفیت مورد نیاز است. -
parametersCountOutputیکuint32_tاست که تعدادparametersیا ظرفیت مورد نیاز را در صورتی کهparametersCapacityInputکافی نباشد، توصیف میکند. -
parametersیک اشارهگر به آرایهای ازfloatاست که توسط برنامه اختصاص داده شده و با وزنهای اشکال ترکیبی حالت چهره پر خواهد شد. -
faceTrackingState، وضعیت اعتبارسنجیXrFaceTrackingStateANDROIDبرای ردیابی چهره است. -
sampleTimeیک زمانXrTimeاست که در آن عبارات برگشتی ردیابی یا برونیابی میشوند. این زمان برابر با زمانی است که وزنهای عبارات درخواست شدهاند، اگر برونیابی در آن زمان موفقیتآمیز باشد. -
isValidنشان میدهد که آیا دادهها معتبر هستند یا خیر، حتی اگر از فریم فعلی نباشند. -
regionConfidencesCapacityInputیکuint32_tاست که ظرفیت آرایهregionConfidencesرا توصیف میکند، یا 0 برای نشان دادن درخواست بازیابی ظرفیت مورد نیاز است. -
regionConfidencesCountOutputیکuint32_tاست که تعدادregionConfidencesیا ظرفیت مورد نیاز را در صورتی کهregionConfidencesCapacityInputکافی نباشد، توصیف میکند. -
regionConfidencesیک اشارهگر به آرایهای ازfloatاست که توسط برنامه اختصاص داده شده و با مقادیر اطمینان برای هر ناحیه صورت پر خواهد شد. - برای توضیحات مفصل در مورد بازیابی
parametersمورد نیاز و اندازهregionConfidences، به بخش پارامترهای اندازه بافر مراجعه کنید.
برنامه میتواند parametersCapacityInput روی XR_FACE_PARAMETER_COUNT_ANDROID تنظیم کند تا حالتهای چهرهای را که توسط XrFaceParameterIndicesANDROID اندیسگذاری شدهاند، دریافت کند.
parameters برگشتی، وزن اشکال ترکیبی از حالات چهره فعلی را نشان میدهند.
بهروزرسانیهای آرایه parameters به ترتیب انجام میشوند تا برنامه بتواند عناصر را با استفاده از enum مربوط به حالت چهره (مثلاً XrFaceParameterIndicesANDROID ) فهرستبندی کند.
کاربرد معتبر (ضمنی)
- افزونهی
XR_ANDROID_face_trackingباید قبل از استفاده از XrFaceStateANDROID فعال باشد. -
typeبایدXR_TYPE_FACE_STATE_ANDROIDباشد. - متغیر
nextبایدNULLیا یک اشارهگر معتبر به ساختار بعدی در یک زنجیره ساختار باشد. - اگر
parametersCapacityInputبرابر0, parametersباید اشارهگری به آرایهای از مقادیرparametersCapacityInput floatباشند. - اگر
regionConfidencesCapacityInputبرابر0, regionConfidencesباید یک اشارهگر به آرایهای از مقادیرregionConfidencesCapacityInput floatباشد. -
faceTrackingStateباید یک مقدار معتبر XrFaceTrackingStateANDROID باشد.
شمارش XrFaceTrackingStateANDROID حالتهای مختلف ردیاب چهره را مشخص میکند.
typedef enum XrFaceTrackingStateANDROID {
XR_FACE_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_FACE_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_FACE_TRACKING_STATE_TRACKING_ANDROID = 2
} XrFaceTrackingStateANDROID;
enum ها معانی زیر را دارند:
شمارشی | توضیحات |
| نشان میدهد که ردیابی چهره متوقف شده است اما ممکن است در آینده از سر گرفته شود. |
| ردیابی متوقف شده است اما کلاینت هنوز ردیاب چهره فعال دارد. |
| چهره ردیابی شده و حالت آن به روز است. |
مناطق اطمینان
افزونهی XR_ANDROID_face_tracking همچنین مقادیر اطمینان را برای سه ناحیهی صورت ارائه میدهد: چشم چپ، چشم راست و قسمت پایینی صورت. این مقادیر، که از ۰ (بدون اطمینان) تا ۱ (بالاترین اطمینان) متغیر هستند، دقت ردیابی چهره را برای هر ناحیه نشان میدهند.
شما میتوانید از این مقادیر اطمینان برای غیرفعال کردن تدریجی blendshapes یا اعمال فیلترهای بصری (مانند محو کردن) به ناحیه چهره مربوطه استفاده کنید. برای یک کنترل روشن/خاموش اولیه، توصیه میکنیم از آستانه ۰.۳ برای غیرفعال کردن کامل blendshapes در ناحیه چهره مربوطه استفاده کنید.
ناحیه «پایین صورت» نمایانگر همه چیز زیر چشمها، از جمله دهان، چانه، گونه و بینی است. ناحیه چشم شامل چشمها و ناحیه ابرو میشود.
جدول زیر شکلهای ترکیبی مرتبط با هر ناحیه اطمینان را شرح میدهد:
| منطقه اطمینان | شکلهای ترکیبی |
|---|---|
| صورت تحتانی | `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID`، `XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID`، `XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID`، `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID`، `XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID`، `XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID`، `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID`، `XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID`، `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID`، `XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID`، `XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID`، `XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID`، `XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID`، `XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID` |
| صورت چپ/راست بالایی | `XR_FACE_PARAMETER_INDICES_BROW_LOWER_L_ANDROID`، `XR_FACE_PARAMETER_INDICES_BROW_LOWER_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_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` |
قراردادهای شکلهای ترکیبی
این افزونه ۶۸ شکل ترکیبی را از طریق XR_FACE_PARAMETER_COUNT_ANDROID برای فرمت کاهشیافته G-Nome تعریف میکند. هر پارامتر در این enum یک اندیس به یک آرایه شکل ترکیبی است که مقادیر آن از نوع float هستند و زمان اجرا به ۱ تا ۰ نرمالسازی میشود.
typedef enum XrFaceParameterIndicesANDROID {
XR_FACE_PARAMETER_INDICES_BROW_LOWERER_L_ANDROID = 0,
XR_FACE_PARAMETER_INDICES_BROW_LOWERER_R_ANDROID = 1,
XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_L_ANDROID = 2,
XR_FACE_PARAMETER_INDICES_CHEEK_PUFF_R_ANDROID = 3,
XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_L_ANDROID = 4,
XR_FACE_PARAMETER_INDICES_CHEEK_RAISER_R_ANDROID = 5,
XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_L_ANDROID = 6,
XR_FACE_PARAMETER_INDICES_CHEEK_SUCK_R_ANDROID = 7,
XR_FACE_PARAMETER_INDICES_CHIN_RAISER_B_ANDROID = 8,
XR_FACE_PARAMETER_INDICES_CHIN_RAISER_T_ANDROID = 9,
XR_FACE_PARAMETER_INDICES_DIMPLER_L_ANDROID = 10,
XR_FACE_PARAMETER_INDICES_DIMPLER_R_ANDROID = 11,
XR_FACE_PARAMETER_INDICES_EYES_CLOSED_L_ANDROID = 12,
XR_FACE_PARAMETER_INDICES_EYES_CLOSED_R_ANDROID = 13,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_L_ANDROID = 14,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_DOWN_R_ANDROID = 15,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_L_ANDROID = 16,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_LEFT_R_ANDROID = 17,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_L_ANDROID = 18,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_RIGHT_R_ANDROID = 19,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_L_ANDROID = 20,
XR_FACE_PARAMETER_INDICES_EYES_LOOK_UP_R_ANDROID = 21,
XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_L_ANDROID = 22,
XR_FACE_PARAMETER_INDICES_INNER_BROW_RAISER_R_ANDROID = 23,
XR_FACE_PARAMETER_INDICES_JAW_DROP_ANDROID = 24,
XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_LEFT_ANDROID = 25,
XR_FACE_PARAMETER_INDICES_JAW_SIDEWAYS_RIGHT_ANDROID = 26,
XR_FACE_PARAMETER_INDICES_JAW_THRUST_ANDROID = 27,
XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_L_ANDROID = 28,
XR_FACE_PARAMETER_INDICES_LID_TIGHTENER_R_ANDROID = 29,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_L_ANDROID = 30,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_DEPRESSOR_R_ANDROID = 31,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_L_ANDROID = 32,
XR_FACE_PARAMETER_INDICES_LIP_CORNER_PULLER_R_ANDROID = 33,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LB_ANDROID = 34,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_LT_ANDROID = 35,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RB_ANDROID = 36,
XR_FACE_PARAMETER_INDICES_LIP_FUNNELER_RT_ANDROID = 37,
XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_L_ANDROID = 38,
XR_FACE_PARAMETER_INDICES_LIP_PRESSOR_R_ANDROID = 39,
XR_FACE_PARAMETER_INDICES_LIP_PUCKER_L_ANDROID = 40,
XR_FACE_PARAMETER_INDICES_LIP_PUCKER_R_ANDROID = 41,
XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_L_ANDROID = 42,
XR_FACE_PARAMETER_INDICES_LIP_STRETCHER_R_ANDROID = 43,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_LB_ANDROID = 44,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_LT_ANDROID = 45,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_RB_ANDROID = 46,
XR_FACE_PARAMETER_INDICES_LIP_SUCK_RT_ANDROID = 47,
XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_L_ANDROID = 48,
XR_FACE_PARAMETER_INDICES_LIP_TIGHTENER_R_ANDROID = 49,
XR_FACE_PARAMETER_INDICES_LIPS_TOWARD_ANDROID = 50,
XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_L_ANDROID = 51,
XR_FACE_PARAMETER_INDICES_LOWER_LIP_DEPRESSOR_R_ANDROID = 52,
XR_FACE_PARAMETER_INDICES_MOUTH_LEFT_ANDROID = 53,
XR_FACE_PARAMETER_INDICES_MOUTH_RIGHT_ANDROID = 54,
XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_L_ANDROID = 55,
XR_FACE_PARAMETER_INDICES_NOSE_WRINKLER_R_ANDROID = 56,
XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_L_ANDROID = 57,
XR_FACE_PARAMETER_INDICES_OUTER_BROW_RAISER_R_ANDROID = 58,
XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_L_ANDROID = 59,
XR_FACE_PARAMETER_INDICES_UPPER_LID_RAISER_R_ANDROID = 60,
XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_L_ANDROID = 61,
XR_FACE_PARAMETER_INDICES_UPPER_LIP_RAISER_R_ANDROID = 62,
XR_FACE_PARAMETER_INDICES_TONGUE_OUT_ANDROID = 63,
XR_FACE_PARAMETER_INDICES_TONGUE_LEFT_ANDROID = 64,
XR_FACE_PARAMETER_INDICES_TONGUE_RIGHT_ANDROID = 65,
XR_FACE_PARAMETER_INDICES_TONGUE_UP_ANDROID = 66,
XR_FACE_PARAMETER_INDICES_TONGUE_DOWN_ANDROID = 67
} XrFaceParameterIndicesANDROID;
| فهرست | نام | تصویر مرجع | |
|---|---|---|---|
| 0 | ابروی پایین تر | ![]() | ![]() |
| ۱ | BROW_LOWERER_R | ![]() | ![]() |
| ۲ | گونه_پوف_L | ![]() | ![]() |
| ۳ | گونه_پاف_R | ![]() | ![]() |
| ۴ | گونه_خیز_کننده_L | ![]() | ![]() |
| ۵ | گونه_خیز_کننده_R | ![]() | ![]() |
| ۶ | گونه_مکش_ل | ![]() | ![]() |
| ۷ | گونه_مکیدن_R | ![]() | ![]() |
| ۸ | چانهزن_B | ![]() | ![]() |
| ۹ | چانه_بالابر_T | ![]() | ![]() |
| ۱۰ | دیمپلر_ل | ![]() | ![]() |
| ۱۱ | دیمپلر_آر | ![]() | ![]() |
| ۱۲ | چشمان_بسته | ![]() | ![]() |
| ۱۳ | چشمان_بسته | ![]() | ![]() |
| ۱۴ | چشمها_نگاه_به_پایین_چپ | ![]() | ![]() |
| ۱۵ | چشمها_نگاه_به_پایین | ![]() | ![]() |
| ۱۶ | نگاه_چپ_چشم | ![]() | ![]() |
| ۱۷ | نگاه_چپ_چشم | ![]() | ![]() |
| ۱۸ | نگاه_راست_چشم | ![]() | ![]() |
| ۱۹ | نگاه_راست_چشم | ![]() | ![]() |
| ۲۰ | نگاه_به_چشم | ![]() | ![]() |
| ۲۱ | نگاه_به_چشم | ![]() | ![]() |
| ۲۲ | ابروهای_دراز_کننده | ![]() | ![]() |
| ۲۳ | ابروهای_دراز_کننده_درون | ![]() | ![]() |
| ۲۴ | فک پایین | ![]() | ![]() |
| ۲۵ | فک پایین سمت چپ | ![]() | ![]() |
| ۲۶ | فک پایین | ![]() | ![]() |
| ۲۷ | فک_رانش | ![]() | ![]() |
| ۲۸ | سفت کننده درب | ![]() | ![]() |
| ۲۹ | سفت کننده درب | ![]() | ![]() |
| ۳۰ | گوشه لب_فشارنده_L | ![]() | ![]() |
| ۳۱ | گوشه لب_فشارنده_R | ![]() | ![]() |
| ۳۲ | گوشه لب | ![]() | ![]() |
| ۳۳ | گوشه لب | ![]() | ![]() |
| ۳۴ | لب_خندان_LB | ![]() | ![]() |
| ۳۵ | LIP_FUNNELER_LT | ![]() | ![]() |
| ۳۶ | LIP_FUNNELER_RB | ![]() | ![]() |
| ۳۷ | LIP_FUNNELER_RT | ![]() | ![]() |
| ۳۸ | فشار دهنده لب | ![]() | ![]() |
| ۳۹ | فشار دهنده لب | ![]() | ![]() |
| ۴۰ | لب_غنچه_کردن | ![]() | ![]() |
| ۴۱ | لب_غنچه_کردن | ![]() | ![]() |
| ۴۲ | کشش لب | ![]() | ![]() |
| ۴۳ | کشش لب | ![]() | ![]() |
| ۴۴ | لب_مکیدن_لب | ![]() | ![]() |
| ۴۵ | لب_مکیدن_LT | ![]() | ![]() |
| ۴۶ | لب_مکیدن_RB | ![]() | ![]() |
| ۴۷ | لب_مکیدن_RT | ![]() | ![]() |
| ۴۸ | سفت کننده لب | ![]() | ![]() |
| ۴۹ | سفت کننده لب | ![]() | ![]() |
| ۵۰ | به سوی لبها | ![]() | ![]() |
| ۵۱ | پایین آورنده لب پایین | ![]() | ![]() |
| ۵۲ | پایین آورنده لب پایین | ![]() | ![]() |
| ۵۳ | دهان_چپ | ![]() | ![]() |
| ۵۴ | دهان_راست | ![]() | ![]() |
| ۵۵ | چروک_بینی_L | ![]() | ![]() |
| ۵۶ | چروک_بینی | ![]() | ![]() |
| ۵۷ | بیرون آوردن ابرو | ![]() | ![]() |
| ۵۸ | بیرون آوردن ابرو | ![]() | ![]() |
| ۵۹ | درب بالایی | ![]() | ![]() |
| ۶۰ | درب بالایی | ![]() | ![]() |
| ۶۱ | لب بالا بلند کردن | ![]() | ![]() |
| ۶۲ | لب بالا بلند کننده | ![]() | ![]() |
| ۶۳ | زبان_خارج | ![]() | ![]() |
| ۶۴ | زبان_چپ | ![]() | ![]() |
| ۶۵ | زبان_راست | ![]() | ![]() |
| ۶۶ | زبان_بالا | ![]() | ![]() |
| ۶۷ | زبان_پایین | ![]() | ![]() |
نمونه کد برای ردیابی چهره
کد نمونه زیر نحوه دریافت همه وزنها برای اشکال ترکیبی حالت چهره را نشان میدهد.
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));
انواع شیء جدید
ثابتهای شمارشی جدید
-
XR_FACE_PARAMETER_COUNT_ANDROID
شمارش XrObjectType با موارد زیر گسترش یافته است:
-
XR_OBJECT_TYPE_FACE_TRACKER_ANDROID
شمارش XrStructureType با موارد زیر گسترش یافته است:
-
XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID -
XR_TYPE_FACE_STATE_GET_INFO_ANDROID -
XR_TYPE_FACE_STATE_ANDROID -
XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_ANDROID
Enum های جدید
سازههای جدید
- XrFaceTrackerاطلاعات ایجاد کنیداندروید
- XrFaceStateGetInfoاندروید
- XrFaceStateANDROID
- ویژگیهای ردیابی چهره XrSystemANDROID
توابع جدید
- xrCreateFaceTrackerANDROID
- ردیاب چهره نابودگر xr اندروید
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 05/09/2024 (لوانا چن)
- توضیحات اولیه افزونه
- نسخه ۲، ۲۰۲۵-۰۴-۰۱ (کنی ورکامر)
- مناطق اعتماد به نفس چهره اضافه شد
- بازبینی 3، 04/06/2025 (لوانا چن)
- کد خطای جدید اضافه شد.
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به گروه Khronos هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شدهاند.





































































