Name String
XR_ANDROID_hand_mesh
एक्सटेंशन टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
704
बदलाव
1
एक्सटेंशन और वर्शन की डिपेंडेंसी
पिछली बार बदलाव करने की तारीख
2024-09-10
आईपी स्टेटस
आईपी पर कोई दावा नहीं किया गया है.
योगदान देने वाले
निहाव जैन, Google
केर्न ओवरटर्फ़, Google
स्पेंसर क्विन, Google
लेवाना चेन, Google
खास जानकारी
यह एक्सटेंशन, हाथ ट्रैक करने की सुविधा चालू करता है. इस सुविधा की मदद से, हाथ को डाइनैमिक हैंड मेश के तौर पर दिखाया जाता है.
इस एक्सटेंशन का मकसद, उपयोगकर्ता के हाथों को उपयोगकर्ता के हिसाब से दिखाने के लिए, मेश के वर्टिक्स और इंडेक्स बफ़र उपलब्ध कराना है. इसका इस्तेमाल, ऑब्स्क्यूरेशन और विज़ुअलाइज़ेशन के लिए किया जा सकता है.
इस एक्सटेंशन का इस्तेमाल, हाथ की गति को ट्रैक करने के अन्य कामों के लिए नहीं किया जाना चाहिए.
- इंटरैक्शन के लिए,
XR_EXT_hand_interactionका इस्तेमाल किया जा सकता है. - कंकाल के जोड़ों के लिए,
XR_EXT_hand_trackingका इस्तेमाल किया जा सकता है.
हाथ की गतिविधियों को ट्रैक करने से जुड़ा डेटा, संवेदनशील निजी जानकारी हो सकती है. यह डेटा, निजी निजता और सुरक्षा से जुड़ा होता है. हमारा सुझाव है कि हाथ की गतिविधियों को ट्रैक करने से जुड़ा डेटा सेव करने या ट्रांसफ़र करने वाले ऐप्लिकेशन, ऐसा करने के लिए उपयोगकर्ता से हमेशा साफ़ तौर पर अनुमति लें.
सिस्टम की क्षमता की जांच करना
कोई ऐप्लिकेशन, xrGetSystemProperties को कॉल करते समय, XrSystemHandMeshTrackingPropertiesANDROID स्ट्रक्चर को XrSystemProperties से जोड़कर, यह जांच कर सकता है कि सिस्टम, हाथ की मेश को ट्रैक कर सकता है या नहीं.
typedef struct XrSystemHandMeshTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsHandMeshTracking;
XrBool32 supportsTextureUV;
XrBool32 supportsVertexNormal;
} XrSystemHandMeshTrackingPropertiesANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.supportsHandMeshTrackingएकXrBool32है, जिससे पता चलता है कि चुना गयाXrSystemId, हाथ की मेश ट्रैकिंग की सुविधा के साथ काम करता है या नहीं.supportsTextureUVएकXrBool32है, जो यह बताता है कि चुना गयाXrSystemId, मेश वर्टिसेस के लिए टेक्सचर यूवी के साथ काम करता है या नहीं.supportsVertexNormalएकXrBool32है, जो यह दिखाता है कि चुना गयाXrSystemId, मेश वर्टिकस के लिए वर्टिकस नॉर्मल के साथ काम करता है या नहीं.
supportsHandMeshTracking के XR_FALSE होने पर, ऐप्लिकेशन को हाथ की मेश की सुविधाओं का इस्तेमाल करने से बचना चाहिए. इसकी वजह यह है कि इसका मतलब है कि सिस्टम, हाथ की मेश ट्रैकिंग की सुविधा के साथ काम नहीं करता. इस मामले में, xrCreateHandMeshTrackerANDROID
XR_ERROR_FEATURE_UNSUPPORTED दिखाएगा.
अगर supportsHandMeshTracking से XR_TRUE मिलता है, तो इसका मतलब है कि सिस्टम में हाथ की मेश ट्रैकिंग की सुविधा काम करती है. ऐप्लिकेशन को हैंडल मेश बफ़र ऐक्सेस करने के लिए, XrHandMeshANDROID::indexCount और XrHandMeshANDROID::vertexCount का इस्तेमाल करना चाहिए. साथ ही, हर फ़्रेम में xrGetHandMeshANDROID को कॉल करते समय, उन्हें अपने रेंडर लूप में फिर से इस्तेमाल करना चाहिए.
अगर supportsTextureUV XR_FALSE दिखाता है, तो इसका मतलब है कि सिस्टम, मेश वर्टिसेस के लिए टेक्सचर यूवी के साथ काम नहीं करता. इसलिए, xrGetHandMeshANDROID को कॉल करने पर, ऐप्लिकेशन को XrHandMeshANDROID::textureUVs NULL दिखेगा.
अगर supportsVertexNormal XR_FALSE दिखाता है, तो इसका मतलब है कि सिस्टम, मेश वर्टिक्स के लिए वर्टिक्स नॉर्मल के साथ काम नहीं करता. इसलिए, xrGetHandMeshANDROID को कॉल करने पर, ऐप्लिकेशन को XrHandMeshANDROID::normals NULL मिलेगा.
मान्य इस्तेमाल (इंप्लिसिट)
- XrSystemHandMeshTrackingPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_SYSTEM_HAND_MESH_TRACKING_PROPERTIES_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
हाथ के मेश ट्रैकर का हैंडल बनाना
XR_DEFINE_HANDLE(XrHandMeshTrackerANDROID)
XrHandMeshTrackerANDROID हैंडल, हाथ की मेश ट्रैकिंग और उससे जुड़े संसाधनों को मैनेज करने के लिए, हाथ का मेश ट्रैकर दिखाता है.
इस हैंडल का इस्तेमाल, इस एक्सटेंशन के अन्य फ़ंक्शन का इस्तेमाल करके, हाथ के मेश बफ़र को ऐक्सेस करने के लिए किया जा सकता है.
कोई ऐप्लिकेशन, xrCreateHandMeshTrackerANDROID फ़ंक्शन का इस्तेमाल करके, XrHandMeshTrackerANDROID हैंडल बना सकता है.
XrResult xrCreateHandMeshTrackerANDROID(
XrSession session,
const XrHandMeshTrackerCreateInfoANDROID* createInfo,
XrHandMeshTrackerANDROID* handMeshTracker);
पैरामीटर की जानकारी
sessionएक XrSession है, जिसमें हाथ का मेश ट्रैकर चालू होगा.createInfo, XrHandMeshTrackerCreateInfoANDROID है. इसका इस्तेमाल, हाथ के मेश ट्रैकर की जानकारी देने के लिए किया जाता है.handMeshTracker, XrHandMeshTrackerANDROID हैंडल है.
अगर सिस्टम में हाथ की मेश ट्रैकिंग की सुविधा काम नहीं करती है, तो xrCreateHandMeshTrackerANDROID XR_ERROR_FEATURE_UNSUPPORTED दिखाएगा.
XrHandMeshTrackerANDROID हैंडल के पास, हाथ के मेश ट्रैकिंग के सभी संसाधन होते हैं. हाथ की मेश ट्रैकिंग की सुविधाओं का इस्तेमाल करने के बाद, ऐप्लिकेशन को xrDestroyHandMeshTrackerANDROID फ़ंक्शन का इस्तेमाल करके, हैंडल को नष्ट करना ज़रूरी है.
मान्य इस्तेमाल (इंप्लिसिट)
- xrCreateHandMeshTrackerANDROID को कॉल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चालू होना चाहिए sessionयह एक मान्य XrSession हैंडल होना चाहिएcreateInfoयह, XrHandMeshTrackerCreateInfoANDROID स्ट्रक्चर के लिए मान्य पॉइंटर होना चाहिएhandMeshTrackerXrHandMeshTrackerANDROID हैंडल का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_HANDLE_INVALIDXR_ERROR_LIMIT_REACHED
XrHandMeshTrackerCreateInfoANDROID स्ट्रक्चर में, XrHandMeshTrackerANDROID हैंडल बनाने के लिए जानकारी दी गई है.
typedef struct XrHandMeshTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
} XrHandMeshTrackerCreateInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.
मान्य इस्तेमाल (इंप्लिसिट)
- XrHandMeshTrackerCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_HAND_MESH_TRACKER_CREATE_INFO_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
xrDestroyHandMeshTrackerANDROID फ़ंक्शन, हाथ की मेश ट्रैकिंग की सुविधाओं का इस्तेमाल करने के बाद, handMeshTracker और उससे जुड़े संसाधनों को रिलीज़ कर देता है.
XrResult xrDestroyHandMeshTrackerANDROID(
XrHandMeshTrackerANDROID handMeshTracker);
पैरामीटर की जानकारी
handMeshTrackerएक XrHandMeshTrackerANDROID है, जिसे पहले xrCreateHandMeshTrackerANDROID से बनाया गया था.
मान्य इस्तेमाल (इंप्लिसिट)
- xrDestroyHandMeshTrackerANDROID को कॉल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चालू होना चाहिए handMeshTrackerXrHandMeshTrackerANDROID हैंडल मान्य होना ज़रूरी है
थ्रेड की सुरक्षा
handMeshTrackerऔर किसी भी चाइल्ड हैंडल का ऐक्सेस, बाहरी तौर पर सिंक किया जाना ज़रूरी है
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
हाथ के मेश ढूंढना
ऐप्लिकेशन, किसी तय टाइमस्टैंप पर हाथ का मेश पाने के लिए, xrGetHandMeshANDROID फ़ंक्शन का इस्तेमाल कर सकता है. xrGetHandMeshANDROID को कॉल करते समय, हाथ के मेश के वर्टिसेस की पोज़िशन और नॉर्मल को XrHandMeshGetInfoANDROID::baseSpace से तय किए गए स्पेस में दिखाया जाता है.
XrResult xrGetHandMeshANDROID(
XrHandMeshTrackerANDROID handMeshTracker,
const XrHandMeshGetInfoANDROID* getInfo,
XrHandTrackingMeshesANDROID* handMeshes);
पैरामीटर की जानकारी
handMeshTracker, XrHandMeshTrackerANDROID हैंडल है, जिसे पहले xrCreateHandMeshTrackerANDROID की मदद से बनाया गया था.getInfoएक XrHandMeshGetInfoANDROID स्ट्रक्चर है, जिसमें हाथ के मेश डेटा के बारे में क्वेरी करने के लिए जानकारी होती है.handMeshes, XrHandTrackingMeshesANDROID स्ट्रक्चर का पॉइंटर है. इसमें हाथ के मेश डेटा को पॉप्युलेट किया जाएगा.
ऐप्लिकेशन, xrGetHandMeshANDROID फ़ंक्शन का इस्तेमाल करके, रनटाइम से जनरेट किए गए हाथ के मेश बफ़र को ऐक्सेस कर सकता है.
ऐप्लिकेशन को xrGetHandMeshANDROID को पहली बार कॉल करने से पहले, सेशन के दौरान कम से कम एक बार xrBeginFrame को कॉल करना चाहिए.
ऐप्लिकेशन को हाथ के मेश बफ़र ऐक्सेस करने के लिए, XrHandMeshANDROID::indexCount और XrHandMeshANDROID::vertexCount का इस्तेमाल करना चाहिए. साथ ही, हर फ़्रेम में xrGetHandMeshANDROID को कॉल करते समय, अपने रेंडर लूप में उनका फिर से इस्तेमाल करना चाहिए.
मान्य इस्तेमाल (इंप्लिसिट)
- xrGetHandMeshANDROID को कॉल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चालू होना चाहिए handMeshTrackerXrHandMeshTrackerANDROID हैंडल मान्य होना ज़रूरी हैgetInfoयह, XrHandMeshGetInfoANDROID के मान्य स्ट्रक्चर का पॉइंटर होना चाहिएhandMeshesXrHandTrackingMeshesANDROID स्ट्रक्चर का पॉइंटर होना ज़रूरी है
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_HANDLE_INVALIDXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_TIME_INVALID
XrHandMeshGetInfoANDROID, हैंडमैश डेटा पाने के लिए ज़रूरी जानकारी के बारे में बताता है.
typedef struct XrHandMeshGetInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
} XrHandMeshGetInfoANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.baseSpaceएक XrSpace है, जो रेफ़रंस स्पेस तय करता है. इसमेंtimeपर मौजूद वर्टिसेस के लिए ट्रांसफ़ॉर्म की जगह तय की जाती है.time,XrTimeहै. इससे उस समय के बारे में पता चलता है जब ऐप्लिकेशन को हाथ के मेश से क्वेरी करनी है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrHandMeshGetInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_HAND_MESH_GET_INFO_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएbaseSpaceयह XrSpace का मान्य हैंडल होना चाहिए
XrHandTrackingMeshesANDROID स्ट्रक्चर में, दोनों हाथों का मेश डेटा होता है.
typedef struct XrHandTrackingMeshesANDROID {
XrStructureType type;
void* next;
XrHandMeshANDROID leftHandMesh;
XrHandMeshANDROID rightHandMesh;
} XrHandTrackingMeshesANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.leftHandMesh, बाएं हाथ के लिए XrHandMeshANDROID है.rightHandMesh, दाएं हाथ के लिए XrHandMeshANDROID है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrHandTrackingMeshesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चाहिए कि चालू हो typeकोXR_TYPE_HAND_TRACKING_MESHES_ANDROIDहोना ज़रूरी हैnextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिएleftHandMeshXrHandMeshANDROID का मान्य स्ट्रक्चर होना चाहिएrightHandMeshXrHandMeshANDROID का मान्य स्ट्रक्चर होना चाहिए
XrHandMeshANDROID स्ट्रक्चर में डेटा और बफ़र होते हैं. इनकी मदद से, एक हाथ के लिए xrGetHandMeshANDROID फ़ंक्शन से, हाथ के मेश ट्रैकिंग डेटा को रिसीव किया जा सकता है.
typedef struct XrHandMeshANDROID {
XrBool32 isActive;
XrTime dynamicLastUpdateTime;
uint32_t indexCount;
uint32_t vertexCount;
const uint32_t* indices;
const XrVector2f* textureUVs;
const XrVector3f* positions;
const XrVector3f* normals;
XrPosef baseSpaceFromVertexSpace;
} XrHandMeshANDROID;
पैसे चुकाकर बने सदस्यों के ब्यौरे
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर तय नहीं किए गए हैं.isActiveएकXrBool32है, जो यह बताता है कि मौजूदा हाथ का मेश ट्रैकर चालू है या नहीं और मेश डेटा मान्य है या नहीं.dynamicLastUpdateTimeवहXrTimeहै जिसमें उस समय की जानकारी होती है जब डाइनैमिक बफ़र को आखिरी बार अपडेट किया गया था.indexCountएकuint32_tहै, जो हैंडमैश केindicesकी संख्या के तौर पर काम करता है.vertexCountएकuint32_tहै, जो हाथ के मेश केpositionsकी संख्या के तौर पर काम करता है. अगर सिस्टम मेंtextureUVsयाnormalsकाम करते हैं, तो इनके लिए भी इसका इस्तेमाल किया जा सकता है.indices,uint32_tका एक कलेक्शन है. इसमें घड़ी की विपरीत दिशा में घुमाने पर, त्रिभुजों के लिए मेश इंडेक्स दिखते हैं. चुनी गई वैल्यू की संख्याindexCountहै.textureUVs,NULLयाXrVector2fका ऐरे होता है, जो वर्टिक्स टेक्सचर निर्देशांक दिखाता है. पॉइंट की गई वैल्यू की संख्याvertexCountहै.positions,XrVector3fका एक कलेक्शन है, जोbaseSpaceFromVertexSpaceमें वर्टिक्स की पोज़िशन दिखाता है. पॉइंट की गई वैल्यू की संख्याvertexCountहै.normals,NULLयाXrVector3fका एक कलेक्शन है, जोbaseSpaceFromVertexSpaceमें वर्टिकस के सामान्य वैल्यू दिखाता है. पॉइंट की गई वैल्यू की संख्याvertexCountहै.baseSpaceFromVertexSpace, xrGetHandMeshANDROID को कॉल करते समय, XrHandMeshGetInfoANDROID::baseSpace में मौजूद वर्टिक्स XrSpace है. ऐप्लिकेशन, रेंडरिंग के दौरान मेश वर्टिसेस और नॉर्मल के कोऑर्डिनेट स्पेस को बदलने के लिए, इसका इस्तेमाल कर सकते हैं.
हाथ के मेश को ट्रैंगल की सूचियों में दिखाया जाता है. साथ ही, हाथ के बाहर से देखने पर, हर ट्रैंगल के वर्टिसेस, घड़ी की सुई के उलट दिशा में होते हैं.
अगर isActive की वैल्यू XR_FALSE है, तो इसका मतलब है कि हाथ को सक्रिय रूप से ट्रैक नहीं किया जा रहा है. उदाहरण के लिए, हाथ सेंसर की रेंज से बाहर है, इनपुट फ़ोकस को ऐप्लिकेशन से हटा दिया गया है या ऐप्लिकेशन के पास हाथ की ट्रैकिंग का डेटा ऐक्सेस करने की अनुमतियां नहीं हैं.
अगर isActive की वैल्यू XR_TRUE है, तो indices और positions में दिखाए गए हाथ की ट्रैकिंग मेश को XrHandMeshGetInfoANDROID::time के नए डेटा पर अपडेट किया जाता है. इसमें textureUVs और normals भी शामिल हैं, बशर्ते सिस्टम में इनका इस्तेमाल किया जा सकता हो. XrHandMeshGetInfoANDROID::time का डेटा, xrGetHandMeshANDROID फ़ंक्शन को दिया जाता है.
XrHandMeshANDROID में लौटाई गई हैंड मेश बफ़र से मेमोरी का ऐक्सेस, रनटाइम के पास होता है और उसे ऐप्लिकेशन के साथ शेयर किया जाता है. XrHandMeshTrackerANDROID हैंडल मान्य होने पर, xrBeginFrame को अगले कॉल करने तक, मेमोरी को किसी भी थ्रेड से ऐक्सेस किया जा सकता है.
indicesऔरtextureUVsसे मिली वैल्यू डाइनैमिक नहीं होतींpositionsऔरnormalsसे दिखाए गए पॉइंटर और वैल्यू, डाइनैमिक होती हैं. ये दोनों xrBeginFrame को कॉल करने के बीच बदल सकती हैं. ऐप्लिकेशन,dynamicLastUpdateTimeका इस्तेमाल करके यह जांच सकता है कि पिछले फ़्रेम के बाद वैल्यू में बदलाव हुआ है या नहीं. साथ ही, अगर कोई बदलाव नहीं हुआ है, तो डेटा को बार-बार प्रोसेस करने से बचाया जा सकता है.
मान्य इस्तेमाल (इंप्लिसिट)
- XrHandMeshANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_hand_meshएक्सटेंशन चाहिए कि चालू हो indices, मान्यuint32_tवैल्यू का पॉइंटर होना चाहिएtextureUVsयह किसी मान्य XrVector2f स्ट्रक्चर का पॉइंटर होना चाहिएpositionsयह किसी मान्य XrVector3f स्ट्रक्चर का पॉइंटर होना चाहिएnormalsयह किसी मान्य XrVector3f स्ट्रक्चर का पॉइंटर होना चाहिए
हाथ की मेश ट्रैकिंग के लिए कोड का उदाहरण
यहां दिए गए उदाहरण में, रेंडरिंग के लिए हाथ के मेश बफ़र को ऐक्सेस करने का तरीका बताया गया है.
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup.
XrSpace appPlaySpace; // Created at app startup.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateHandMeshTrackerANDROID xrCreateHandMeshTrackerANDROID; // previously initialized
PFN_xrDestroyHandMeshTrackerANDROID xrDestroyHandMeshTrackerANDROID; // previously initialized
PFN_xrGetHandMeshANDROID xrGetHandMeshANDROID; // previously initialized
// Inspect system capability
XrSystemHandMeshTrackingPropertiesANDROID handMeshTrackingProps = {
.type = XR_TYPE_SYSTEM_HAND_MESH_TRACKING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &handMeshTrackingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!handMeshTrackingProps.supportsHandMeshTracking) {
// hand mesh tracking is not supported.
return;
}
XrHandMeshTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_HAND_MESH_TRACKER_CREATE_INFO_ANDROID
};
XrHandMeshTrackerANDROID handMeshTracker = XR_NULL_HANDLE;
CHK_XR(xrCreateHandMeshTrackerANDROID(
session, &trackerCreateInfo, &handMeshTracker));
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
// ...
XrHandMeshGetInfoANDROID getInfo = {
.type = XR_TYPE_HAND_MESH_GET_INFO_ANDROID,
.baseSpace = appPlaySpace,
.time = time,
};
XrHandTrackingMeshesANDROID handMeshes = {
.type = XR_TYPE_HAND_TRACKING_MESHES_ANDROID
};
CHK_XR(xrGetHandMeshANDROID(handMeshTracker, &getInfo, &handMeshes));
if (handMeshes.leftHandMesh.isActive) {
// access vertex/index buffers for rendering.
}
// ...
// Finish frame loop
// ...
}
CHECK_XR(xrDestroyHandMeshTracker(handMeshTracker));
नए ऑब्जेक्ट टाइप
नई Enum Constant
XrObjectType एनोटेशन को इनके साथ जोड़ा गया है:
XR_OBJECT_TYPE_HAND_MESH_TRACKER_ANDROID
XrStructureType एनोटेशन को इनके साथ जोड़ा गया है:
XR_TYPE_SYSTEM_HAND_MESH_TRACKING_PROPERTIES_ANDROIDXR_TYPE_HAND_MESH_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_HAND_MESH_GET_INFO_ANDROIDXR_TYPE_HAND_TRACKING_MESHES_ANDROID
नए Enums
नए स्ट्रक्चर
- XrSystemHandMeshTrackingPropertiesANDROID
- XrHandMeshTrackerCreateInfoANDROID
- XrHandMeshGetInfoANDROID
- XrHandMeshANDROID
- XrHandTrackingMeshesANDROID
नए फ़ंक्शन
समस्याएं
वर्शन का इतिहास
- पहला बदलाव, 10-09-2024 (लेवन चेन)
- एक्सटेंशन के बारे में शुरुआती जानकारी
OpenXR™ और OpenXR लोगो, The Khronos Group Inc. के मालिकाना हक वाले ट्रेडमार्क हैं. ये चीन, यूरोपीय संघ, जापान, और यूनाइटेड किंगडम में ट्रेडमार्क के तौर पर रजिस्टर किए गए हैं.