使用支援的 OpenXR 擴充功能進行建構

適用的 XR 裝置
本指南可協助您為這類 XR 裝置打造體驗。
XR 頭戴式裝置
有線 XR 眼鏡

Android XR 透過 OpenXR 1.1 規格和多項第三方供應商擴充功能支援 OpenXR。使用這些擴充功能,您就能在開發 XR 時享有熟悉的體驗。其中部分功能需要 Android 執行階段權限。如果您想直接在 OpenXR API 上建構,可以在 jetpack-xr-natives 存放區中找到必要的標頭檔案。

Android XR 供應商擴充功能

擴充功能名稱

說明

Spatial API 版本

XR_ANDROID_anchor_sharing_export

應用程式透過 XR_ANDROID_trackables、XR_EXT_spatial_anchor 和 XR_ANDROID_spatial_anchor_space 建立的錨點會繫結至特定工作階段,因此其他應用程式無法查看。這項擴充功能可讓應用程式與其他執行中的應用程式共用錨點。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_body_tracking

使用 IK 根據頭部和手部位置判斷身體位置。

權限: BODY_TRACKING

v2

XR_ANDROID_composition_layer_passthrough_mesh

適用於支援多種環境混合模式的裝置。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_depth_texture

透過這項擴充功能,應用程式可要求取得頭戴式裝置周圍真實環境的深度圖,並在建立時查詢支援的深度解析度。

權限: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_device_anchor_persistence

這項擴充功能可讓應用程式持續運作。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_enumerate_system_extension_properties

這項擴充功能可讓應用程式判斷目前的系統設定支援哪些擴充功能。

v3

XR_ANDROID_eye_tracking

這個擴充功能可讓應用程式取得使用者眼睛的位置和方向,以及眼動追蹤狀態。

權限: EYE_TRACKING_FINE

v1

XR_ANDROID_face_tracking

這項擴充功能可讓應用程式取得混合形狀的權重,並在 XR 體驗中算繪臉部表情。

權限: FACE_TRACKING

v1

XR_ANDROID_face_tracking_data_source

這項擴充功能可讓應用程式從多個資料來源取得臉部追蹤資料。

權限: FACE_TRACKING、RECORD_AUDIO

v3

XR_ANDROID_geospatial

這項擴充功能可為 Google 的 Geospatial API 提供地理空間追蹤功能。

權限: ACCESS_FINE_LOCATION

v4

XR_ANDROID_geospatial_anchor

這項擴充功能提供地理空間錨點和表面錨點,可根據指定的經度、緯度和海拔高度,在空間中相對於地球的位置定位。

權限: ACCESS_FINE_LOCATION

v4

XR_ANDROID_global_passthrough_dimming

透過這項擴充功能,應用程式可設定及查詢全域穿透調暗等級,並在調暗等級變更時接收事件。

v4

XR_ANDROID_google_cloud_auth

這項擴充功能可讓應用程式提供 Google Cloud API 的驗證憑證,以便使用 Google Cloud 擴充功能。

v4

XR_ANDROID_hand_mesh

這項擴充功能可啟用手勢追蹤輸入,並以動態手部網格表示。

權限: HAND_TRACKING

v1

XR_ANDROID_light_estimation

透過這項擴充功能,應用程式可要求取得頭戴式裝置周圍真實環境光照的資料。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_light_estimation_cubemap

這項擴充功能是以基本的 XR_ANDROID_light_estimation 擴充功能為基礎。

權限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_mouse_interaction

這項擴充功能提供 XrPath,用於取得滑鼠輸入,並為使用者滑鼠設定檔 (包括滑鼠裝置和觸控板裝置) 定義一個常用的動作姿勢。

v1

XR_ANDROID_passthrough_camera_state

穿透模式相機可能需要一些時間才能啟動,無法立即使用。

v1

XR_ANDROID_performance_metrics

這個擴充功能提供 API,可列舉及查詢目前 XR 裝置的各種效能指標計數器。

v1

XR_ANDROID_raycast

透過這項擴充功能,應用程式可對環境中的可追蹤項目執行光線投射。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_recommended_resolution

這項擴充功能可讓執行階段在建議解析度變更時通知應用程式。

v1

XR_ANDROID_recommended_settings

使用者的預設環境可以:使用混合模式和輸入模式的組合,處於各種狀態。

v1

XR_ANDROID_scene_meshing

這項擴充功能旨在提供網格,大致呈現使用者環境中的實體物件。

權限: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_spatial_anchor_space

XR_EXT_spatial_anchor 擴充功能中定義的 xrCreateSpatialAnchorEXT 函式,可讓應用程式使用 XrSpatialEntityEXT 控制代碼建立空間錨點來代表該錨點。

相較之下,這項擴充功能會建立由 XrSpace 控制代碼代表的空間錨點。

權限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_annotation_tracking

這項擴充功能可為 XR_EXT_spatial_entity 擴充功能提供註解追蹤功能,追蹤場景中的各種註解。應用程式可透過這項功能,在執行階段參照定義的實體或虛擬物件上放置疊加層。

權限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_component_subsumed_by

這項擴充功能以 XR_EXT_spatial_entity 為基礎,並為 XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT 提供新元件,以公開包含目前實體的 XrSpatialEntityIdEXT。

權限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_discovery_bounds

這項擴充功能會新增空間邊界的定義,讓應用程式篩選偵測到的空間實體。

權限: SCENE_UNDERSTANDING_COARSE

v4

XR_ANDROID_spatial_discovery_raycast

這項擴充功能以 XR_EXT_spatial_entity 為基礎,為現有的空間功能提供光線投射功能。

權限: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_entity_bound_anchor

這項擴充功能可讓應用程式建立錨點,並附加至空間實體。

權限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_object_tracking

這項擴充功能以 XR_EXT_spatial_entity 為基礎,定義了追蹤一組預先定義實體物件的空間功能,不需要應用程式提供輸入資料集。

權限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables

透過這項擴充功能,應用程式可存取實體環境中的可追蹤項目。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_image

這項擴充功能可追蹤一組輸入參考圖像指定的平面圖像。

權限: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables_marker

這項擴充功能可追蹤實體標記。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_object

這項擴充功能可追蹤實體物件。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_qr_code

這項擴充功能可追蹤實體 QR code 並解碼 QR code 資料。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_unbounded_reference_space

這項擴充功能可讓應用程式建立 XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID 參考空間。

v1

XR_ANDROID_viewport_feathering

這項擴充功能會公開執行階段套用的羽化區域,讓應用程式在安全區域內配置 UI 元素。

v4

第三方擴充功能

擴充功能名稱

說明

Spatial API 版本

XR_MND_headless

某些應用程式可能需要存取 XR 互動裝置,但不會在螢幕上顯示任何圖片內容。

v1

XR_KHR_binding_modification

這項擴充功能會新增選用結構,可納入傳遞至 xrSuggestInteractionProfileBindings 的 XrInteractionProfileSuggestedBinding::next 鏈結,指定其他資訊來修改預設繫結行為。

v1

XR_EXT_debug_utils

由於 OpenXR 介面的性質,開發人員和應用程式可取得的錯誤資訊非常少。

v1

XR_EXT_hand_tracking

這項擴充功能可讓應用程式找出個別手勢追蹤輸入內容的關節。

權限: HAND_TRACKING

v1

XR_EXT_performance_settings

這項擴充功能定義了 API,讓應用程式向執行階段提供效能提示,並讓執行階段將效能相關通知傳回應用程式。這樣一來,雙方就能在所需的 CPU 和 GPU 效能、散熱能力,以及整個工作階段中一致的良好使用者體驗之間,取得適當的平衡。

v1

XR_FB_display_refresh_rate

在支援動態調整螢幕刷新率的平台上。

v1

XR_FB_swapchain_update_state

這項擴充功能可讓應用程式修改及查詢與交換鏈相關聯的特定可變動狀態。

v1

XR_FB_foveation

在 XR 領域中,中心凹渲染是一種算繪技術,可讓圖像中靠近焦點或眼睛中心凹的區域,以高於周邊區域的解析度顯示。

v1

XR_FB_foveation_configuration

在 Facebook HMD 上,開發人員可以建立由執行階段產生的凹形設定檔,用於光學屬性和效能。

v1

XR_FB_foveation_vulkan

Vulkan 圖形 API 必須將圖片套用至交換鏈,才能套用中心點渲染模式。

v1

XR_FB_space_warp

這項擴充功能可讓應用程式啟用空間扭曲技術。

v1

XR_KHR_opengl_es_enable

如果執行階段支援使用 OpenGL ES API 轉譯的應用程式,就必須提供這項擴充功能。

v1

XR_KHR_android_create_instance

應用程式在 Android 系統上建立 XrInstance 物件時。

v1

XR_KHR_android_surface_swapchain

在 XR 中,常見的活動是查看圖片串流。

v1

XR_KHR_android_thread_settings

為了讓 XR 體驗更舒適,應用程式必須快速且穩定地提供影格。

v1

XR_KHR_composition_layer_color_scale_bias

在合成期間,系統會將色彩比例和偏差套用至圖層色彩,然後轉換為預乘 Alpha 表示法。

v1

XR_KHR_composition_layer_cube

這項擴充功能會新增額外的圖層類型,可直接從立方體貼圖取樣。

v1

XR_KHR_composition_layer_cylinder

這項擴充功能會新增額外的圖層類型,XR 執行階段必須將來自交換鏈的紋理對應至圓柱體區段內部。這就像觀眾看曲面電視螢幕一樣。

v1

XR_KHR_composition_layer_depth

這項擴充功能定義了額外的圖層類型,可讓應用程式在投影圖層中提交深度圖片和彩色圖片。

v1

XR_KHR_composition_layer_equirect

這項擴充功能會新增額外的圖層類型,XR 執行階段必須將來自交換鏈的等距柱狀編碼圖片,對應至球體內部。

v1

XR_KHR_composition_layer_equirect2

這項擴充功能會新增額外的圖層類型,XR 執行階段必須將來自交換鏈的等距柱狀編碼圖片,對應至球體內部。

這項擴充功能採用不同的參數化方式,更符合 XR_KHR_composition_layer_cylinder 的公式,但功能與 XR_KHR_composition_layer_equirect 相同。

v1

XR_KHR_convert_timespec_time

這項擴充功能提供兩個函式,可在 timespec 單調時間和 XrTime 之間轉換。

v1

XR_KHR_vulkan_enable

這項擴充功能可讓您在 OpenXR 執行階段中使用 Vulkan 圖形 API。

v1

XR_KHR_vulkan_enable2

這項擴充功能可讓您在 OpenXR 執行階段中使用 Vulkan 圖形 API。

v1

XR_KHR_loader_init

在某些平台上,載入器必須先使用平台專屬參數初始化,才能載入。

v1

XR_KHR_loader_init_android

在 Android 上,部分載入器實作需要應用程式在初始化時提供額外資訊。

v1

XR_KHR_swapchain_usage_input_attachment_bit

這項擴充功能可讓應用程式指定交換鏈圖片的建立方式,以便做為輸入附件使用。撰寫本文時,這個位元只會影響 Vulkan 交換鏈。

v1

XR_EXT_dpad_binding

這個擴充功能可讓應用程式將一或多個數位動作繫結至觸控板或搖桿,就像是透過定義其他元件路徑來建議繫結的 D-pad 一樣。

v1

XR_EXT_uuid

這項擴充功能定義了符合 RFC 4122 的通用專屬 ID。

v1

XR_FB_composition_layer_depth_test

這項擴充功能可啟用深度測試圖層組合。

v1

XR_EXT_eye_gaze_interaction

這項擴充功能提供 XrPath,可從眼動追蹤器取得視線輸入,啟用視線互動。

權限: EYE_TRACKING_FINE

v1

XR_EXT_hand_interaction

這項擴充功能定義了四種常用的動作姿勢,適用於所有使用者手部互動設定檔,包括手勢追蹤裝置和動作控制器裝置。

v1

XR_KHR_visibility_mask

這項擴充功能支援為應用程式提供個別檢視畫面的繪圖遮罩。

v1

XR_META_foveation_eye_tracked

眼動追蹤凹形渲染功能會在使用者視線周圍,以較低的像素密度渲染。

權限: EYE_TRACKING_FINE

v1

XR_FB_hand_tracking_aim

XR_EXT_hand_tracking 擴充功能會提供手部關節姿勢清單,代表追蹤手部的目前設定。這項擴充功能會新增系統使用的手勢辨識層。

權限: HAND_TRACKING

v1

XR_EXT_palm_pose

這項擴充功能會為互動設定檔定義新的「標準姿勢 ID」,名為「palm_ext」。

v1

XR_VARJO_foveated_rendering

Varjo 頭戴式裝置在顯示器中央區域提供極高的像素密度。

權限: EYE_TRACKING_FINE

v1

XR_VARJO_quad_views

這項擴充功能會將新的檢視畫面設定類型 XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO 新增至 XrViewConfigurationType,可由 xrEnumerateViewConfigurations 傳回,表示執行階段支援 4 個檢視區塊。

v1

XR_META_vulkan_swapchain_create_info

使用這項擴充功能時,Vulkan 應用程式可以在呼叫 xrCreateSwapchain 時,將 XrVulkanSwapchainCreateInfoMETA 結構鏈結至 XrSwapchainCreateInfo,藉此傳遞額外的 VkImageCreateFlags 或 VkImageUsageFlags。

v1

XR_FB_hand_tracking_mesh

XR_EXT_hand_tracking 擴充功能會提供手部關節姿勢清單,但沒有轉譯蒙皮手部網格的機制。

權限: HAND_TRACKING

v1

XR_FB_composition_layer_image_layout

這項擴充功能不會定義新的合成圖層類型。

v1

XR_KHR_maintenance1

XR_KHR_maintenance1 新增了一系列次要功能,這些功能在原始 OpenXR 1.0 版本中刻意省略或忽略。

v1

XR_FB_composition_layer_settings

這項擴充功能可讓應用程式要求在組合層上使用銳化或超級取樣等處理選項。

v1

XR_KHR_locate_spaces

這項擴充功能會導入 xrLocateSpacesKHR 函式。

v1

XR_EXT_local_floor

核心 OpenXR 規格包含 XrReferenceSpaceType 中的兩種世界鎖定參考空間 XrSpace 類型。

v1

XR_EXT_spatial_marker_tracking

這項擴充功能以 XR_EXT_spatial_entity 為基礎,可讓應用程式偵測及追蹤環境中的標記。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_persistence

這項擴充功能可讓應用程式在不同工作階段中,探索及關聯空間實體。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_anchor

這項擴充功能以 XR_EXT_spatial_entity 為基礎,可讓應用程式建立空間錨點。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_plane_tracking

這項擴充功能以 XR_EXT_spatial_entity 為基礎,定義空間實體架構的平面追蹤空間功能。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_entity

這項擴充功能介紹 OpenXR 中場景理解和空間推理的概念和基礎。

v1

XR_EXT_future

在 XR 系統中,某些作業會長時間執行,無法在正常的影格迴圈內完成。

v1

XR_FB_color_space

XR 裝置使用的色域,可能與開發時使用的許多螢幕不同。

v1

XR_EXT_composition_layer_inverted_alpha

這項擴充功能提供一個標記,套用至組合層時,會反轉圖層交換鏈圖片中 Alpha 值的解讀方式。

v1

XR_EXT_spatial_entity_archetypes

xrQuerySpatialComponentDataEXT 函式可讓應用程式使用實體上必須存在的元件類型篩選器,查詢實體和元件資料。這項擴充功能導入了原型 (不重複的元件組合) 的概念,讓應用程式可以讀取所有實體的所有元件資料,而不會重複。

v4

XR_EXT_frame_synthesis

這項擴充功能可根據應用程式提供的額外資料,在應用程式上啟用影格合成功能。

v3

XR_QCOM_trackables_image_operations

提供可追蹤項目的 Qualcomm 圖片追蹤作業。

v3

XR_QCOM_trackables_qr_code_operations

提供 Qualcomm QR code 追蹤作業,用於追蹤可追蹤項目。

v3

XR_EXT_user_presence

這項擴充功能會導入新事件,在系統偵測到使用者狀態變更時發出通知。

v3

XR_KHR_extended_struct_name_lengths

這項擴充功能可擴充結構體名稱的大小上限,並提供新函式來存取這些新的擴充名稱。

v3

XR_EXT_hand_tracking_data_source

這項擴充功能會強化 XR_EXT_hand_tracking 擴充功能。

v4

XR_EXT_spatial_container_self_rendering

這項擴充功能說明空間容器中的「自我算繪」。

v4

XR_EXT_spatial_container

這項擴充功能定義了新的可顯示實體類別。

v4

XR_EXT_spatial_persistence_operations

這項擴充功能可讓應用程式在不同工作階段中,保留及取消保留空間實體。

權限: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_mesh_tracking

這項擴充功能以 XR_EXT_spatial_entity 為基礎,定義了追蹤環境三角形網格的空間功能。

權限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_object_tracking

這項擴充功能以 XR_EXT_spatial_entity 為基礎,定義了追蹤一組預先定義物件的空間功能,不需要應用程式提供輸入資料集。

權限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_spatial_image_tracking

這項擴充功能可為 XR_EXT_spatial_entity 擴充功能提供圖片追蹤功能。

權限: SCENE_UNDERSTANDING_COARSE

v4

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display 提供一種機制,讓應用程式查詢執行階段,取得與互動設定檔搭配使用的裝置電池狀態資訊。

v3

XR_FB_composition_layer_secure_content

這項擴充功能不會定義新的合成圖層類型。

v4


OpenXR™ 和 OpenXR 標誌是 Khronos Group Inc. 擁有的商標,並已在中國、歐盟、日本和英國註冊為商標。