XR_ANDROID_depth_texture
নাম স্ট্রিং
XR_ANDROID_depth_texture
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
৭০৩
সংশোধন
১
অনুমোদনের অবস্থা
অনুমোদিত নয়
এক্সটেনশন এবং সংস্করণ নির্ভরতা
সর্বশেষ সংশোধনের তারিখ
২০২৪-০৯-১১
আইপি স্ট্যাটাস
কোনো জ্ঞাত আইপি দাবি নেই।
অবদানকারীরা
সুশান্ত কুলকার্নি, গুগল
কেয়ার্ন ওভারটার্ফ, গুগল
স্পেন্সার কুইন, গুগল
লেভানা চেন, গুগল
সংক্ষিপ্ত বিবরণ
এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে হেডসেটের চারপাশের বাস্তব পরিবেশের ডেপথ ম্যাপ অনুরোধ করতে এবং তৈরির সময় সমর্থিত ডেপথ রেজোলিউশন সম্পর্কে জিজ্ঞাসা করতে সক্ষম করে।
এই এক্সটেনশনটির উদ্দেশ্য হলো অক্লুশন, হিট টেস্ট এবং অন্যান্য নির্দিষ্ট কাজের জন্য র এবং স্মুথ ডেপথ প্রকাশ করা, যে কাজগুলো সঠিক সিন জিওমেট্রি ব্যবহার করে, যেমন—নকল মুখ শনাক্তকরণ।
দ্রষ্টব্য
ডেপথ ম্যাপগুলো রানটাইম দ্বারা তৈরি করা হয় এবং XrDepthSwapchainANDROID ব্যবহার করে অ্যাপ্লিকেশনের সাথে শেয়ার করা হয়। অ্যাপ্লিকেশনের জীবনকাল জুড়ে রানটাইম অবশ্যই xrEnumerateDepthResolutionsANDROID- এর মাধ্যমে ফেরত আসা ডেপথ ইমেজের রেজোলিউশন পরিবর্তন করবে না।
অনুমতি
এই এক্সটেনশনটি ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) সংক্রান্ত উদ্বেগ প্রশমিত করার জন্য একটি ডাউনস্যাম্পল করা ডেপথ টেক্সচার প্রকাশ করে। অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির ম্যানিফেস্টে অবশ্যই android.permission.SCENE_UNDERSTANDING_FINE পারমিশনটি তালিকাভুক্ত থাকতে হবে, কারণ এই এক্সটেনশনটি পরিবেশের জ্যামিতি প্রকাশ করে। android.permission.SCENE_UNDERSTANDING_FINE পারমিশনটিকে একটি বিপজ্জনক পারমিশন হিসেবে বিবেচনা করা হয়। এই ফাংশনগুলি ব্যবহার করার জন্য অ্যাপ্লিকেশনটিকে রানটাইমে পারমিশনটির জন্য অনুরোধ করতে হবে :
(সুরক্ষার স্তর: বিপজ্জনক)
সিস্টেমের সক্ষমতা পরীক্ষা করুন
XrSystemDepthTrackingPropertiesANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrSystemDepthTrackingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsDepthTracking;
} XrSystemDepthTrackingPropertiesANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
supportsDepthTrackingহলো একটিXrBool32যা নির্দেশ করে বর্তমান সিস্টেমটি ডেপথ ট্র্যাকিং সমর্থন করে কিনা।
xrGetSystemProperties কল করার সময় XrSystemProperties-কে XrSystemDepthTrackingPropertiesANDROID স্ট্রাকচার দিয়ে বর্ধিত করার মাধ্যমে একটি অ্যাপ্লিকেশন সিস্টেমটি ডেপথ ট্র্যাকিং করতে সক্ষম কিনা তা যাচাই করতে পারে ।
যদি এবং শুধুমাত্র যদি কোনো রানটাইম supportsDepthTracking জন্য XR_FALSE রিটার্ন করে, তাহলে রানটাইমটিকে অবশ্যই xrCreateDepthSwapchainANDROID থেকে XR_ERROR_FEATURE_UNSUPPORTED রিটার্ন করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrSystemDepthTrackingPropertiesANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
কোয়েরি গভীরতা রেজোলিউশন
xrEnumerateDepthResolutionsANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateDepthResolutionsANDROID(
XrSession session,
uint32_t resolutionCapacityInput,
uint32_t* resolutionCountOutput,
XrDepthCameraResolutionANDROID* resolutions);
প্যারামিটার বিবরণ
-
sessionহলো সেই XrSession যা সমর্থিত গভীরতার রেজোলিউশনগুলোকে তালিকাভুক্ত করে। -
resolutionCapacityInputহলোresolutionsধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পেতে ০ দিন। -
resolutionCountOutputহলো লেখাuint64_tresolutionsসংখ্যার একটি পয়েন্টার, অথবাresolutionCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ক্যাপাসিটির একটি পয়েন্টার। -
resolutionsহলো XrDepthCameraResolutionANDROID- এর একটি অ্যারের পয়েন্টার, কিন্তুresolutionCapacityInput0হলে এটিNULLহতে পারে । - প্রয়োজনীয়
resolutionsসাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।
xrEnumerateDepthResolutionsANDROID বর্তমান সেশন দ্বারা সমর্থিত ডেপথ রেজোলিউশনগুলো তালিকাভুক্ত করে। ডেপথ রেজোলিউশনগুলো সর্বোচ্চ থেকে সর্বনিম্ন রানটাইম প্রেফারেন্স অনুসারে সাজানো উচিত । সর্বোত্তম পারফরম্যান্স এবং গুণমানের জন্য অ্যাপ্লিকেশনটির উচিত তার সমর্থিত সর্বোচ্চ প্রেফারেন্সটি ব্যবহার করা।
সেশনের জীবনকাল জুড়ে রানটাইমকে অবশ্যই এই এনুমারেশন থেকে অভিন্ন বাফার কন্টেন্ট ফেরত দিতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrEnumerateDepthResolutionsANDROID কল করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে। -
resolutionCountOutputঅবশ্যই একটিuint32_tমানের পয়েন্টার হতে হবে। - যদি
resolutionCapacityInputমান0না হয়, তাহলেresolutionsঅবশ্যইresolutionCapacityInputXrDepthCameraResolutionANDROID মানগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_SIZE_INSUFFICIENT -
XR_ERROR_VALIDATION_FAILURE
একটি XrDepthSwapchainANDROID তৈরি করার সময় XrDepthCameraResolutionANDROID enum-টি সমর্থিত ডেপথ রেজোলিউশনগুলো বর্ণনা করে।
typedef enum XrDepthCameraResolutionANDROID {
XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID = 0,
XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID = 1,
XR_DEPTH_CAMERA_RESOLUTION_320x320_ANDROID = 2,
XR_DEPTH_CAMERA_RESOLUTION_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrDepthCameraResolutionANDROID;
গণনাকারীর বিবরণ
-
XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID— ডেপথ এবং কনফিডেন্স ইমেজগুলোর রেজোলিউশন হলো ৮০x৮০। -
XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID— ডেপথ এবং কনফিডেন্স ইমেজগুলোর রেজোলিউশন হলো 160x160। -
XR_DEPTH_CAMERA_RESOLUTION_320x320_ANDROID— ডেপথ এবং কনফিডেন্স ইমেজগুলোর রেজোলিউশন হলো 320x320।
একটি ডেপথ সোয়াপচেইন তৈরি করুন
XR_DEFINE_HANDLE(XrDepthSwapchainANDROID)
XrDepthSwapchainANDROID হলো একটি ডেপথ সোয়াপচেইন হ্যান্ডেল।
xrCreateDepthSwapchainANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrCreateDepthSwapchainANDROID(
XrSession session,
const XrDepthSwapchainCreateInfoANDROID* createInfo,
XrDepthSwapchainANDROID* swapchain);
প্যারামিটার বিবরণ
-
sessionহলো সেই XrSession যা ডেপথ সোয়াপচেইন তৈরি করে। -
createInfoহলো XrDepthSwapchainCreateInfoANDROID স্ট্রাকচারের একটি পয়েন্টার, যেখানে সোয়াপচেইন তৈরি করার জন্য ব্যবহৃত প্যারামিটারগুলো থাকে। -
swapchainহলো এমন একটি হ্যান্ডেলের দিকে নির্দেশকারী পয়েন্টার, যেখানে তৈরি করা XrDepthSwapchainANDROID-টি ফেরত দেওয়া হয়।
অ্যাপ্লিকেশনটি xrCreateDepthSwapchainANDROID ফাংশনটি ব্যবহার করে একটি ডেপথ সোয়াপচেইন তৈরি করতে পারে , যা ডেপথ এবং কনফিডেন্স উভয় ইমেজই পরিচালনা করে।
- সিস্টেম ডেপথ ট্র্যাকিং সমর্থন না করলে রানটাইমকে অবশ্যই
XR_ERROR_FEATURE_UNSUPPORTEDরিটার্ন করতে হবে। - যদি কলিং অ্যাপকে প্রয়োজনীয় অনুমতি প্রদান করা না হয়ে থাকে, তাহলে রানটাইমকে অবশ্যই
XR_ERROR_PERMISSION_INSUFFICIENTরিটার্ন করতে হবে। - XrDepthSwapchainCreateInfoANDROID- এ নির্দিষ্ট করা ডেপথ রেজোলিউশনটি অসমর্থিত হলে রানটাইমকে অবশ্যই
XR_ERROR_VALIDATION_FAILUREরিটার্ন করতে হবে। - সোয়াপচেইন তৈরির সময় `
createInfoএর জন্য সংশ্লিষ্ট বিটগুলো সেট করা থাকলেই কেবল রানটাইম ডেপথ কনফিডেন্স ইমেজ তৈরি করবে ।
ফেরত আসা ডেপথ সোয়াপচেইন হ্যান্ডেলটি পরবর্তীতে এপিআই কলে ব্যবহার করা যেতে পারে । XrDepthSwapchainANDROID হ্যান্ডেলটি অবশ্যই xrDestroyDepthSwapchainANDROID ফাংশনের মাধ্যমে অবশেষে মুক্ত করতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrCreateDepthSwapchainANDROID কল করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
sessionঅবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে। -
createInfoঅবশ্যই একটি বৈধ XrDepthSwapchainCreateInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে। -
swapchainঅবশ্যই একটি XrDepthSwapchainANDROID হ্যান্ডেলের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FEATURE_UNSUPPORTED -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_OUT_OF_MEMORY -
XR_ERROR_PERMISSION_INSUFFICIENT -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST
XrDepthSwapchainCreateInfoANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrDepthSwapchainCreateInfoANDROID {
XrStructureType type;
const void* next;
XrDepthCameraResolutionANDROID resolution;
XrDepthSwapchainCreateFlagsANDROID createFlags;
} XrDepthSwapchainCreateInfoANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
resolutionহলো সেই XrDepthCameraResolutionANDROID , যা দিয়ে ডেপথ এবং কনফিডেন্স টেক্সচারগুলো তৈরি করা হয়। -
createFlagsহলো এক বা একাধিক XrDepthSwapchainCreateFlagsANDROID ।
xrCreateDepthSwapchainANDROID- এ পাস করা হলে, XrDepthSwapchainCreateInfoANDROID স্ট্রাকচারটি XrDepthSwapchainANDROID তৈরির জন্য বিভিন্ন বিকল্প প্রদান করে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrDepthSwapchainCreateInfoANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
resolutionঅবশ্যই একটি বৈধ XrDepthCameraResolutionANDROID মান হতে হবে। -
createFlagsঅবশ্যই XrDepthSwapchainCreateFlagBitsANDROID মানগুলির একটি বৈধ সংমিশ্রণ হতে হবে। -
createFlagsঅবশ্যই0হবে না
XrDepthSwapchainCreateFlagsANDROID, XrDepthSwapchainANDROID- এর তৈরির বিকল্পগুলি নির্দিষ্ট করে।
typedef XrFlags64 XrDepthSwapchainCreateFlagsANDROID;
XrDepthSwapchainCreateFlagsANDROID- এর জন্য বৈধ বিটগুলি XrDepthSwapchainCreateFlagBitsANDROID দ্বারা সংজ্ঞায়িত করা হয়, যা নিম্নরূপে নির্দিষ্ট করা হয়েছে:
// Flag bits for XrDepthSwapchainCreateFlagsANDROID
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID = 0x00000001;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID = 0x00000002;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID = 0x00000004;
static const XrDepthSwapchainCreateFlagsANDROID XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID = 0x00000008;
পতাকার বিবরণ
-
XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID— নির্দেশ করে যে সোয়াপচেইনটি স্মুথ ডেপথ ইমেজ প্রদান করবে। -
XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID— নির্দেশ করে যে সোয়াপচেইনটি মসৃণ ডেপথ কনফিডেন্স ইমেজ প্রদান করবে। -
XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID— এটি নির্দেশ করে যে সোয়াপচেইনটি র ডেপথ ইমেজ সরবরাহ করবে। -
XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID— এটি নির্দেশ করে যে সোয়াপচেইনটি র ডেপথ কনফিডেন্স ইমেজ সরবরাহ করবে।
xrDestroyDepthSwapchainANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrDestroyDepthSwapchainANDROID(
XrDepthSwapchainANDROID swapchain);
প্যারামিটার বিবরণ
-
swapchainহলো একটি XrDepthSwapchainANDROID হ্যান্ডেল যা পূর্বে xrCreateDepthSwapchainANDROID দ্বারা তৈরি করা হয়েছিল।
xrDestroyDepthSwapchainANDROID ফাংশনটি ডেপথ সোয়াপচেইন ধ্বংস করে। এই কলের পর রানটাইম সংশ্লিষ্ট সমস্ত মেমরি এবং রিসোর্স মুক্ত করে দিতে পারে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrDestroyDepthSwapchainANDROID কল করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
swapchainঅবশ্যই একটি বৈধ XrDepthSwapchainANDROID হ্যান্ডেল হতে হবে।
থ্রেড নিরাপত্তা
-
swapchainএবং এর যেকোনো চাইল্ড হ্যান্ডেলে অ্যাক্সেস অবশ্যই বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে।
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID
গভীরতার টেক্সচার অ্যাক্সেস করুন
xrEnumerateDepthSwapchainImagesANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateDepthSwapchainImagesANDROID(
XrDepthSwapchainANDROID depthSwapchain,
uint32_t depthImageCapacityInput,
uint32_t* depthImageCountOutput,
XrDepthSwapchainImageANDROID* depthImages);
প্যারামিটার বিবরণ
-
depthSwapchainহলো XrDepthSwapchainANDROID , যেখান থেকে ছবি সংগ্রহ করা হয়। -
depthImageCapacityInputহলোdepthImagesঅ্যারের ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পুনরুদ্ধারের অনুরোধ বোঝাতে এর মান ০ হবে। -
depthImageCountOutputহলো লিখিতdepthImagesসংখ্যার একটি পয়েন্টার, অথবাdepthImageCapacityInputঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতার একটি পয়েন্টার। -
depthImagesহলো XrDepthSwapchainImageANDROID স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার।depthImageCapacityInputমান 0 হলে এটিNULLহতে পারে । - প্রয়োজনীয়
depthImagesআকার নির্ধারণের বিস্তারিত বিবরণের জন্য Buffer Size Parameters বিভাগটি দেখুন।
xrEnumerateDepthSwapchainImagesANDROID ফাংশনটি XrDepthSwapchainImageANDROID স্ট্রাকচারগুলোর একটি অ্যারে পূরণ করে। রিসোর্সগুলো অবশ্যই ধ্রুবক এবং XrDepthSwapchainANDROID- এর জীবনকাল পর্যন্ত বৈধ হতে হবে। এই ফাংশনটি xrEnumerateSwapchainImages- এর অনুরূপভাবে কাজ করে।
সোয়াপচেইনের জীবনকাল জুড়ে রানটাইমকে অবশ্যই এই এনুমারেশন থেকে সর্বদা অভিন্ন বাফার কন্টেন্ট ফেরত দিতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrEnumerateDepthSwapchainImagesANDROID কল করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
depthSwapchainঅবশ্যই একটি বৈধ XrDepthSwapchainANDROID হ্যান্ডেল হতে হবে। -
depthImageCountOutputঅবশ্যই একটিuint32_tমানের পয়েন্টার হতে হবে। - যদি
depthImageCapacityInput0না হয়, তাহলেdepthImagesঅবশ্যইdepthImageCapacityInputXrDepthSwapchainImageANDROID স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_SIZE_INSUFFICIENT -
XR_ERROR_VALIDATION_FAILURE
XrDepthSwapchainImageANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrDepthSwapchainImageANDROID {
XrStructureType type;
void* next;
const float* rawDepthImage;
const uint8_t* rawDepthConfidenceImage;
const float* smoothDepthImage;
const uint8_t* smoothDepthConfidenceImage;
} XrDepthSwapchainImageANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
rawDepthImageহলোNULLঅথবা রানটাইম দ্বারা বরাদ্দকৃত বাম এবং ডান উভয় ভিউয়ের জন্য র' ডেপথ ইমেজের পয়েন্টার। মানগুলোর একক হলো মিটার। বিশেষ মান:0.0র' ডেপথ-এ একটি অবৈধ বা খালি ডেপথ পিক্সেল নির্দেশ করে,Infএমন একটি জ্ঞাত ডেপথ নির্দেশ করে যা কার্যত অসীম দূরত্বে অবস্থিত। -
rawDepthConfidenceImageহলোNULLঅথবা রানটাইম দ্বারা বরাদ্দকৃত বাম এবং ডান উভয় ভিউয়ের জন্য কাঁচা ডেপথ কনফিডেন্স ইমেজের পয়েন্টার। -
smoothDepthImageহলোNULLঅথবা রানটাইম দ্বারা বরাদ্দকৃত বাম এবং ডান উভয় ভিউয়ের জন্য স্মুথ ডেপথ ইমেজের পয়েন্টার। মানগুলোর একক হলো মিটার। বিশেষ মান:0.0স্মুথ ডেপথের মধ্যে একটি অবৈধ বা খালি ডেপথ পিক্সেল নির্দেশ করে,Infএকটি জ্ঞাত ডেপথ নির্দেশ করে যা কার্যত অসীম দূরত্বে অবস্থিত। -
smoothDepthConfidenceImageহলোNULLঅথবা রানটাইম দ্বারা বরাদ্দকৃত বাম এবং ডান উভয় ভিউয়ের জন্য স্মুথ ডেপথ কনফিডেন্স ইমেজের পয়েন্টার।
ইমেজ বাফার পয়েন্টারগুলো শুধুমাত্র সোয়াপচেইনের জীবনকাল পর্যন্ত বৈধ থাকবে। সোয়াপচেইনটি ধ্বংস হয়ে গেলে, পয়েন্টারগুলোকে ড্যাংলিং হিসেবে গণ্য করা হবে।
XrDepthSwapchainImageANDROID , xrCreateDepthSwapchainANDROID কল করার সময় XrDepthSwapchainCreateInfoANDROID :: resolution এবং XrDepthSwapchainCreateInfoANDROID :: createFlags এ বর্ণিত পদ্ধতি অনুসারে বরাদ্দ করা একটি পাঠযোগ্য XrDepthSwapchainANDROID থেকে প্রাপ্ত ডেপথ ইমেজগুলোকে উপস্থাপন করে। প্রতিটি ডেপথ ইমেজের জন্য:
- ইমেজের মানগুলো মেমোরিতে রো-মেজর অর্ডারে সাজানো থাকে এবং সারিগুলোর মধ্যে কোনো প্যাডিং থাকে না।
- প্রথম মানটি হলো উপরের বাম দিকের এবং শেষ মানটি হলো নিচের ডান দিকের।
- নির্দেশিত মেমোরির আকার xrEnumerateDepthSwapchainImagesANDROID- এর মান দ্বারা নির্ধারিত হয় এবং xrCreateDepthSwapchainCreateInfoANDROID ::
resolutionকল করার সময় এটি সেট করা হয়। উদাহরণস্বরূপ, যদি XrDepthSwapchainCreateInfoANDROID ::resolutionXR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROIDহয়, তাহলে ডেপথ ইমেজগুলোর আকার হবে2*160*160*sizeof(float)। - যদি XrDepthSwapchainCreateInfoANDROID ::
createFlagsXR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROIDঅন্তর্ভুক্ত না থাকে, তাহলেrawDepthImageএর মান অবশ্যইNULLহতে হবে। - যদি XrDepthSwapchainCreateInfoANDROID ::
createFlagsXR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROIDঅন্তর্ভুক্ত না থাকে, তাহলেrawDepthConfidenceImageএর মান অবশ্যইNULLহতে হবে। - যদি XrDepthSwapchainCreateInfoANDROID ::
createFlagsXR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROIDঅন্তর্ভুক্ত না থাকে, তাহলেsmoothDepthImageএর মান অবশ্যইNULLহতে হবে। - যদি XrDepthSwapchainCreateInfoANDROID ::
createFlagsXR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROIDঅন্তর্ভুক্ত না থাকে, তাহলেsmoothDepthImageএর মান অবশ্যইNULLহতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrDepthSwapchainImageANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। typeঅবশ্যইXR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROIDহতে হবেnextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
xrAcquireDepthSwapchainImagesANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrAcquireDepthSwapchainImagesANDROID(
XrDepthSwapchainANDROID depthSwapchain,
const XrDepthAcquireInfoANDROID* acquireInfo,
XrDepthAcquireResultANDROID* acquireResult);
প্যারামিটার বিবরণ
-
depthSwapchainহলো ডেপথ ইমেজের জন্য একটি XrDepthSwapchainANDROID হ্যান্ডেল। -
acquireInfoহলো একটি XrDepthAcquireInfoANDROID , যাতে ডেপথ ইমেজটি কীভাবে সংগ্রহ করতে হবে সে সম্পর্কিত তথ্য থাকে। -
acquireResultহলো ফেরত আসা XrDepthAcquireResultANDROID, যা সংগৃহীত ডেপথ ইমেজ সম্পর্কিত তথ্য ধারণ করে।
অ্যাপ্লিকেশনগুলি xrAcquireDepthSwapchainImagesANDROID ফাংশনটি ব্যবহার করে সর্বশেষ উপলব্ধ সোয়াপচেইন ইমেজ ইনডেক্স, অর্থাৎ XrDepthAcquireResultANDROID :: acquiredIndex , xrEnumerateDepthSwapchainImagesANDROID দ্বারা গণনাকৃত XrDepthSwapchainImageANDROID অ্যারেতে সংগ্রহ করতে পারে। ফেরত আসা XrDepthAcquireResultANDROID-এ ডেপথ ডেটা ব্যাখ্যা করার জন্য প্রয়োজনীয় ফিল্ড অফ ভিউ এবং পোজের মতো অন্যান্য তথ্যও থাকে। xrAcquireDepthSwapchainImagesANDROID- এর পরবর্তী কল না করা পর্যন্ত ইমেজ অ্যারের সংগৃহীত স্লট থেকে ডেটা পড়া নিরাপদ।
একটি সেশনের মধ্যে সংশ্লিষ্ট xrBeginFrame এবং xrEndFrame কলগুলোর যেকোনো জোড়ার মাঝে xrAcquireDepthSwapchainImagesANDROID- এর একটির বেশি কল করা যাবে না।
- যদি রানটাইমটি পূর্বে অর্জিত সোয়াপচেইন ইমেজগুলো তখনও ব্যবহার করতে থাকে, তাহলে রানটাইমটি ব্লক হয়ে যেতে পারে ।
- যদি xrBeginFrame-এর আগে অথবা xrEndFrame-এর পরে xrAcquireDepthSwapchainImagesANDROID কল করা হয়, তাহলে রানটাইমকে অবশ্যই
XR_ERROR_CALL_ORDER_INVALIDরিটার্ন করতে হবে। - যদি প্রতি ফ্রেমে xrAcquireDepthSwapchainImagesANDROID একাধিকবার কল করা হয় — অর্থাৎ, একটি চলমান সেশনে, এমন একটি xrBeginFrame কলের পরে যার সাথে কোনো xrEndFrame যুক্ত নেই — তাহলে রানটাইমকে অবশ্যই
XR_ERROR_LIMIT_REACHEDরিটার্ন করতে হবে। - পরিবেশের গভীরতার ডেটা এখনও উপলব্ধ না হলে রানটাইম
XR_ERROR_DEPTH_NOT_AVAILABLE_ANDROIDরিটার্ন করতে পারে । এমনটি ঘটলে, অ্যাপ্লিকেশনটির উচিত পরবর্তী কোনো ফ্রেমে আবার xrAcquireDepthSwapchainImagesANDROID কল করা।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrAcquireDepthSwapchainImagesANDROID কল করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
depthSwapchainঅবশ্যই একটি বৈধ XrDepthSwapchainANDROID হ্যান্ডেল হতে হবে। -
acquireInfoঅবশ্যই একটি বৈধ XrDepthAcquireInfoANDROID স্ট্রাকচারের পয়েন্টার হতে হবে। -
acquireResultঅবশ্যই একটি XrDepthAcquireResultANDROID স্ট্রাকচারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS -
XR_SESSION_LOSS_PENDING
-
XR_ERROR_CALL_ORDER_INVALID -
XR_ERROR_DEPTH_NOT_AVAILABLE_ANDROID -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_LIMIT_REACHED -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SESSION_LOST -
XR_ERROR_TIME_INVALID -
XR_ERROR_VALIDATION_FAILURE
XrDepthAcquireInfoANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrDepthAcquireInfoANDROID {
XrStructureType type;
const void* next;
XrSpace space;
XrTime displayTime;
} XrDepthAcquireInfoANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
spaceহলো একটি XrSpace যা XrDepthAcquireResultANDROID ::viewsএ প্রত্যাবর্তিত পোজের রেফারেন্স ফ্রেমকে সংজ্ঞায়িত করে। -
displayTimeহলো একটিXrTimeযা XrDepthAcquireResultANDROID ::viewsএ ফেরত আসা পোজটি গণনা করতে ব্যবহৃত সময়কে নির্দিষ্ট করে। অ্যাপ্লিকেশনগুলোকে বর্তমান ফ্রেমের জন্য তাদের আনুমানিক প্রদর্শনের সময় পাস করতে হবে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrDepthAcquireInfoANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_DEPTH_ACQUIRE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
spaceঅবশ্যই একটি বৈধ XrSpace হ্যান্ডেল হতে হবে।
XrDepthAcquireResultANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
typedef struct XrDepthAcquireResultANDROID {
XrStructureType type;
const void* next;
uint32_t acquiredIndex;
XrTime exposureTimestamp;
XrDepthViewANDROID views[2];
} XrDepthAcquireResultANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
acquiredIndexহলো xrEnumerateDepthSwapchainImagesANDROID দ্বারা গণনাকৃত XrDepthSwapchainImageANDROID অ্যারেতে অর্জিত টেক্সচারের সূচক। -
exposureTimestampহলোXrTimeযা সেই সময়কে নির্দেশ করে যখন ডেপথ ম্যাপটি ধারণ করা হয়েছিল। -
viewsহলো দুটি XrDepthViewANDROID- এর একটি অ্যারে, প্রতিটি চোখের জন্য একটি করে, যেখানে ইনডেক্স ০ হলো বাম চোখ এবং ইনডেক্স ১ হলো ডান চোখ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrDepthAcquireResultANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
viewsযেকোনো উপাদান অবশ্যই একটি বৈধ XrDepthViewANDROID কাঠামো হতে হবে।
XrDepthViewANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:
typedef struct XrDepthViewANDROID {
XrStructureType type;
const void* next;
XrFovf fov;
XrPosef pose;
} XrDepthViewANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
fovহলো একটি XrFovf যা এই ভিউটি তৈরি করতে ব্যবহৃত ফিল্ড অফ ভিউ নির্দিষ্ট করে। ভিউটি কখনও আনুভূমিকভাবে বা উল্লম্বভাবে উল্টানো হয় না। -
poseহলো একটি XrPosef যা সেই পোজকে নির্দিষ্ট করে যেখান থেকে ডেপথ ম্যাপটি রেন্ডার করা হয়েছিল। রেফারেন্স ফ্রেমটি XrDepthAcquireInfoANDROID- এ নির্দিষ্ট করা থাকে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrDepthViewANDROID ব্যবহার করার আগে
XR_ANDROID_depth_textureএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_DEPTH_VIEW_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে।
গভীরতা ট্র্যাকিংয়ের জন্য উদাহরণ কোড
নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে ডেপথ ইমেজ সংগ্রহ করতে হয় এবং ডেপথ ভ্যালু ব্যবহার করে ডেপথ ইমেজের স্থানাঙ্ককে স্টেজ স্পেসে ম্যাপ করতে হয়।
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized
XrSpace stageSpace; // space created for XR_REFERENCE_SPACE_TYPE_STAGE.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateDepthSwapchainANDROID xrCreateDepthSwapchainANDROID; // previously initialized
PFN_xrDestroyDepthSwapchainANDROID xrDestroyDepthSwapchainANDROID; // previously initialized
PFN_xrEnumerateDepthSwapchainImagesANDROID xrEnumerateDepthSwapchainImagesANDROID; // previously initialized
PFN_xrEnumerateDepthResolutionsANDROID xrEnumerateDepthResolutionsANDROID; // previously initialized
PFN_xrAcquireDepthSwapchainImagesANDROID xrAcquireDepthSwapchainImagesANDROID; // previously initialized
float tanf(float);
// Inspect system capability
XrSystemProperties properties{XR_TYPE_SYSTEM_PROPERTIES};
XrSystemDepthTrackingPropertiesANDROID depthTrackingProperties{XR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROID};
properties.next = &depthTrackingProperties;
CHK_XR(xrGetSystemProperties(instance, systemId, &properties));
if (!depthTrackingProperties.supportsDepthTracking) {
// depth tracking is not supported.
return;
}
// Query the supported depth resolution.
XrDepthCameraResolutionANDROID supportedDepthResolution;
uint32_t supportedResolutionCount = 0;
CHK_XR(xrEnumerateDepthResolutionsANDROID(
session, 1, &supportedResolutionCount, &supportedDepthResolution));
// Define metadata to access the raw and smooth depth along with confidences.
XrDepthSwapchainCreateInfoANDROID swapchainCreateInfo = {
.type = XR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROID,
.next = nullptr,
// Use the resolution supported by the runtime.
.resolution = supportedDepthResolution,
.createFlags =
XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID |
XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID |
XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID |
XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID,
};
XrDepthSwapchainANDROID depthSwapchain;
CHK_XR(xrCreateDepthSwapchainANDROID(
session, &swapchainCreateInfo, &depthSwapchain));
// Enumerate depth images.
uint32_t imageCountOutput = 0;
CHK_XR(xrEnumerateDepthSwapchainImagesANDROID(
depthSwapchain, 0, &imageCountOutput, nullptr));
std::vector<XrDepthSwapchainImageANDROID> depthImages(imageCountOutput);
for (int i = 0; i < imageCountOutput; i++) {
depthImages[i].type = XR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROID;
}
CHK_XR(xrEnumerateDepthSwapchainImagesANDROID(
depthSwapchain, imageCountOutput, &imageCountOutput, depthImages.data()));
while (1) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrDepthAcquireInfoANDROID acquireInfo = {
.type = XR_TYPE_DEPTH_ACQUIRE_INFO_ANDROID,
.space = stageSpace,
.displayTime = time
};
XrDepthAcquireResultANDROID acquireResult = {
.type = XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID,
};
CHK_XR(xrAcquireDepthSwapchainImagesANDROID(
depthSwapchain, &acquireInfo, &acquireResult));
// Each value in a depth image corresponds to a point in the real world.
// The sample code below shows how to find the stageSpace position of
// the point corresponding to a particular value in the depth image.
// For this sample code, assume we are using a right handed coordinate system
// with +X to the right, +Y up and -Z forward.
XrDepthSwapchainImageANDROID *image =
&depthImages[acquireResult.acquiredIndex];
// Assume supported resolution is XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID.
const int imageResolution = 160;
int imageY = 80; // value in [0, imageResolution)
int imageX = 80; // value in [0, imageResolution)
// Get depth value from left eye.
// A right depth value is obtained with the following expression:
// depthR = image->rawDepthImage[imageResolution*imageResolution+i*imageResolution+j]
float depthL = image->rawDepthImage[imageY*imageResolution + imageX];
XrDepthViewANDROID viewL = acquireResult.views[0];
float tanL = tanf(viewL.fov.angleLeft);
float tanR = tanf(viewL.fov.angleRight);
float tanU = tanf(viewL.fov.angleUp);
float tanD = tanf(viewL.fov.angleDown);
float s = (imageX + 0.5f) / (float)imageResolution;
float t = (imageY + 0.5f) / (float)imageResolution;
// Calculate the depth camera space position of the point
// corresponding to this depth value.
XrVector3f posInCameraSpace;
posInCameraSpace.z = -depthL;
posInCameraSpace.x = (tanL + (tanR - tanL)*s)*depthL;
posInCameraSpace.y = (tanD + (tanU - tanD)*t)*depthL;
XrPosef depthCameraPoseL = viewL.pose;
// Transform posInCameraSpace by depthCameraPoseL
// ...
// Finish frame loop
// ...
}
নতুন অবজেক্টের প্রকারভেদ
নতুন কমান্ড
- xrAcquireDepthSwapchainImagesANDROID
- xrCreateDepthSwapchainANDROID
- xrDestroyDepthSwapchainANDROID
- xrEnumerateDepthResolutionsANDROID
- xrEnumerateDepthSwapchainImagesANDROID
নতুন কাঠামো
- XrDepthAcquireInfoANDROID
- XrDepthAcquireResultANDROID
- XrDepthSwapchainCreateInfoANDROID
- XrDepthSwapchainImageANDROID
- XrDepthViewANDROID
XrSystemProperties-এর সম্প্রসারণ :
নতুন এনাম
নতুন বিটমাস্ক
নতুন এনাম ধ্রুবক
-
XR_ANDROID_DEPTH_TEXTURE_EXTENSION_NAME -
XR_ANDROID_depth_texture_SPEC_VERSION XrObjectType- এর সম্প্রসারণ:
-
XR_OBJECT_TYPE_DEPTH_SWAPCHAIN_ANDROID
-
XrResult- এর সম্প্রসারণ:
-
XR_ERROR_DEPTH_NOT_AVAILABLE_ANDROID
-
XrStructureType সম্প্রসারণ :
-
XR_TYPE_DEPTH_ACQUIRE_INFO_ANDROID -
XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID -
XR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROID -
XR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROID -
XR_TYPE_DEPTH_VIEW_ANDROID -
XR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROID
-
সমস্যা
সংস্করণ ইতিহাস
রিভিশন 1, 2024-09-09 (লেভানা চেন)
- প্রাথমিক এক্সটেনশনের বিবরণ