Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
穿透¶
直通是一種使用相機影像將使用者的環境呈現為背景的技術。這會將 VR 耳機轉變為 AR 耳機,通常稱為混合實境或 MR。
備註
由於直通相對較新,因此沒有單一的跨平台實作方式。將來可能會有補充,所以這是一項正在進行的工作。
穿透¶
OpenXR 有一個由 Meta 提交的直通的供應商擴充。目前此擴充僅在 Quest 和 PICO 上支援,但將來可能會被其他耳機採用。
XRInterface 具有直通入口點,因此不同的介面可以實作此功能。對於 OpenXRInterface <class_openxrinterface>`,元直通擴充在這裡實作。
在程式碼中,您可以呼叫“is_passthrough_supported”來檢查此擴充功能是否可用。如果是這樣,您只需呼叫“start_passthrough”即可啟用直通。您可以呼叫“stop_passthrough”來停用直通。
您確實需要確保背景是透明的。您需要在視窗上啟用“transparent_bg”屬性。某些背景環境設定仍會以不透明顏色填滿背景,您可以使用“自訂顏色”,其顏色的 alpha 設定為 0。
OpenXR 運作時會顯示相機影像作為背景。
備註
出於隱私原因**無法存取**相機影像。
警告
啟用直通後,可以變更會中斷直通的設定。確保不要停用“transparent_bg”設定或更改環境混合模式。這將導致相機影像不再可見,但您仍然會產生開銷。
如果您想關閉直通,請始終使用“stop_passthrough”。
最後,要在 Quest 上使用直通,您必須設定以下匯出屬性:
穿透¶
最近新增 OpenXR 支援的一些耳機採取了不同的方法。他們只是模仿 AR 裝置。 Lynx R1 就是這樣的裝置,但其他裝置可能也在做同樣的事情。
因此,以下內容適用於模仿 AR 的直通裝置和實際的 AR 裝置。
如果「is_passthrough_supported」回傳 false,下一步是呼叫「get_supported_environment_blend_modes」。這將返回支援的混合模式列表,用於將主渲染圖像提交到 OpenXR。
我們需要檢查此列表中是否存在「XR_ENV_BLEND_MODE_ALPHA_BLEND」。如果是這樣,我們可以告訴 OpenXR 期望圖像可以與背景進行 Alpha 混合。為此,我們只需呼叫「set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)」。
我們還必須將“transparent_bg”設為 true 並調整環境以確保我們提交正確的圖像。
融會貫通¶
有下列事項需注意:
func enable_passthrough() -> bool:
var xr_interface: XRInterface = XRServer.primary_interface
if xr_interface and xr_interface.is_passthrough_supported():
if !xr_interface.start_passthrough():
return false
else:
var modes = xr_interface.get_supported_environment_blend_modes()
if xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND in modes:
xr_interface.set_environment_blend_mode(xr_interface.XR_ENV_BLEND_MODE_ALPHA_BLEND)
else:
return false
get_viewport().transparent_bg = true
return true