XR_ANDROID_depth_texture OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_depth_texture

এক্সটেনশন প্রকার

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

703

রিভিশন

1

এক্সটেনশন এবং সংস্করণ নির্ভরতা

OpenXR 1.0

সর্বশেষ সংশোধিত তারিখ

2024-09-11

আইপি স্ট্যাটাস

কোন পরিচিত আইপি দাবি.

অবদানকারী

সুশান্ত কুলকার্নি, গুগল

কেয়ার্ন ওভারটার্ফ, গুগল

স্পেন্সার কুইন, গুগল

লেভানা চেন, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশনটিকে হেডসেটের চারপাশের বাস্তব-বিশ্বের পরিবেশের গভীরতার মানচিত্র এবং সৃষ্টির সময় সমর্থিত গভীরতার রেজোলিউশনের জন্য অনুরোধ করতে দেয়।

এই এক্সটেনশনটি অক্লুশন, হিট টেস্ট এবং সঠিক দৃশ্যের জ্যামিতি ব্যবহার করে এমন অন্যান্য নির্দিষ্ট কাজের জন্য কাঁচা এবং মসৃণ গভীরতা প্রকাশ করার উদ্দেশ্যে করা হয়েছে, উদাহরণস্বরূপ, নকল মুখ সনাক্তকরণ।

সিস্টেমের ক্ষমতা পরিদর্শন করুন

XrSystemDepthTrackingPropertiesANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSystemDepthTrackingPropertiesANDROID {
    XrStructureType    type;
    const void*        next;
    XrBool32           supportsDepthTracking;
} XrSystemDepthTrackingPropertiesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • supportsDepthTracking হল একটি XrBool32 যা নির্দেশ করে যে বর্তমান সিস্টেম ডেপথ ট্র্যাকিং সমর্থন করে কিনা।

একটি অ্যাপ্লিকেশন xrGetSystemProperties কল করার সময় XrSystemDepthTrackingPropertiesANDROID কাঠামোর সাথে XrSystemProperties প্রসারিত করে সিস্টেমটি গভীরতা ট্র্যাকিং করতে সক্ষম কিনা তা পরীক্ষা করতে পারে

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

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

xrEnumerateDepthResolutionsANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

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

পরামিতি বিবরণ

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

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

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

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

রিটার্ন কোড

সফলতা

  • 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_SIZE_INSUFFICIENT

XrDepthCameraResolutionANDROID enum একটি XrDepthSwapchainANDROID তৈরি করার সময় সমর্থিত গভীরতার রেজোলিউশন বর্ণনা করে।

typedef enum XrDepthCameraResolutionANDROID {
    XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID = 0,
    XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID = 1,
    XR_DEPTH_CAMERA_RESOLUTION_320x320_ANDROID = 2
    } XrDepthCameraResolutionANDROID;

অসংখ্য বর্ণনা

  • XR_DEPTH_CAMERA_RESOLUTION_80x80_ANDROID — গভীরতা এবং আত্মবিশ্বাসের চিত্রগুলির রেজোলিউশন হল 80x80৷
  • 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 ফাংশন ব্যবহার করতে পারে যা গভীরতা এবং আত্মবিশ্বাসের ছবি উভয়ই পরিচালনা করে।

ফিরে আসা গভীরতা সোয়াপচেন হ্যান্ডেল পরবর্তীতে API কলগুলিতে ব্যবহার করা হতে পারেXrDepthSwapchainANDROID হ্যান্ডেলটি অবশ্যই xrDestroyDepthSwapchainANDROID ফাংশন ব্যবহার করে মুক্ত করতে হবে

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

  • xrCreateDepthSwapchainANDROID কল করার আগে XR_ANDROID_depth_texture এক্সটেনশনটি অবশ্যই সক্রিয় করা উচিত
  • session অবশ্যই একটি বৈধ XrSession হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি বৈধ XrDepthSwapchainCreateInfoANDROID কাঠামোর একটি নির্দেশক হতে হবে
  • swapchain অবশ্যই একটি XrDepthSwapchainANDROID হ্যান্ডেলের একটি পয়েন্টার হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • 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

XrDepthSwapchainCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrDepthSwapchainCreateInfoANDROID {
    XrStructureType                       type;
    const void*                           next;
    XrDepthCameraResolutionANDROID        resolution;
    XrDepthSwapchainCreateFlagsANDROID    createFlags;
} XrDepthSwapchainCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • resolution হল XrDepthCameraResolutionANDROID যেটিতে গভীরতা এবং আত্মবিশ্বাসের টেক্সচার তৈরি করা উচিত।
  • createFlags হল এক বা একাধিক XrDepthSwapchainCreateFlagsANDROID

XrDepthSwapchainCreateInfoANDROID কাঠামো XrDepthSwapchainANDROID- এর জন্য তৈরির বিকল্পগুলি প্রদান করে যখন xrCreateDepthSwapchainANDROID- এ পাস করা হয়।

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

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;

xrDestroyDepthSwapchainANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrDestroyDepthSwapchainANDROID(
    XrDepthSwapchainANDROID                     swapchain);

পরামিতি বিবরণ

  • swapchain হল একটি XrDepthSwapchainANDROID হ্যান্ডেল যা পূর্বে xrCreateDepthSwapchainANDROID দ্বারা তৈরি করা হয়েছিল।

xrDestroyDepthSwapchainANDROID ফাংশন গভীরতা সোয়াপচেইনকে ধ্বংস করে।

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

থ্রেড নিরাপত্তা

  • 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 অ্যারের ধারণক্ষমতা, অথবা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের জন্য একটি অনুরোধ নির্দেশ করার জন্য 0।
  • depthImageCountOutput হল depthImages অপর্যাপ্ত হওয়ার ক্ষেত্রে প্রয়োজনীয় ক্ষমতার জন্য একটি নির্দেশক depthImageCapacityInput
  • depthImages হল XrDepthSwapchainImageANDROID স্ট্রাকচারের একটি অ্যারের একটি পয়েন্টার। depthImageCapacityInput 0 হলে এটি NULL হতে পারে
  • প্রয়োজনীয় depthImages আকার পুনরুদ্ধার করার বিশদ বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

xrEnumerateDepthSwapchainImagesANDROID XrDepthSwapchainImageANDROID কাঠামোর একটি অ্যারে পূরণ করে। সম্পদগুলি XrDepthSwapchainANDROID- এর আজীবনের জন্য ধ্রুবক এবং বৈধ হবে। এই ফাংশনটি xrEnumerateSwapchainImages- এর সাথে সাদৃশ্যপূর্ণভাবে আচরণ করে।

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

  • XR_ANDROID_depth_texture এক্সটেনশনটি অবশ্যই xrEnumerateDepthSwapchainImagesANDROID কল করার আগে সক্রিয় করতে হবে
  • depthSwapchain অবশ্যই একটি বৈধ XrDepthSwapchainANDROID হ্যান্ডেল হতে হবে
  • depthImageCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি depthImageCapacityInput 0 না হয়, depthImages XrDepthSwapchainImageANDROID স্ট্রাকচারের depthImageCapacityInput অ্যারের নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • 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_SIZE_INSUFFICIENT

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 একটি পঠনযোগ্য XrDepthSwapchainANDROID থেকে গভীরতার চিত্রগুলিকে উপস্থাপন করে, XrDepthSwapchainCreateInfoANDROID::রেজোলিউশন এবং XrDepthSwapchainCreateInfoANDROID::createFlags xDwapchain-এ কল করার সময় বরাদ্দ করা হয়েছে৷ প্রতিটি গভীরতার চিত্রের জন্য:

  • ছবির মানগুলি মেমরিতে সারি-প্রধান ক্রম অনুসারে সাজানো হয়, সারিগুলির মধ্যে কোনও প্যাডিং ছাড়াই৷
  • প্রথম মানটি উপরের বাম এবং শেষ মানটি নীচে ডানদিকে৷
  • নির্দেশিত মেমরির আকার xrEnumerateDepthSwapchainImagesANDROID এর মান দ্বারা নির্ধারিত হয় এবং xrCreateDepthSwapchainANDROID কল করার সময় XrDepthSwapchainCreateInfoANDROID::resolution দ্বারা সেট করা হয়। উদাহরণস্বরূপ, যদি 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 সেট না করে থাকে তাহলে smoothDepthConfidenceImage এর মান অবশ্যই NULL হতে হবে

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

xrAcquireDepthSwapchainImagesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrAcquireDepthSwapchainImagesANDROID(
    XrDepthSwapchainANDROID                     depthSwapchain,
    const XrDepthAcquireInfoANDROID*            acquireInfo,
    XrDepthAcquireResultANDROID*                acquireResult);

পরামিতি বিবরণ

  • depthSwapchain হল একটি XrDepthSwapchainANDROID হ্যান্ডেল গভীরতার চিত্রের জন্য।
  • acquireInfo হল একটি XrDepthAcquireInfoANDROID যাতে গভীরতার ছবি কিভাবে অর্জন করা যায় সে সম্পর্কে তথ্য রয়েছে।
  • acquireResult হল ফেরত XrDepthAcquireResultANDROID যাতে অর্জিত গভীরতার চিত্র সম্পর্কে তথ্য থাকে।

অ্যাপ্লিকেশানগুলি xrAcquireDepthSwapchainImagesANDROID ফাংশন ব্যবহার করে সর্বশেষ উপলব্ধ swapchain ইমেজ সূচক, যেমন XrDepthAcquireResultANDROID::acquiredIndex , XrEcquireDepthSwapchainImageANDROID অ্যারেতে ব্যবহার করতে পারে । প্রত্যাবর্তিত XrDepthAcquireResultANDROID-এ অন্যান্য তথ্যও রয়েছে যেমন দেখার ক্ষেত্র এবং ভঙ্গি যা গভীরতার ডেটা ব্যাখ্যা করার জন্য প্রয়োজনীয়। xrAcquireDepthSwapchainImagesANDROID- এ পরবর্তী কল না হওয়া পর্যন্ত ইমেজ অ্যারেতে অর্জিত স্লট থেকে পড়া নিরাপদ।

একটি সেশনে সংশ্লিষ্ট xrBeginFrame এবং xrEndFrame কলগুলির যেকোন জোড়ার মধ্যে xrAcquireDepthSwapchainImagesANDROID- এ একটির বেশি কল করা উচিত নয়৷

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

রিটার্ন কোড

সফলতা

  • 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_DEPTH_NOT_AVAILABLE_ANDROID
  • XR_ERROR_CALL_ORDER_INVALID
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_TIME_INVALID

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 হল XrDepthSwapchainImageANDROID অ্যারেতে অর্জিত টেক্সচারের সূচক যা xrEnumerateDepthSwapchainImagesANDROID দ্বারা গণনা করা হয়েছে।
  • exposureTimestamp হল XrTime যে সময়টি গভীরতার মানচিত্রটি ক্যাপচার করা হয়েছিল তা নির্দিষ্ট করে৷
  • views হল দুটি XrDepthViewANDROID এর একটি অ্যারে, প্রতিটি চোখের জন্য একটি, যেখানে সূচক 0 হল বাম চোখ এবং সূচক 1 হল ডান চোখ৷

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

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

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

  // Use the resolution supported by the runtime.
  .resolution = supportedDepthResolution,
};

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,
        .time = time};
    XrDepthAcquireResultANDROID acquireResult = {
        .type = XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID,
    };
    CHK_XR(xrAcquireDepthImagesANDROID(
        depthSwapchain, &acquireInfo, &acquireResult));

    // Each value in a depth image corresponds to a point in the real world.
    // The sample code in this section 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.acquireIndex];

    // Assume supported resolution is XR_DEPTH_CAMERA_RESOLUTION_160x160_ANDROID.
    const int imageResolution = 160;
    int imageY = // value in [0, imageResolution)
    int imageX = // value in [0, imageResolution)

    // Get depth value from left eye.
    // A right depth value would be 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 = (tanB + (tanU - tanB)*t)*depthL;

    XrPosef depthCameraPoseL = viewL.pose;
    // Transform posInCameraSpace by depthCameraPoseL

    // ...
    // Finish frame loop
    // ...
}

নতুন অবজেক্টের ধরন

নতুন Enum ধ্রুবক

XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_OBJECT_TYPE_DEPTH_SWAPCHAIN_ANDROID

XrResult গণনা এর সাথে বর্ধিত করা হয়েছে:

  • XR_ERROR_DEPTH_NOT_AVAILABLE_ANDROID

XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TYPE_DEPTH_SWAPCHAIN_CREATE_INFO_ANDROID
  • XR_TYPE_DEPTH_VIEW_ANDROID
  • XR_TYPE_DEPTH_ACQUIRE_INFO_ANDROID
  • XR_TYPE_DEPTH_ACQUIRE_RESULT_ANDROID
  • XR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROID
  • XR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

সংস্করণ ইতিহাস

  • রিভিশন 1, 2024-09-09 (লেভানা চেন)
    • প্রাথমিক এক্সটেনশন বর্ণনা