برنامه افزودنی OpenXR XR_ANDROID_face_tracking

رشته نام

XR_ANDROID_face_tracking

نوع پسوند

پسوند نمونه

شماره برنامه افزودنی ثبت شده

459

تجدید نظر

1

وابستگی های افزونه و نسخه

OpenXR 1.0

آخرین تاریخ اصلاح

06-09-2024

وضعیت IP

هیچ ادعای IP شناخته شده ای وجود ندارد.

مشارکت کنندگان

اسپنسر کوین، گوگل

جارد فایندر، گوگل

لوانا چن، گوگل

نمای کلی

این افزونه برنامه‌ها را قادر می‌سازد تا وزن‌هایی از شکل‌های ترکیبی را دریافت کنند و حالات چهره را در تجربیات 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);

توضیحات پارامترها

یک برنامه می تواند با استفاده از تابع xrCreateFaceTrackerANDROID یک دسته XrFaceTrackerANDROID ایجاد کند.

اگر سیستم از ردیابی چهره پشتیبانی نمی‌کند، xrCreateFaceTrackerANDROID XR_ERROR_FEATURE_UNSUPPORTED برمی‌گرداند.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • 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 توصیف می کند.

استفاده معتبر (ضمنی)

تابع xrDestroyFaceTrackerANDROID به صورت زیر تعریف می شود:

XrResult xrDestroyFaceTrackerANDROID(
    XrFaceTrackerANDROID                        faceTracker);

توضیحات پارامترها

تابع xrDestroyFaceTrackerANDROID پس از پایان تجربه ردیابی چهره faceTracker و منابع زیرین را آزاد می کند.

استفاده معتبر (ضمنی)

ایمنی نخ

  • دسترسی به faceTracker و هر دسته کودک باید به صورت خارجی همگام شود

کدهای بازگشت

موفقیت

  • XR_SUCCESS

شکست

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

کالیبراسیون چهره را بررسی کنید

تابع xrGetFaceCalibrationStateANDROID به صورت زیر تعریف می شود:

XrResult xrGetFaceCalibrationStateANDROID(
    XrFaceTrackerANDROID                        faceTracker,
    XrBool32*                                   faceIsCalibratedOutput);

توضیحات پارامترها

  • faceTracker یک XrFaceTrackerANDROID است که قبلا توسط xrCreateFaceTrackerANDROID ایجاد شده است.
  • faceIsCalibratedOutput نشان می دهد که آیا ردیاب چهره کالیبره شده است یا خیر.

یک برنامه می تواند وضعیت کالیبراسیون چهره را با استفاده از عملکرد xrGetFaceCalibrationStateANDROID بررسی کند.

اگر سیستم از کالیبراسیون چهره پشتیبانی نمی‌کند، xrGetFaceCalibrationStateANDROID XR_ERROR_FEATURE_UNSUPPORTED برمی‌گرداند. در غیر این صورت، faceIsCalibratedOutput ممکن است روی XR_TRUE تنظیم شود تا وضعیت کالیبراسیون چهره را منعکس کند.

استفاده معتبر (ضمنی)

کدهای بازگشت

موفقیت

  • 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 است که قبلا توسط xrCreateFaceTrackerANDROID ایجاد شده است.
  • 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 است که در آن حالات چهره درخواست می شود.

برنامه ها باید زمانی برابر با زمان نمایش پیش بینی شده برای فریم رندر شده درخواست کنند.

استفاده معتبر (ضمنی)

ساختار 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 به‌گونه‌ای مرتب می‌شوند که برنامه بتواند عناصر را با استفاده از enum بیان چهره مربوطه فهرست‌بندی کند (مانند XrFaceParameterIndicesANDROID ).

استفاده معتبر (ضمنی)

شمارش 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 ها معانی زیر را دارند:

Enum

توضیحات

XR_FACE_TRACKING_STATE_PAUSED_ANDROID

نشان می دهد که ردیابی چهره متوقف شده است اما ممکن است در آینده از سر گرفته شود.

XR_FACE_TRACKING_STATE_STOPPED_ANDROID

ردیابی متوقف شده است اما مشتری هنوز یک ردیاب چهره فعال دارد.

XR_FACE_TRACKING_STATE_TRACKING_ANDROID

صورت ردیابی می شود و حالت آن جاری است.

کنوانسیون اشکال ترکیبی

این برنامه افزودنی 63 شکل ترکیبی را از طریق XR_FACE_PARAMETER_COUNT_ANDROID برای قالب G-Nome کاهش یافته تعریف می کند. هر پارامتر در این enum یک شاخص در یک آرایه شکل ترکیبی است که مقادیر آن از نوع 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
تصویر مرجع چهره خنثی
BROW_LOWERER_L = 0.0
تصویر مرجع ردیابی چهره
BROW_LOWERER_L = 1.0
1 BROW_LOWERER_R
تصویر مرجع چهره خنثی
BROW_LOWERER_R = 0.0
تصویر مرجع ردیابی چهره
BROW_LOWERER_R = 1.0
2 CHEEK_PUFF_L
تصویر مرجع چهره خنثی
CHEEK_PUFF_L = 0.0
تصویر مرجع ردیابی چهره
CHEEK_PUFF_L = 1.0
3 CHEEK_PUFF_R
تصویر مرجع چهره خنثی
CHEEK_PUFF_R = 0.0
تصویر مرجع ردیابی چهره
CHEEK_PUFF_R = 1.0
4 CHEEK_RAISER_L
تصویر مرجع چهره خنثی
CHEEK_RAISER_L = 0.0
تصویر مرجع ردیابی چهره
CHEEK_RAISER_L = 1.0
5 CHEEK_RAISER_R
تصویر مرجع چهره خنثی
CHEEK_RAISER_R = 0.0
تصویر مرجع ردیابی چهره
CHEEK_RAISER_R = 1.0
6 CHEEK_SUCK_L
تصویر مرجع چهره خنثی
CHEEK_SUCK_L = 0.0
تصویر مرجع ردیابی چهره
CHEEK_SUCK_L = 1.0
7 CHEEK_SUCK_R
تصویر مرجع چهره خنثی
CHEEK_SUCK_R = 0.0
تصویر مرجع ردیابی چهره
CHEEK_SUCK_R = 1.0
8 CHIN_RAISER_B
تصویر مرجع چهره خنثی
CHIN_RAISER_B = 0.0
تصویر مرجع ردیابی چهره
CHIN_RAISER_B = 1.0
9 CHIN_RAISER_T
تصویر مرجع چهره خنثی
CHIN_RAISER_T = 0.0
تصویر مرجع ردیابی چهره
CHIN_RAISER_T = 1.0
10 DIMPLER_L
تصویر مرجع چهره خنثی
DIMPLER_L = 0.0
تصویر مرجع ردیابی چهره
DIMPLER_L = 1.0
11 DIMPLER_R
تصویر مرجع چهره خنثی
DIMPLER_R = 0.0
تصویر مرجع ردیابی چهره
DIMPLER_R = 1.0
12 EYES_CLOSED_L
تصویر مرجع چهره خنثی
EYES_CLOSED_L = 0.0
تصویر مرجع ردیابی چهره
EYES_CLOSED_L = 1.0
13 EYES_CLOSED_R
تصویر مرجع چهره خنثی
EYES_CLOSED_R = 0.0
تصویر مرجع ردیابی چهره
EYES_CLOSED_R = 1.0
14 EYES_LOOK_DOWN_L
تصویر مرجع چهره خنثی
EYES_LOOK_DOWN_L = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_DOWN_L = 1.0
15 EYES_LOOK_DOWN_R
تصویر مرجع چهره خنثی
EYES_LOOK_DOWN_R = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_DOWN_R = 1.0
16 EYES_LOOK_LEFT_L
تصویر مرجع چهره خنثی
EYES_LOOK_LEFT_L = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_LEFT_L = 1.0
17 EYES_LOOK_LEFT_R
تصویر مرجع چهره خنثی
EYES_LOOK_LEFT_R = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_LEFT_R = 1.0
18 EYES_LOOK_RIGHT_L
تصویر مرجع چهره خنثی
EYES_LOOK_RIGHT_L = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_RIGHT_L = 1.0
19 EYES_LOOK_RIGHT_R
تصویر مرجع چهره خنثی
EYES_LOOK_RIGHT_R = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_RIGHT_R = 1.0
20 EYES_LOOK_UP_L
تصویر مرجع چهره خنثی
EYES_LOOK_UP_L = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_UP_L = 1.0
21 EYES_LOOK_UP_R
تصویر مرجع چهره خنثی
EYES_LOOK_UP_R = 0.0
تصویر مرجع ردیابی چهره
EYES_LOOK_UP_R = 1.0
22 INNER_BROW_RAISER_L
تصویر مرجع چهره خنثی
INNER_BROW_RAISER_L = 0.0
تصویر مرجع ردیابی چهره
INNER_BROW_RAISER_L = 1.0
23 INNER_BROW_RAISER_R
تصویر مرجع چهره خنثی
INNER_BROW_RAISER_R = 0.0
تصویر مرجع ردیابی چهره
INNER_BROW_RAISER_R = 1.0
24 JAW_DROP
تصویر مرجع چهره خنثی
JAW_DROP = 0.0
تصویر مرجع ردیابی چهره
JAW_DROP = 1.0
25 JAW_SIDEWAYS_LEFT
تصویر مرجع چهره خنثی
JAW_SIDEWAYS_LEFT = 0.0
تصویر مرجع ردیابی چهره
JAW_SIDEWAYS_LEFT = 1.0
26 JAW_SIDEWAYS_RIGHT
تصویر مرجع چهره خنثی
JAW_SIDEWAYS_RIGHT = 0.0
تصویر مرجع ردیابی چهره
JAW_SIDEWAYS_RIGHT = 1.0
27 JAW_THRUST
تصویر مرجع چهره خنثی
JAW_THRUST = 0.0
تصویر مرجع ردیابی چهره
JAW_THRUST = 1.0
28 LID_TIGHTENER_L
تصویر مرجع چهره خنثی
LID_TIGHTENER_L = 0.0
تصویر مرجع ردیابی چهره
LID_TIGHTENER_L = 1.0
29 LID_TIGHTENER_R
تصویر مرجع چهره خنثی
LID_TIGHTENER_R = 0.0
تصویر مرجع ردیابی چهره
LID_TIGHTENER_R = 1.0
30 LIP_CORNER_DEPRESSOR_L
تصویر مرجع چهره خنثی
LIP_CORNER_DEPRESSOR_L = 0.0
تصویر مرجع ردیابی چهره
LIP_CORNER_DEPRESSOR_L = 1.0
31 LIP_CORNER_DEPRESSOR_R
تصویر مرجع چهره خنثی
LIP_CORNER_DEPRESSOR_R = 0.0
تصویر مرجع ردیابی چهره
LIP_CORNER_DEPRESSOR_R = 1.0
32 LIP_CORNER_PULLER_L
تصویر مرجع چهره خنثی
LIP_CORNER_PULLER_L = 0.0
تصویر مرجع ردیابی چهره
LIP_CORNER_PULLER_L = 1.0
33 LIP_CORNER_PULLER_R
تصویر مرجع چهره خنثی
LIP_CORNER_PULLER_R = 0.0
تصویر مرجع ردیابی چهره
LIP_CORNER_PULLER_R = 1.0
34 LIP_FUNNELER_LB
تصویر مرجع چهره خنثی
LIP_FUNNELER_LB = 0.0
تصویر مرجع ردیابی چهره
LIP_FUNNELER_LB = 1.0
35 LIP_FUNNELER_LT
تصویر مرجع چهره خنثی
LIP_FUNNELER_LT = 0.0
تصویر مرجع ردیابی چهره
LIP_FUNNELER_LT = 1.0
36 LIP_FUNNELER_RB
تصویر مرجع چهره خنثی
LIP_FUNNELER_RB = 0.0
تصویر مرجع ردیابی چهره
LIP_FUNNELER_RB = 1.0
37 LIP_FUNNELER_RT
تصویر مرجع چهره خنثی
LIP_FUNNELER_RT = 0.0
تصویر مرجع ردیابی چهره
LIP_FUNNELER_RT = 1.0
38 LIP_PRESSOR_L
تصویر مرجع چهره خنثی
LIP_PRESSOR_L = 0.0
تصویر مرجع ردیابی چهره
LIP_PRESSOR_L = 1.0
39 LIP_PRESSOR_R
تصویر مرجع چهره خنثی
LIP_PRESSOR_R = 0.0
تصویر مرجع ردیابی چهره
LIP_PRESSOR_R = 1.0
40 LIP_PUCKER_L
تصویر مرجع چهره خنثی
LIP_PUCKER_L = 0.0
تصویر مرجع ردیابی چهره
LIP_PUCKER_L = 1.0
41 LIP_PUCKER_R
تصویر مرجع چهره خنثی
LIP_PUCKER_R = 0.0
تصویر مرجع ردیابی چهره
LIP_PUCKER_R = 1.0
42 LIP_STRETCHER_L
تصویر مرجع چهره خنثی
LIP_STRETCHER_L = 0.0
تصویر مرجع ردیابی چهره
LIP_STRETCHER_L = 1.0
43 LIP_STRETCHER_R
تصویر مرجع چهره خنثی
LIP_STRETCHER_R = 0.0
تصویر مرجع ردیابی چهره
LIP_STRETCHER_R = 1.0
44 LIP_SUCK_LB
تصویر مرجع چهره خنثی
LIP_SUCK_LB = 0.0
تصویر مرجع ردیابی چهره
LIP_SUCK_LB = 1.0
45 LIP_SUCK_LT
تصویر مرجع چهره خنثی
LIP_SUCK_LT = 0.0
تصویر مرجع ردیابی چهره
LIP_SUCK_LT = 1.0
46 LIP_SUCK_RB
تصویر مرجع چهره خنثی
LIP_SUCK_RB = 0.0
تصویر مرجع ردیابی چهره
LIP_SUCK_RB = 1.0
47 LIP_SUCK_RT
تصویر مرجع چهره خنثی
LIP_SUCK_RT = 0.0
تصویر مرجع ردیابی چهره
LIP_SUCK_RT = 1.0
48 LIP_TIGHTENER_L
تصویر مرجع چهره خنثی
LIP_TIGHTENER_L = 0.0
تصویر مرجع ردیابی چهره
LIP_TIGHTENER_L = 1.0
49 LIP_TIGHTENER_R
تصویر مرجع چهره خنثی
LIP_TIGHTENER_R = 0.0
تصویر مرجع ردیابی چهره
LIP_TIGHTENER_R = 1.0
50 LIPS_TOWARD
تصویر مرجع چهره خنثی
LIPS_TOWARD = 0.0
تصویر مرجع ردیابی چهره
JAW_DROP = 1.0 و LIPS_TOWARD = 1.0
51 LOWER_LIP_DEPRESSOR_L
تصویر مرجع چهره خنثی
LOWER_LIP_DEPRESSOR_L = 0.0
تصویر مرجع ردیابی چهره
LOWER_LIP_DEPRESSOR_L = 1.0
52 LOWER_LIP_DEPRESSOR_R
تصویر مرجع چهره خنثی
LOWER_LIP_DEPRESSOR_R = 0.0
تصویر مرجع ردیابی چهره
LOWER_LIP_DEPRESSOR_R = 1.0
53 MOUTH_LEFT
تصویر مرجع چهره خنثی
MOUTH_LEFT = 0.0
تصویر مرجع ردیابی چهره
MOUTH_LEFT = 1.0
54 MOUTH_RIGHT
تصویر مرجع چهره خنثی
MOUTH_RIGHT = 0.0
تصویر مرجع ردیابی چهره
MOUTH_RIGHT = 1.0
55 NOSE_WRINKLER_L
تصویر مرجع چهره خنثی
NOSE_WRINKLER_L = 0.0
تصویر مرجع ردیابی چهره
NOSE_WRINKLER_L = 1.0
56 NOSE_WRINKLER_R
تصویر مرجع چهره خنثی
NOSE_WRINKLER_R = 0.0
تصویر مرجع ردیابی چهره
NOSE_WRINKLER_R = 1.0
57 OUTER_BROW_RAISER_L
تصویر مرجع چهره خنثی
OUTER_BROW_RAISER_L = 0.0
تصویر مرجع ردیابی چهره
OUTER_BROW_RAISER_L = 1.0
58 OUTER_BROW_RAISER_R
تصویر مرجع چهره خنثی
OUTER_BROW_RAISER_R = 0.0
تصویر مرجع ردیابی چهره
OUTER_BROW_RAISER_R = 1.0
59 UPPER_LID_RAISER_L
تصویر مرجع چهره خنثی
UPPER_LID_RAISER_L = 0.0
تصویر مرجع ردیابی چهره
UPPER_LID_RAISER_L = 1.0
60 UPPER_LID_RAISER_R
تصویر مرجع چهره خنثی
UPPER_LID_RAISER_R = 0.0
تصویر مرجع ردیابی چهره
UPPER_LID_RAISER_R = 1.0
61 UPPER_LIP_RAISER_L
تصویر مرجع چهره خنثی
UPPER_LIP_RAISER_L = 0.0
تصویر مرجع ردیابی چهره
UPPER_LIP_RAISER_L = 1.0
62 UPPER_LIP_RAISER_R
تصویر مرجع چهره خنثی
UPPER_LIP_RAISER_R = 0.0
تصویر مرجع ردیابی چهره
UPPER_LIP_RAISER_R = 1.0

کد مثال برای ردیابی چهره

کد مثال زیر نشان می‌دهد که چگونه می‌توان تمام وزن‌ها را برای شکل‌های ترکیبی حالت چهره به دست آورد.

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

فهرست های جدید

ساختارهای جدید

توابع جدید

مسائل

تاریخچه نسخه

  • بازبینی 1، 05-09-2024 (لوانا چن)
    • توضیحات پسوند اولیه