رشته نام
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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);
توضیحات پارامترها
-
session
XrSession است که وضوح عمق پشتیبانی شده را برمی شمارد. -
resolutionCapacityInput
ظرفیتresolutions
یا 0 برای بازیابی ظرفیت مورد نیاز است. -
resolutionCountOutput
یک اشاره گر به تعدادresolutions
uint64_t
نوشته شده است، یا یک اشاره گر به ظرفیت مورد نیاز در صورتی که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 وضوح عمق پشتیبانی شده را هنگام ایجاد یک 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);
توضیحات پارامترها
session
XrSession است که زنجیره تبادل عمق را ایجاد می کند.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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
resolution
XrDepthCameraResolutionANDROID است که بافت های عمق و اطمینان باید در آن ایجاد شوند. -
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);
توضیحات پارامترها
-
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
باید نشانگر آرایه ای از ساختارهایdepthImageCapacityInput
XrDepthSwapchainImageANDROID باشد.
کدهای بازگشت
-
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::createFlagswapAANDROID::createFlags ANDROIDReateDroID توضیح داده شده است، اختصاص داده شده است. برای هر تصویر عمق:
- مقادیر تصویر به ترتیب ردیف اصلی در حافظه قرار میگیرند، بدون اینکه بین سطرها قرار بگیرند.
- مقدار اول بالا سمت چپ و آخرین مقدار پایین سمت راست است.
- اندازه حافظه اشاره شده با مقدار xrEnumerateDepthSwapchainImagesANDROID تعیین می شود و با XrDepthSwapchainCreateInfoANDROID::رزولوشن در هنگام فراخوانی xrCreateDepthSwapchainANDROID تنظیم می شود. به عنوان مثال، اگر
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
باشد.
استفاده معتبر (ضمنی)
- پسوند
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 است که حاوی اطلاعاتی در مورد نحوه بدست آوردن تصویر عمق است. -
acquireResult
XrDepthAcquireResultANDROID بازگشتی است که حاوی اطلاعاتی درباره عمق تصویر به دست آمده است.
برنامهها میتوانند از تابع 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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته OpenXR یا این پسوند تعریف نشده است. -
acquiredIndex
نمایه بافت به دست آمده در آرایه XrDepthSwapchainImageANDROID است که توسط xrEnumerateDepthSwapchainImagesANDROID شمارش شده است. -
exposureTimestamp
XrTime
است که زمان ثبت عمق نقشه را مشخص می کند. -
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;
توضیحات اعضا
-
type
XrStructureType این ساختار است. -
next
NULL
یا اشاره گر به ساختار بعدی در زنجیره ساختار است. چنین ساختاری در هسته 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,
.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
فهرست های جدید
ساختارهای جدید
- XrDepthSwapchainCreateInfoANDROID
- XrDepthSwapchainImageANDROID
- XrDepthAcquireInfoANDROID
- XrDepthViewANDROID
- XrDepthAcquireResultANDROID
- XrSystemDepthTrackingPropertiesANDROID
توابع جدید
- xrCreateDepthSwapchainANDROID
- xrDestroyDepthSwapchainANDROID
- xrEnumerateDepthSwapchainImagesANDROID
- xrEnumerateDepthResolutionsANDROID
- xrAcquireDepthSwapchainImagesANDROID
مسائل
تاریخچه نسخه
- بازبینی 1، 09-09-2024 (لوانا چن)
- توضیحات پسوند اولیه