Ad dizesi
XR_ANDROID_face_tracking
Uzantı Türü
Örnek uzatma
Kayıtlı Uzatma Numarası
459
Düzeltme
1
Uzantı ve Sürüm Bağımlılıkları
Son Değiştirilme Tarihi
2024-09-06
IP Durumu
Bilinen IP hak talepleri yok.
Katkıda bulunanlar
Spencer Quin, Google
Jared Finder, Google
Levana Chen, Google
Genel Bakış
Bu uzantı, uygulamaların XR deneyimlerinde şekillerin ağırlıklarını almasını ve yüz ifadelerini oluşturmasını sağlar.
Bu uzantı, sanal alanda kullanıcıların gerçekçi avatarlarını ve etkileyici temsillerini oluşturmak için gereken bilgileri sağlamak amacıyla tasarlanmıştır. Uygulama, karıştırma şekillerinin ağırlıklarını almadan önce yüz kalibrasyonunun etkinleştirilip etkinleştirilmediğini kontrol edebilir.
Yüz İzleyici
Yüz izleyici, kullanıcıya bakan görüntü akışları ve kamera kalibrasyonuyla yüz ifadesini izleyen bir algılama cihazıdır. Bu uzantının asıl amacı, kullanıcının yüz ifadelerini sanal bir sahnedeki avatarlarıyla eşleştirmektir.
Yüz izleme verileri hassas kişisel bilgilerdir ve kişisel gizlilik ve bütünlükle yakından ilişkilidir. Yüz izleme verilerini depolayan veya aktaran uygulamaların, bunu yapmak için her zaman kullanıcıdan etkin ve belirli bir onay istemesi önemle tavsiye edilir.
- Uygulamalar, etkin bir yüz izleyici oluştururken yüz izleyiciye erişmesine izin verilene kadar
XR_ERROR_PERMISSION_INSUFFICIENT
alır. - xrGetFaceStateANDROID kullanılarak yüz durumları alınırken uygulama erişimine izin verilmediği sürece XrFaceStateANDROID::isValid
XR_TRUE
döndürmez
Yüz takipçisi herkese açık kullanıcı adı oluşturma
XR_DEFINE_HANDLE(XrFaceTrackerANDROID)
XrFaceTrackerANDROID herkese açık kullanıcı adı, yüz izleme için bir yüz izleyiciyi temsil eder.
Bu herkese açık kullanıcı adı, bu uzantının diğer işlevlerini kullanarak yüz izleme verilerine erişmek için kullanılabilinir.
xrCreateFaceTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateFaceTrackerANDROID(
XrSession session,
const XrFaceTrackerCreateInfoANDROID* createInfo,
XrFaceTrackerANDROID* faceTracker);
Parametre Açıklamaları
session
, yüz izleyicinin etkin olacağı bir XrSession işleyicisidir.createInfo
, yüz izleyiciyi belirtmek için kullanılan XrFaceTrackerCreateInfoANDROID bağımsız değişkenidir.faceTracker
, döndürülen XrFaceTrackerANDROID kontrol çubuğudur.
Uygulamalar, xrCreateFaceTrackerANDROID işlevini kullanarak XrFaceTrackerANDROID işleyicisi oluşturabilir.
Sistem yüz izlemeyi desteklemiyorsa xrCreateFaceTrackerANDROID işlevi XR_ERROR_FEATURE_UNSUPPORTED
değerini döndürür.
Geçerli Kullanım (Dolayı)
- xrCreateFaceTrackerANDROID çağrılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.createInfo
, geçerli bir XrFaceTrackerCreateInfoANDROID yapısının işaretçisi olmalıdır.faceTracker
, XrFaceTrackerANDROID herkese açık kullanıcı adına işaret eden bir işaretçi olmalıdır.
İade Kodları
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 yapısı aşağıdaki gibi açıklanır:
typedef struct XrFaceTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
} XrFaceTrackerCreateInfoANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.
XrFaceTrackerCreateInfoANDROID yapısı, XrFaceTrackerANDROID işleyicisi oluşturmak için gereken bilgileri açıklar.
Geçerli Kullanım (Dolayı)
- XrFaceTrackerCreateInfoANDROID kullanılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. type
XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.
xrDestroyFaceTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrDestroyFaceTrackerANDROID(
XrFaceTrackerANDROID faceTracker);
Parametre Açıklamaları
faceTracker
, daha önce xrCreateFaceTrackerANDROID tarafından oluşturulmuş bir XrFaceTrackerANDROID öğesidir.
xrDestroyFaceTrackerANDROID işlevi, yüz izleme deneyimi sona erdiğinde faceTracker
ve temel kaynakları serbest bırakır.
Geçerli Kullanım (Dolayı)
- xrDestroyFaceTrackerANDROID çağrılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. faceTracker
geçerli bir XrFaceTrackerANDROID işleyicisi olmalıdır.
Thread Güvenliği
faceTracker
ve alt herkese açık kimliklere erişim, harici olarak senkronize edilmelidir.
İade Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
Kadran kalibrasyonunu kontrol etme
xrGetFaceCalibrationStateANDROID
işlevi şu şekilde tanımlanır:
XrResult xrGetFaceCalibrationStateANDROID(
XrFaceTrackerANDROID faceTracker,
XrBool32* faceIsCalibratedOutput);
Parametre Açıklamaları
faceTracker
, daha önce xrCreateFaceTrackerANDROID tarafından oluşturulmuş bir XrFaceTrackerANDROID öğesidir.faceIsCalibratedOutput
, yüz izleyicinin kalibre edilip edilmediğini belirtir.
Uygulamalar, xrGetFaceCalibrationStateANDROID işlevini kullanarak kadran kalibrasyon durumunu kontrol edebilir.
Sistem yüz kalibrasyonunu desteklemiyorsa xrGetFaceCalibrationStateANDROID XR_ERROR_FEATURE_UNSUPPORTED
değerini döndürür. Aksi takdirde faceIsCalibratedOutput
, yüz kalibrasyon durumunu yansıtmak için XR_TRUE
olarak ayarlanabilir.
Geçerli Kullanım (Dolayı)
- xrGetFaceCalibrationStateANDROID çağrılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. faceTracker
geçerli bir XrFaceTrackerANDROID işleyicisi olmalıdır.faceIsCalibratedOutput
XrBool32
değerinin işaretçisi olmalıdır
İade Kodları
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
Yüz ifadelerini alma
xrGetFaceStateANDROID işlevi, belirli bir zamanda yüz ifadelerinin harman şekillerini döndürür.
XrResult xrGetFaceStateANDROID(
XrFaceTrackerANDROID faceTracker,
const XrFaceStateGetInfoANDROID* getInfo,
XrFaceStateANDROID* faceStateOutput);
Parametre Açıklamaları
faceTracker
, daha önce xrCreateFaceTrackerANDROID tarafından oluşturulmuş bir XrFaceTrackerANDROID öğesidir.getInfo
, yüz ifadelerini elde etmek için gerekli bilgileri açıklayan XrFaceStateGetInfoANDROID işlevinin işaretçisidir.faceStateOutput
, döndürülen yüz izleme durumunu ve yüz ifadelerini alan XrFaceStateANDROID işaretçisidir.
Geçerli Kullanım (Dolayı)
- xrGetFaceStateANDROID çağrılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. faceTracker
geçerli bir XrFaceTrackerANDROID işleyicisi olmalıdır.getInfo
, geçerli bir XrFaceStateGetInfoANDROID yapısının işaretçisi olmalıdır.faceStateOutput
, XrFaceStateANDROID yapısına işaret eden bir olmalıdır
İade Kodları
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 yapısı, yüz ifadelerinin elde edilmesi için gereken bilgileri açıklar.
typedef struct XrFaceStateGetInfoANDROID {
XrStructureType type;
void* next;
XrTime time;
} XrFaceStateGetInfoANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.time
, yüz ifadelerinin istendiği birXrTime
öğesidir.
Uygulamalar, oluşturulan karenin tahmini görüntüleme süresine eşit bir süre istemelidir.
Geçerli Kullanım (Dolayı)
- XrFaceStateGetInfoANDROID işlevi kullanılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. type
XR_TYPE_FACE_STATE_GET_INFO_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.
XrFaceStateANDROID yapısı, yüz izleme durumunu ve yüz ifadelerini döndürür.
typedef struct XrFaceStateANDROID {
XrStructureType type;
void* next;
uint32_t parametersCapacityInput;
uint32_t parametersCountOutput;
float* parameters;
XrFaceTrackingStateANDROID faceTrackingState;
XrTime sampleTime;
XrBool32 isValid;
} XrFaceStateANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.parametersCapacityInput
,parameters
dizisinin kapasitesini açıklayan biruint32_t
veya gerekli kapasiteyi alma isteğini belirtmek için 0 değerini alır.parametersCountOutput
,parameters
öğelerinin sayısını veyaparametersCapacityInput
'ın yetersiz olması durumunda gereken kapasiteyi açıklayan biruint32_t
öğesidir.parameters
, yüz ifadesi karışım şekillerinin ağırlıklarıyla doldurulacak, uygulama tarafından ayrılmış birfloat
dizisinin işaretçisidir.faceTrackingState
, yüz izlemenin geçerlilik durumununXrFaceTrackingStateANDROID
değeridir.sampleTime
, döndürülen ifadelerin izlendiği veya ekstrapolasyon uygulandığıXrTime
zamandır. O sırada ekstrapolasyon başarılıysa ifade ağırlıklarının istendiği zamana eşittir.isValid
, verilerin geçerli olup olmadığını gösterir. Geçerli kareden olmasa bile geçerli olabilir.- Gerekli
parameters
boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, XrFaceParameterIndicesANDROID tarafından dizine eklenen yüz ifadelerini almak için parametersCapacityInput
değerini XR_FACE_PARAMETER_COUNT_ANDROID
olarak ayarlayabilir.
Döndürülen parameters
, mevcut yüz ifadelerinin karışım şekillerinin ağırlıklarını temsil eder.
parameters
dizisi güncellemeleri, uygulamanın ilgili yüz ifadesi enum'unu (ör. XrFaceParameterIndicesANDROID) kullanarak öğeleri dizine ekleyebilmesi için sıralanır.
Geçerli Kullanım (Dolayı)
- XrFaceStateANDROID kullanılmadan önce
XR_ANDROID_face_tracking
uzantısı etkinleştirilmelidir. type
XR_TYPE_FACE_STATE_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.parametersCapacityInput
,0, parameters
değilseparametersCapacityInput float
değerleri dizisinin işaretçisi olmalıdır.faceTrackingState
geçerli bir XrFaceTrackingStateANDROID değeri olmalıdır
XrFaceTrackingStateANDROID enumeration, yüz izleyicinin farklı durumlarını tanımlar.
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;
Listeler aşağıdaki anlamlara sahiptir:
Enum |
Açıklama |
|
Yüz izlemenin duraklatıldığını ancak ileride devam ettirilebileceğini gösterir. |
|
İzleme durdurulmuş ancak istemcide etkin bir yüz izleyicisi var. |
|
Yüz izlenir ve yüz ifadesi günceldir. |
Harmanlama şekilleriyle ilgili kurallar
Bu uzantı, azaltılmış G-Nome biçimi için XR_FACE_PARAMETER_COUNT_ANDROID
aracılığıyla 63 karma şekil tanımlar. Bu enum'daki her parametre, değerleri float
türü olan ve çalışma zamanında 1 - 0 olarak normalleştirilen bir karma şekil dizisinin dizinidir.
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;
Dizin | Ad | Referans resim | |
---|---|---|---|
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 |
Yüz izleme için örnek kod
Aşağıdaki örnek kodda, yüz ifadesi karışım şekillerinin tüm ağırlıklarının nasıl alınacağı gösterilmektedir.
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));
Yeni Nesne Türleri
Yeni Enum Constants
XR_FACE_PARAMETER_COUNT_ANDROID
XrObjectType dizini aşağıdakilerle genişletildi:
XR_OBJECT_TYPE_FACE_TRACKER_ANDROID
XrStructureType dizini aşağıdakilerle genişletildi:
XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID
XR_TYPE_FACE_STATE_GET_INFO_ANDROID
XR_TYPE_FACE_STATE_ANDROID
Yeni Sıralamalar
Yeni Yapılar
Yeni İşlevler
- xrCreateFaceTrackerANDROID
- xrDestroyFaceTrackerANDROID
- xrGetFaceStateANDROID
- xrGetFaceCalibrationStateANDROID
Sorunlar
Sürüm Geçmişi
- Düzeltme 1, 05.09.2024 (Levana Chen)
- İlk uzantı açıklaması