নাম স্ট্রিং
XR_ANDROID_hand_mesh
এক্সটেনশন প্রকার
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
704
রিভিশন
1
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধিত তারিখ
2024-09-10
আইপি স্ট্যাটাস
কোন পরিচিত আইপি দাবি.
অবদানকারী
নিহাভ জৈন, গুগল
কেয়ার্ন ওভারটার্ফ, গুগল
স্পেন্সার কুইন, গুগল
লেভানা চেন, গুগল
ওভারভিউ
এই এক্সটেনশনটি একটি গতিশীল হ্যান্ড মেশ হিসাবে উপস্থাপন করা হ্যান্ড ট্র্যাকিং সক্ষম করে।
এই এক্সটেনশনটি ব্যবহারকারীর হাতের ব্যক্তিগতকৃত উপস্থাপনার জালের জন্য শীর্ষবিন্দু এবং সূচক বাফার প্রদান করার উদ্দেশ্যে করা হয়েছে। এটি আবদ্ধকরণ এবং ভিজ্যুয়ালাইজেশনের জন্য ব্যবহার করা যেতে পারে ।
এই এক্সটেনশনটি অন্য হাত ট্র্যাকিং উদ্দেশ্যে ব্যবহার করা উচিত নয়।
- ইন্টারঅ্যাকশনের জন্য,
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জাল শীর্ষবিন্দুর জন্য টেক্সচার UV সমর্থন করে কিনা। -
supportsVertexNormalহল একটিXrBool32, যা নির্দেশ করে যে নির্বাচিতXrSystemIdজাল শীর্ষবিন্দুর জন্য শীর্ষবিন্দু স্বাভাবিক সমর্থন করে কিনা।
অ্যাপ্লিকেশানটি supportsHandMeshTracking XR_FALSE হলে হ্যান্ড মেশের ক্ষমতা ব্যবহার করা এড়ানো উচিত , যেহেতু এর মানে সিস্টেমটি হ্যান্ড মেশ ট্র্যাকিং সমর্থন করে না। এই ক্ষেত্রে, xrCreateHandMeshTrackerANDROID XR_ERROR_FEATURE_UNSUPPORTED ফেরত দেবে।
যদি supportsHandMeshTracking XR_TRUE রিটার্ন করে, সিস্টেম হ্যান্ড মেশ ট্র্যাকিং সমর্থন করে। প্রতিটি ফ্রেমে xrGetHandMeshANDROID কল করার সময় একটি অ্যাপ্লিকেশনকে হ্যান্ড মেশ বাফার অ্যাক্সেস করতে XrHandMeshANDROID::indexCount এবং XrHandMeshANDROID::vertexCount ব্যবহার করা উচিত এবং তাদের রেন্ডার লুপে পুনরায় ব্যবহার করা উচিত।
যদি supportsTextureUV XR_FALSE রিটার্ন করে, সিস্টেমটি জালের শীর্ষবিন্দুর জন্য টেক্সচার UV সমর্থন করে না, এবং সেইজন্য xrGetHandMeshANDROID কল করার সময় একটি অ্যাপ্লিকেশন XrHandMeshANDROID::textureUVs NULL পাবে।
যদি supportsVertexNormal XR_FALSE রিটার্ন করে, সিস্টেমটি জালের শীর্ষবিন্দুর জন্য ভার্টেক্স নরমাল সমর্থন করে না, এবং তাই xrGetHandMeshANDROID কল করার সময় একটি অ্যাপ্লিকেশন XrHandMeshANDROID::normals NULL পাবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই XrSystemHandMeshTrackingPropertiesANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_SYSTEM_HAND_MESH_TRACKING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
একটি হ্যান্ড মেশ ট্র্যাকার হ্যান্ডেল তৈরি করুন
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 ফাংশন ব্যবহার করে হ্যান্ডেলটি ধ্বংস করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই xrCreateHandMeshTrackerANDROID কল করার আগে সক্রিয় করতে হবে -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে -
createInfoঅবশ্যই একটি বৈধ XrHandMeshTrackerCreateInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে -
handMeshTrackerঅবশ্যই একটি XrHandMeshTrackerANDROID হ্যান্ডেলের একটি পয়েন্টার হতে হবে
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FEATURE_UNSUPPORTED -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_SESSION_LOST -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_LIMIT_REACHED
XrHandMeshTrackerCreateInfoANDROID কাঠামো একটি XrHandMeshTrackerANDROID হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।
typedef struct XrHandMeshTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
} XrHandMeshTrackerCreateInfoANDROID;
সদস্য বিবরণ
-
typeহল এই কাঠামোর XrStructureType । -
nextহলNULLবা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই XrHandMeshTrackerCreateInfoANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_HAND_MESH_TRACKER_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে
xrDestroyHandMeshTrackerANDROID ফাংশন handMeshTracker এবং অন্তর্নিহিত সংস্থানগুলি প্রকাশ করে যখন হ্যান্ড মেশ ট্র্যাকিং অভিজ্ঞতাগুলি শেষ হয়।
XrResult xrDestroyHandMeshTrackerANDROID(
XrHandMeshTrackerANDROID handMeshTracker);
পরামিতি বিবরণ
-
handMeshTrackerহল একটি XrHandMeshTrackerANDROID পূর্বে xrCreateHandMeshTrackerANDROID দ্বারা তৈরি৷
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই xrDestroyHandMeshTrackerANDROID কল করার আগে সক্রিয় করতে হবে -
handMeshTrackerঅবশ্যই একটি বৈধ XrHandMeshTrackerANDROID হ্যান্ডেল হতে হবে৷
থ্রেড নিরাপত্তা
-
handMeshTrackerএ অ্যাক্সেস এবং যেকোনো শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_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-এ কল করা উচিত ।
প্রতিটি ফ্রেমে xrGetHandMeshANDROID কল করার সময় একটি অ্যাপ্লিকেশনকে হ্যান্ড মেশ বাফার অ্যাক্সেস করতে XrHandMeshANDROID::indexCount এবং XrHandMeshANDROID::vertexCount ব্যবহার করা উচিত এবং তাদের রেন্ডার লুপে পুনরায় ব্যবহার করা উচিত।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই xrGetHandMeshANDROID কল করার আগে সক্রিয় করতে হবে -
handMeshTrackerঅবশ্যই একটি বৈধ XrHandMeshTrackerANDROID হ্যান্ডেল হতে হবে৷ -
getInfoঅবশ্যই একটি বৈধ XrHandMeshGetInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে -
handMeshesঅবশ্যই একটি XrHandTrackingMeshesANDROID কাঠামোর একটি নির্দেশক হতে হবে৷
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_SESSION_LOST -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_SIZE_INSUFFICIENT -
XR_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যে সময়টি বর্ণনা করে যে সময়ে অ্যাপ্লিকেশনটি হ্যান্ড মেশকে জিজ্ঞাসা করতে চায়।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই XrHandMeshGetInfoANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_HAND_MESH_GET_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
baseSpaceঅবশ্যই একটি বৈধ XrSpace হ্যান্ডেল হতে হবে
XrHandTrackingMeshesANDROID গঠনে উভয় হাতের জন্য জাল ডেটা রয়েছে।
typedef struct XrHandTrackingMeshesANDROID {
XrStructureType type;
void* next;
XrHandMeshANDROID leftHandMesh;
XrHandMeshANDROID rightHandMesh;
} XrHandTrackingMeshesANDROID;
সদস্য বিবরণ
-
typeহল এই কাঠামোর XrStructureType । -
nextহলNULLবা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি। -
leftHandMeshহল বাম হাতের XrHandMeshANDROID । -
rightHandMeshহল ডান হাতের XrHandMeshANDROID ।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই XrHandTrackingMeshesANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
typeXR_TYPE_HAND_TRACKING_MESHES_ANDROIDহতে হবে -
nextঅবশ্যইNULLবা একটি কাঠামোর চেইনের পরবর্তী কাঠামোর জন্য একটি বৈধ পয়েন্টার হতে হবে -
leftHandMeshএকটি বৈধ XrHandMeshANDROID কাঠামো হতে হবে -
rightHandMeshএকটি বৈধ XrHandMeshANDROID কাঠামো হতে হবে
একটি 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 উপস্থাপিত হয়, textureUVs এবং normals সহ, যদি সেগুলি সিস্টেম দ্বারা সমর্থিত হয়, তখন xrGetHandMeshANDROID ফাংশনকে দেওয়া XrHandMeshGetInfoANDROID::সময়ের সর্বশেষ ডেটাতে আপডেট করা হয়৷
XrHandMeshANDROID- এ ফিরে আসা হ্যান্ড মেশ বাফার দ্বারা নির্দেশিত মেমরি রানটাইমের মালিকানাধীন এবং অ্যাপ্লিকেশনের সাথে শেয়ার করা হয়েছে। XrHandMeshTrackerANDROID হ্যান্ডেলটি বৈধ থাকাকালীন xrBeginFrame- এ পরবর্তী কল না হওয়া পর্যন্ত মেমরিটি যেকোনো থ্রেড থেকে অ্যাক্সেস করা নিরাপদ।
-
indicesএবংtextureUVsদ্বারা নির্দেশিত মানগুলি গতিশীল নয় - পয়েন্টার এবং
positionsএবংnormalsদ্বারা নির্দেশিত মানগুলি গতিশীল যে উভয়ই xrBeginFrame- এ কলের মধ্যে পরিবর্তিত হতে পারে । অ্যাপ্লিকেশনটি শেষ ফ্রেমের পর থেকে মানগুলি পরিবর্তিত হয়েছে কিনা তা পরীক্ষা করতেdynamicLastUpdateTimeব্যবহার করতে পারে এবং কোনও পরিবর্তন না হলে অপ্রয়োজনীয় ডেটা প্রক্রিয়াকরণ এড়াতে পারে।
বৈধ ব্যবহার (অন্তর্নিহিত)
-
XR_ANDROID_hand_meshএক্সটেনশনটি অবশ্যই XrHandMeshANDROID ব্যবহার করার আগে সক্রিয় করতে হবে -
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 ধ্রুবক
XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_OBJECT_TYPE_HAND_MESH_TRACKER_ANDROID
XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:
-
XR_TYPE_SYSTEM_HAND_MESH_TRACKING_PROPERTIES_ANDROID -
XR_TYPE_HAND_MESH_TRACKER_CREATE_INFO_ANDROID -
XR_TYPE_HAND_MESH_GET_INFO_ANDROID -
XR_TYPE_HAND_TRACKING_MESHES_ANDROID
নতুন Enums
নতুন কাঠামো
- XrSystemHandMeshTracking PropertiesANDROID
- XrHandMeshTrackerCreateInfoANDROID
- XrHandMeshGetInfoANDROID
- XrHandMeshANDROID
- XrHandTrackingMeshesANDROID
নতুন ফাংশন
ইস্যু
সংস্করণ ইতিহাস
- সংশোধন 1, 2024-09-10 (লেভানা চেন)
- প্রাথমিক এক্সটেনশন বর্ণনা
OpenXR™ এবং OpenXR লোগো হল The Khronos Group Inc. এর মালিকানাধীন ট্রেডমার্ক এবং চীন, ইউরোপীয় ইউনিয়ন, জাপান এবং যুক্তরাজ্যে ট্রেডমার্ক হিসেবে নিবন্ধিত।