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 রিটার্ন করতে হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

কোয়েরি গভীরতা রেজোলিউশন

xrEnumerateDepthResolutionsANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

XrResult xrEnumerateDepthResolutionsANDROID(
    XrSession                                   session,
    uint32_t                                    resolutionCapacityInput,
    uint32_t*                                   resolutionCountOutput,
    XrDepthCameraResolutionANDROID*             resolutions);

প্যারামিটার বিবরণ

  • session হলো সেই XrSession যা সমর্থিত গভীরতার রেজোলিউশনগুলোকে তালিকাভুক্ত করে।
  • resolutionCapacityInput হলো resolutions ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পেতে ০ দিন।
  • resolutionCountOutput হলো লেখা uint64_t resolutions সংখ্যার একটি পয়েন্টার, অথবা resolutionCapacityInput অপর্যাপ্ত হলে প্রয়োজনীয় ক্যাপাসিটির একটি পয়েন্টার।
  • resolutions হলো XrDepthCameraResolutionANDROID- এর একটি অ্যারের পয়েন্টার, কিন্তু resolutionCapacityInput 0 হলে এটি NULL হতে পারে
  • প্রয়োজনীয় resolutions সাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

xrEnumerateDepthResolutionsANDROID বর্তমান সেশন দ্বারা সমর্থিত ডেপথ রেজোলিউশনগুলো তালিকাভুক্ত করে। ডেপথ রেজোলিউশনগুলো সর্বোচ্চ থেকে সর্বনিম্ন রানটাইম প্রেফারেন্স অনুসারে সাজানো উচিত । সর্বোত্তম পারফরম্যান্স এবং গুণমানের জন্য অ্যাপ্লিকেশনটির উচিত তার সমর্থিত সর্বোচ্চ প্রেফারেন্সটি ব্যবহার করা।

সেশনের জীবনকাল জুড়ে রানটাইমকে অবশ্যই এই এনুমারেশন থেকে অভিন্ন বাফার কন্টেন্ট ফেরত দিতে হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

  • xrEnumerateDepthResolutionsANDROID কল করার আগে XR_ANDROID_depth_texture এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।
  • session অবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে।
  • resolutionCountOutput অবশ্যই একটি uint32_t মানের পয়েন্টার হতে হবে।
  • যদি resolutionCapacityInput মান 0 না হয়, তাহলে resolutions অবশ্যই resolutionCapacityInput XrDepthCameraResolutionANDROID মানগুলোর একটি অ্যারের পয়েন্টার হতে হবে।

রিটার্ন কোড

সাফল্য

  • 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 তৈরির জন্য বিভিন্ন বিকল্প প্রদান করে।

বৈধ ব্যবহার (অন্তর্নিহিত)

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);

প্যারামিটার বিবরণ

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 মানের পয়েন্টার হতে হবে।
  • যদি depthImageCapacityInput 0 না হয়, তাহলে depthImages অবশ্যই depthImageCapacityInput XrDepthSwapchainImageANDROID স্ট্রাকচারগুলোর একটি অ্যারের পয়েন্টার হতে হবে।

রিটার্ন কোড

সাফল্য

  • 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 :: resolution XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID হয়, তাহলে ডেপথ ইমেজগুলোর আকার হবে 2*160*160*sizeof(float)
  • যদি XrDepthSwapchainCreateInfoANDROID :: createFlags XR_DEPTH_SWAPCHAIN_CREATE_RAW_DEPTH_IMAGE_BIT_ANDROID অন্তর্ভুক্ত না থাকে, তাহলে rawDepthImage এর মান অবশ্যই NULL হতে হবে।
  • যদি XrDepthSwapchainCreateInfoANDROID :: createFlags XR_DEPTH_SWAPCHAIN_CREATE_RAW_CONFIDENCE_IMAGE_BIT_ANDROID অন্তর্ভুক্ত না থাকে, তাহলে rawDepthConfidenceImage এর মান অবশ্যই NULL হতে হবে।
  • যদি XrDepthSwapchainCreateInfoANDROID :: createFlags XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_DEPTH_IMAGE_BIT_ANDROID অন্তর্ভুক্ত না থাকে, তাহলে smoothDepthImage এর মান অবশ্যই NULL হতে হবে।
  • যদি XrDepthSwapchainCreateInfoANDROID :: createFlags XR_DEPTH_SWAPCHAIN_CREATE_SMOOTH_CONFIDENCE_IMAGE_BIT_ANDROID অন্তর্ভুক্ত না থাকে, তাহলে smoothDepthImage এর মান অবশ্যই 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 এ ফেরত আসা পোজটি গণনা করতে ব্যবহৃত সময়কে নির্দিষ্ট করে। অ্যাপ্লিকেশনগুলোকে বর্তমান ফ্রেমের জন্য তাদের আনুমানিক প্রদর্শনের সময় পাস করতে হবে

বৈধ ব্যবহার (অন্তর্নিহিত)

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- এর একটি অ্যারে, প্রতিটি চোখের জন্য একটি করে, যেখানে ইনডেক্স ০ হলো বাম চোখ এবং ইনডেক্স ১ হলো ডান চোখ।

বৈধ ব্যবহার (অন্তর্নিহিত)

XrDepthViewANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:

typedef struct XrDepthViewANDROID {
    XrStructureType    type;
    const void*        next;
    XrFovf             fov;
    XrPosef            pose;
} XrDepthViewANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • fov হলো একটি XrFovf যা এই ভিউটি তৈরি করতে ব্যবহৃত ফিল্ড অফ ভিউ নির্দিষ্ট করে। ভিউটি কখনও আনুভূমিকভাবে বা উল্লম্বভাবে উল্টানো হয় না।
  • pose হলো একটি XrPosef যা সেই পোজকে নির্দিষ্ট করে যেখান থেকে ডেপথ ম্যাপটি রেন্ডার করা হয়েছিল। রেফারেন্স ফ্রেমটি XrDepthAcquireInfoANDROID- এ নির্দিষ্ট করা থাকে।

বৈধ ব্যবহার (অন্তর্নিহিত)

গভীরতা ট্র্যাকিংয়ের জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোডটি দেখায় কিভাবে ডেপথ ইমেজ সংগ্রহ করতে হয় এবং ডেপথ ভ্যালু ব্যবহার করে ডেপথ ইমেজের স্থানাঙ্ককে স্টেজ স্পেসে ম্যাপ করতে হয়।

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
    // ...
}

নতুন অবজেক্টের প্রকারভেদ

নতুন কমান্ড

নতুন কাঠামো

নতুন এনাম

নতুন বিটমাস্ক

নতুন এনাম ধ্রুবক

  • 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 (লেভানা চেন)

    • প্রাথমিক এক্সটেনশনের বিবরণ