رشته نام
XR_ANDROID_depth_texture
نوع پسوند
پسوند نمونه
شماره برنامه افزودنی ثبت شده
703
تجدید نظر
1
وابستگی های افزونه و نسخه
آخرین تاریخ اصلاح
11-09-2024
وضعیت IP
هیچ ادعای IP شناخته شده ای وجود ندارد.
مشارکت کنندگان
سوشانت کولکارنی، گوگل
Cairn Overturf، گوگل
اسپنسر کوین، گوگل
لوانا چن، گوگل
نمای کلی
این برنامه افزودنی به برنامه اجازه میدهد تا نقشههای عمق محیط دنیای واقعی اطراف هدست را درخواست کند و وضوحهای عمق پشتیبانی شده را در هنگام ایجاد جستجو کند.
این پسوند برای نشان دادن عمق خام و صاف برای انسداد، تست ضربه و سایر کارهای خاص است که از هندسه صحنه دقیق استفاده می کند، به عنوان مثال، تشخیص چهره تقلبی.
قابلیت سیستم را بررسی کنید
ساختار XrSystemDepthTrackingPropertiesANDROID به صورت زیر تعریف می شود:
typedef struct XrSystemDepthTrackingPropertiesANDROID {
XrStructureType type;
const void* next;
XrBool32 supportsDepthTracking;
} XrSystemDepthTrackingPropertiesANDROID;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
supportsDepthTrackingیکXrBool32است که نشان می دهد آیا سیستم فعلی از ردیابی عمق پشتیبانی می کند یا خیر.
هنگام فراخوانی xrGetSystemProperties ، یک برنامه کاربردی میتواند بررسی کند که آیا سیستم قادر به ردیابی عمق است یا خیر.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrSystemDepthTrackingPropertiesANDROID فعال شود -
typeبایدXR_TYPE_SYSTEM_DEPTH_TRACKING_PROPERTIES_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد
وضوح عمق پرس و جو
تابع xrEnumerateDepthResolutionsANDROID به صورت زیر تعریف می شود:
XrResult xrEnumerateDepthResolutionsANDROID(
XrSession session,
uint32_t resolutionCapacityInput,
uint32_t* resolutionCountOutput,
XrDepthCameraResolutionANDROID* resolutions);
توضیحات پارامترها
-
sessionXrSession است که وضوح عمق پشتیبانی شده را برمی شمارد. -
resolutionCapacityInputظرفیتresolutionsیا 0 برای بازیابی ظرفیت مورد نیاز است. -
resolutionCountOutputیک اشاره گر به تعدادresolutionsuint64_tنوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در صورتی کهresolutionCapacityInputکافی نباشد. -
resolutionsاشاره گر به آرایه ای از XrDepthCameraResolutionANDROID است، اما اگرresolutionCapacityInput0 باشد می تواندNULLباشد. - برای توضیحات دقیق در مورد بازیابی اندازه
resolutionsمورد نیاز، به بخش پارامترهای اندازه بافر مراجعه کنید.
xrEnumerateDepthResolutionsANDROID وضوح عمق پشتیبانی شده توسط جلسه جاری را برمی شمارد. وضوح عمق باید به ترتیب از بالاترین به پایین ترین اولویت زمان اجرا باشد. برنامه باید از بالاترین اولویتی که برای عملکرد و کیفیت مطلوب پشتیبانی می کند استفاده کند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از فراخوانی xrEnumerateDepthResolutionsANDROID فعال شود -
sessionباید یک دسته XrSession معتبر باشد -
resolutionCountOutputباید یک اشاره گر به یک مقدارuint32_tباشد - اگر
resolutionCapacityInput0 نباشد،resolutionsباید نشانگر آرایهای ازresolutionCapacityInputXrDepthCameraResolutionANDROID باشند.
کدهای بازگشت
-
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 وضوح عمق پشتیبانی شده را هنگام ایجاد یک 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 است.
یک swapchain عمق ایجاد کنید
XR_DEFINE_HANDLE(XrDepthSwapchainANDROID)
XrDepthSwapchainANDROID یک دسته swapchain عمق است.
تابع xrCreateDepthSwapchainANDROID به صورت زیر تعریف می شود:
XrResult xrCreateDepthSwapchainANDROID(
XrSession session,
const XrDepthSwapchainCreateInfoANDROID* createInfo,
XrDepthSwapchainANDROID* swapchain);
توضیحات پارامترها
sessionXrSession است که زنجیره تبادل عمق را ایجاد می کند.createInfoیک اشاره گر به ساختار XrDepthSwapchainCreateInfoANDROID است که حاوی پارامترهایی است که برای ایجاد swapchain استفاده می شود.swapchainیک اشاره گر به یک دسته است که در آن XrDepthSwapchainANDROID ایجاد شده برگردانده می شود.
این برنامه می تواند از تابع xrCreateDepthSwapchainANDROID برای ایجاد یک swapchain عمق استفاده کند که هم عمق و هم تصاویر مطمئن را مدیریت می کند.
دستگیره swapchain عمق برگشتی ممکن است متعاقباً در تماسهای API استفاده شود. دسته XrDepthSwapchainANDROID باید در نهایت با استفاده از تابع xrDestroyDepthSwapchainANDROID آزاد شود.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از فراخوانی xrCreateDepthSwapchainANDROID فعال شود -
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
resolutionXrDepthCameraResolutionANDROID است که بافت های عمق و اطمینان باید در آن ایجاد شوند. -
createFlagsیک یا چند XrDepthSwapchainCreateFlagsANDROID است.
ساختار XrDepthSwapchainCreateInfoANDROID هنگامی که به xrCreateDepthSwapchainANDROID منتقل می شود، گزینه های ایجاد را برای XrDepthSwapchainANDROID فراهم می کند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrDepthSwapchainCreateInfoANDROID فعال شود -
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;
تابع xrDestroyDepthSwapchainANDROID به صورت زیر تعریف می شود:
XrResult xrDestroyDepthSwapchainANDROID(
XrDepthSwapchainANDROID swapchain);
توضیحات پارامترها
-
swapchainیک دسته XrDepthSwapchainANDROID است که قبلا توسطxrCreateDepthSwapchainANDROIDایجاد شده است.
تابع xrDestroyDepthSwapchainANDROID زنجیره تبادل عمق را از بین می برد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از فراخوانی xrDestroyDepthSwapchainANDROID فعال شود -
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);
توضیحات پارامترها
-
depthSwapchainXrDepthSwapchainANDROID برای دریافت تصاویر است. -
depthImageCapacityInputظرفیت آرایهdepthImagesیا 0 برای نشان دادن درخواست برای بازیابی ظرفیت مورد نیاز است. -
depthImageCountOutputیک اشاره گر برای تعدادdepthImagesنوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در مواردی کهdepthImageCapacityInputکافی نیست. -
depthImagesاشاره گر به آرایه ای از ساختارهای XrDepthSwapchainImageANDROID است. اگرdepthImageCapacityInput0 باشد می تواندNULLباشد. - برای توضیح دقیق بازیابی اندازه
depthImages، به بخش پارامترهای اندازه بافر مراجعه کنید.
xrEnumerateDepthSwapchainImagesANDROID آرایه ای از ساختارهای XrDepthSwapchainImageANDROID را پر می کند. منابع برای طول عمر XrDepthSwapchainANDROID ثابت و معتبر خواهند بود. این تابع مشابه xrEnumerateSwapchainImages رفتار می کند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از فراخوانی xrEnumerateDepthSwapchainImagesANDROID فعال شود -
depthSwapchainباید یک دسته معتبر XrDepthSwapchainANDROID باشد -
depthImageCountOutputباید یک اشاره گر به مقدارuint32_tباشد - اگر
depthImageCapacityInput0 نباشد،depthImagesباید نشانگر آرایه ای از ساختارهایdepthImageCapacityInputXrDepthSwapchainImageANDROID باشد.
کدهای بازگشت
-
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
rawDepthImageNULLیا اشاره گر به تصاویر عمق خام برای هر دو نمای چپ و راست است. مقادیر دارای واحد متر هستند. مقادیر ویژه:0.0یک پیکسل عمق نامعتبر یا خالی در عمق خام را نشان می دهد،Infنشان دهنده عمق شناخته شده است که عملاً بی نهایت دور است. -
rawDepthConfidenceImageNULLیا اشاره گر به تصاویر با اطمینان عمق خام برای هر دو نمای چپ و راست است. -
smoothDepthImageNULLیا اشاره گر برای صاف کردن تصاویر عمق برای هر دو نمای چپ و راست است. مقادیر دارای واحد متر هستند. مقادیر ویژه:0.0یک پیکسل عمق نامعتبر یا خالی در عمق صاف را نشان می دهد،Infنشان دهنده عمق شناخته شده است که عملاً بی نهایت دور است. -
smoothDepthConfidenceImageNULLیا اشاره گر برای صاف کردن تصاویر با اطمینان عمق برای هر دو نمای چپ و راست است.
XrDepthSwapchainImageANDROID تصاویر عمقی را از یک XrDepthSwapchainANDROID خوانا نشان می دهد، که همانطور که در XrDepthSwapchainCreateInfoANDROID::رزولوشن و XrDepthSwapchainCreateInfoANDROID::createFlagswapAANDROID::createFlags ANDROIDReateDroID توضیح داده شده است، اختصاص داده شده است. برای هر تصویر عمق:
- مقادیر تصویر به ترتیب ردیف اصلی در حافظه قرار میگیرند، بدون اینکه بین سطرها قرار بگیرند.
- مقدار اول بالا سمت چپ و آخرین مقدار پایین سمت راست است.
- اندازه حافظه اشاره شده با مقدار xrEnumerateDepthSwapchainImagesANDROID تعیین می شود و با XrDepthSwapchainCreateInfoANDROID::رزولوشن در هنگام فراخوانی xrCreateDepthSwapchainANDROID تنظیم می شود. به عنوان مثال، اگر
resolutionXR_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باشد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrDepthSwapchainImageANDROID فعال شود -
typeبایدXR_TYPE_DEPTH_SWAPCHAIN_IMAGE_ANDROIDباشد -
nextبایدNULLیا یک اشاره گر معتبر به ساختار بعدی در یک زنجیره ساختار باشد
تابع xrAcquireDepthSwapchainImagesANDROID به صورت زیر تعریف می شود:
XrResult xrAcquireDepthSwapchainImagesANDROID(
XrDepthSwapchainANDROID depthSwapchain,
const XrDepthAcquireInfoANDROID* acquireInfo,
XrDepthAcquireResultANDROID* acquireResult);
توضیحات پارامترها
-
depthSwapchainیک دسته XrDepthSwapchainANDROID برای تصویر عمق است. -
acquireInfoیک XrDepthAcquireInfoANDROID است که حاوی اطلاعاتی در مورد نحوه بدست آوردن تصویر عمق است. -
acquireResultXrDepthAcquireResultANDROID بازگشتی است که حاوی اطلاعاتی درباره عمق تصویر به دست آمده است.
برنامهها میتوانند از تابع xrAcquireDepthSwapchainImagesANDROID برای به دست آوردن آخرین فهرست تصویر swapchain موجود، مانند XrDepthAcquireResultANDROID::acquiredIndex ، در آرایه XrDepthSwapchainImageANDROID که توسط xrDepthmagthEnumerateSANDROID برشمرده شده است، استفاده کنند. XrDepthAcquireResultANDROID برگردانده شده همچنین حاوی اطلاعات دیگری مانند میدان دید و وضعیت است که برای تفسیر داده های عمق ضروری است. خواندن از شکاف به دست آمده در آرایه تصویر تا تماس بعدی با xrAcquireDepthSwapchainImagesANDROID امن است.
نباید بیش از یک تماس با xrAcquireDepthSwapchainImagesANDROID بین هر جفت تماس xrBeginFrame و xrEndFrame مربوطه در یک جلسه وجود داشته باشد.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از فراخوانی xrAcquireDepthSwapchainImagesANDROID فعال شود -
depthSwapchainباید یک دسته معتبر XrDepthSwapchainANDROID باشد -
acquireInfoباید یک اشاره گر به یک ساختار معتبر XrDepthAcquireInfoANDROID باشد -
acquireResultباید یک اشاره گر به یک ساختار XrDepthAcquireResultANDROID باشد
کدهای بازگشت
-
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
spaceیک XrSpace است که چارچوب مرجع پوز برگشتی را در XrDepthAcquireResultANDROID::views تعریف میکند. -
displayTimeیکXrTimeاست که زمان مورد استفاده برای محاسبه ژست برای پوز برگشتی در XrDepthAcquireResultANDROID::views را مشخص می کند. برنامه ها باید زمان نمایش پیش بینی شده خود را برای فریم فعلی بگذرانند.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrDepthAcquireInfoANDROID فعال شود -
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
acquiredIndexنمایه بافت به دست آمده در آرایه XrDepthSwapchainImageANDROID است که توسط xrEnumerateDepthSwapchainImagesANDROID شمارش شده است. -
exposureTimestampXrTimeاست که زمان ثبت عمق نقشه را مشخص می کند. -
viewsآرایه ای از دو XrDepthViewANDROID است، یکی برای هر چشم، که شاخص 0 چشم چپ و شاخص 1 چشم راست است.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrDepthAcquireResultANDROID فعال شود -
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;
توضیحات اعضا
-
typeXrStructureType این ساختار است. -
nextNULLیا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
fovیک XrFovf است که میدان دید مورد استفاده برای تولید این نما را مشخص می کند. نما هرگز به صورت افقی و عمودی چرخانده نمی شود. -
poseیک XrPosef است که موقعیتی را که نقشه عمق از آن ارائه شده است را مشخص می کند. چارچوب مرجع در XrDepthAcquireInfoANDROID مشخص شده است.
استفاده معتبر (ضمنی)
- پسوند
XR_ANDROID_depth_textureباید قبل از استفاده از XrDepthViewANDROID فعال شود -
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
// 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,
.displayTime = 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
فهرست های جدید
ساختارهای جدید
- XrDepthSwapchainCreateInfoANDROID
- XrDepthSwapchainImageANDROID
- XrDepthAcquireInfoANDROID
- XrDepthViewANDROID
- XrDepthAcquireResultANDROID
- XrSystemDepthTrackingPropertiesANDROID
توابع جدید
- xrCreateDepthSwapchainANDROID
- xrDestroyDepthSwapchainANDROID
- xrEnumerateDepthSwapchainImagesANDROID
- xrEnumerateDepthResolutionsANDROID
- xrAcquireDepthSwapchainImagesANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 09-09-2024 (لوانا چن)
- توضیحات پسوند اولیه
OpenXR™ و لوگوی OpenXR علائم تجاری متعلق به The Khronos Group Inc. هستند و به عنوان یک علامت تجاری در چین، اتحادیه اروپا، ژاپن و بریتانیا ثبت شده اند.