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 上使用直通,您必須設定以下匯出屬性:

../../_images/xr_export_passthrough.webp

穿透

最近新增 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