Unity 中的相機設定

當您戴上混合實境頭戴式裝置時,它會成為全像攝影世界的中心。 Unity 相機 元件會自動處理立體轉譯,並遵循頭部移動和旋轉。 不過,若要完整優化視覺品質與 全像投影穩定性,您應該設定以下所述的相機設定。

HoloLens 與 VR 沉浸式頭戴裝置

Unity 相機元件上的預設設定適用于傳統 3D 應用程式,其需要類似 Skybox 的背景,因為它們沒有真實世界。

  • 沉浸式頭戴式裝置上執行時,您會轉譯使用者看到的所有專案,因此您可能會想要保留 skybox。
  • 不過,在HoloLens之類的全像攝影頭戴式裝置上執行時,真實世界應該會出現在相機轉譯的所有專案後面。 將相機背景設定為 HoloLens 中的透明 (,黑色會轉譯為透明) 而不是 Skybox 紋理:
    1. 在 [階層] 面板中選取 [主要相機]
    2. 在 [偵測器] 面板中,尋找 [相機] 元件,並將 [清除旗標] 下拉式清單從 Skybox 變更為純色
    3. 選取 [背景色彩選擇器],並將 RGBA 值變更為 (0、0、0、0)
      1. 如果從程式碼設定此專案,您可以使用 Unity 的 Color.clear

MRTK 會根據 相機系統設定檔中的組態,自動處理特定的相機設定。

Namespace:Microsoft.MixedReality.Toolkit.CameraSystem
Type:MixedRealityCameraSystem

若要檢查相機不透明,MixedRealityCamera 系統具有 IsOpaque 屬性

CoreServices.CameraSystem.IsOpaque;

相機設定

無論您開發何種體驗,主要相機一律是附加至裝置前端顯示器的主要立體轉譯元件。 如果您想像使用者 (X: 0、Y: 0、Z: 0) 開始位置,則配置您的應用程式會比較容易。 由於主要相機是追蹤使用者頭部的移動,因此可以藉由設定主要相機的開始位置來設定使用者的開始位置。

您需要進行的核心選擇是您要針對 HoloLens 或 VR 沉浸式頭戴裝置進行開發。 取得之後,請跳至套用的安裝區段。

HoloLens 相機設定

針對 HoloLens 應用程式,您必須針對想要鎖定場景環境的任何物件使用錨點。 我們建議使用未系結的空間,將穩定性最大化,並在多個會議室中建立錨點。

請遵循本逐步教學課程,在 Unity 專案中新增並自動設定Mixed Reality工具組。 您也可以直接從 MRTK for Unity 使用 MixedRealityPlayspace 類別,並將 目標調整 設定為 World

MRTK 設定視窗

MRTK 應該會自動處理播放空間和相機的位置,但最好再次檢查:

MRTK 播放空間

  1. 從 [ 階層] 面板,展開 MixedRealityPlayspace GameObject 並尋找 Main Camera 子物件
  2. 在 [ 偵測器 ] 面板中,尋找 [轉換 ] 元件,並將 [位置 ] 變更為 (X: 0、Y: 0、Z: 0)

VR 相機設定

Windows Mixed Reality支援各種體驗規模的應用程式,從僅限方向和基座調整應用程式到會議室規模應用程式。 在 HoloLens 上,您可以進一步並建置全球規模應用程式,讓使用者流覽超過 5 公尺的建築物和更新版本。

在 Unity 中建置混合實境體驗的第一個步驟是判斷您的應用程式將鎖定哪些 體驗 規模:

會議室規模或常設體驗

注意

如果您要建置 HL2,建議您建立眼部層級體驗,或考慮使用 Scene Understanding 來推斷場景底板。

使用適用于 Unity 的 MRTK 的 MixedRealityPlayspace 類別,並將 [目標調整 ] 設定為 [會議室 ] 或 [ 常設]:

MRTK 設定視窗

MRTK 應該會自動處理播放空間和相機的位置,但最好再次檢查:

MRTK 播放空間

  1. 從 [ 階層] 面板,展開 MixedRealityPlayspace GameObject 並尋找 Main Camera 子物件
  2. 在 [ 偵測器 ] 面板中,尋找 [轉換 ] 元件,並將 [位置 ] 變更為 (X: 0、Y: 0、Z: 0)

基座體驗

使用適用于 Unity 的 MRTK 的 MixedRealityPlayspace 類別,並將 [目標調整 ] 設定為 Seated

MRTK 設定視窗

MRTK 應該會自動處理播放空間和相機的位置,但最好再次檢查:

MRTK 播放空間

  1. 從 [ 階層] 面板,展開 MixedRealityPlayspace GameObject 並尋找 Main Camera 子物件
  2. 在 [ 偵測器 ] 面板中,尋找 [轉換 ] 元件,並將 [位置 ] 變更為 (X: 0、Y: 0、Z: 0)

設定相機背景

如果您使用 MRTK,則會自動設定及管理相機的背景。 針對 XR SDK 或舊版 WSA 專案,我們建議將相機的背景設定為 HoloLens 上的純黑色,並保留適用于 VR 的 skybox。

使用多個相機

當場景中有多個相機元件時,Unity 會根據 GameObject 具有 MainCamera 標籤來知道要用於身歷聲轉譯的相機。 在舊版 XR 中,它也會使用此標籤來同步處理前端追蹤。 在 XR SDK 中,頭部追蹤是由附加至相機的 TrackedPoseDriver 腳本所驅動。

共用深度緩衝區

根據您要轉譯的頭戴式裝置類型,將應用程式的深度緩衝區共用至 Windows 每個畫面都會提供全像投影穩定性中兩個提升的其中一個提升:

  • 當提供深度緩衝區時,VR 沉浸式頭戴裝置可以處理位置重現,以調整全像投影,以在位置和方向中調整您的全像投影來呈現錯誤。
  • HoloLens 頭戴式裝置 有一些不同的方法。 HoloLens 1 會在提供深度緩衝區時自動選取 焦點 ,並將全像投影穩定性與最內容交集的平面優化。 HoloLens 2會使用深度 LSR (穩定內容,請參閱)

MRTK 的設定對話方塊 會嘗試設定 XR SDK 和舊版 WSA 的深度緩衝區設定,但最好檢查這些索引標籤,並在 Unity 中驗證設定。

使用裁剪平面

轉譯內容太接近使用者,在混合實境中可能很不方便。 您可以在相機元件上調整 近距裁剪平面

  1. [階層] 面板中選取[主要相機]
  2. [偵測器 ] 面板中,尋找 相機 元件 裁剪平面 ,並將 [ 接近 ] 文字方塊從 0.3 變更為 0.85。 更接近轉譯的內容可能會導致使用者感到不適,而且應該根據 轉譯距離指導方針來避免。

最近使用相機

如果您要建置 基座規模體驗,您可以藉由呼叫 XR,在使用者目前的前端位置上,建立較新的 Unity 世界原點 。舊版 XR 中的 InputTracking.Recenter 方法,或 XR SDK 中的 XRInputSubsystem.TryRecenter 方法。

遙傳

這項功能通常保留給 VR 體驗:

MRTK 提供內建 的電話傳送系統 ,可自動跨已表達的手部和控制器運作。

重現模式

HoloLens 和沈浸式頭戴式裝置都會重新投影您的應用程式轉譯的每個畫面,以在發出光子時調整使用者實際頭部位置的任何錯誤。

依照預設:

  • 如果應用程式為指定的畫面提供深度緩衝區,VR 沉浸式頭戴裝置會負責位置重現。 沉浸式頭戴裝置也會調整全像投影,以在位置和方向中誤判。 如果未提供深度緩衝區,則系統只會以方向更正錯誤。
  • HoloLens 2之類的全像攝影頭戴式裝置會處理應用程式是否提供其深度緩衝區的位置重現。 在 HoloLens 上,不需要深度緩衝區即可進行位置重現,因為轉譯通常是使用真實世界提供的穩定背景疏鬆。

MRTK 目前沒有重現模式的協助程式。 如需詳細資訊,請參閱其他其中一個索引標籤。

下一個開發檢查點

如果您遵循我們配置的 Unity 開發旅程,您正在探索 MRTK 核心建置組塊。 接下來,您可以繼續進行下一個建置組塊:

或者,直接跳到混合實境平台功能和 API 的主題:

您可以隨時回到 Unity 開發檢查點

另請參閱