MRTK2 設定檔設定指南

Mixed Reality工具組會集中管理工具組所需的設定, (,但真正的執行時間「專案」) 除外。

本指南是工具組目前可用的每個組態設定檔畫面的簡單逐步解說。

主要Mixed Reality工具組組態設定檔

附加至場景中 MixedRealityToolkit GameObject 的主要組態設定檔,會在專案中提供工具組的主要進入點。

注意

Mixed Reality工具組「鎖定」預設組態畫面,以確保您一律有專案的常見起點,而且建議您在專案演進時開始定義自己的設定。 在播放模式期間無法編輯 MRTK 設定。

MRTK 組態設定檔

Mixed Reality工具組的所有「預設」設定檔都可以在 [資產/MRTK/SDK/設定檔] 資料夾中的 SDK 專案中找到。

重要

DefaultHoloLens2ConfigurationProfile 已針對HoloLens 2優化。 如需詳細資料,請參閱 設定檔

當您開啟主要Mixed Reality工具組組態設定檔時,您會在偵測器中看到下列畫面:

MRTK 設定場景

如果您在場景中沒有 MixedRealityToolkit 的情況下選取 MixedRealityToolkitConfigurationProfile 資產,它會詢問您是否要 MRTK 為您自動設定場景。 這是選擇性的;不過,場景中必須有作用中的 MixedRealityToolkit 物件,才能存取所有設定畫面。

這會裝載專案的目前作用中執行時間組態。

您可以從這裡流覽至 MRTK 的所有組態設定檔,包括:

這些組態設定檔詳述于其相關區段中:


體驗設定

位於主要Mixed Reality工具組組態頁面上,此設定會定義專案Mixed Reality環境調整的預設作業。

Experiance 設定

相機設定

相機設定會定義如何為您的Mixed Reality專案設定相機、定義一般裁剪、品質和透明度設定。

相機設定檔

輸入系統設定

Mixed Reality Project 提供強固且經過妥善訓練的輸入系統,以在預設選取的專案周圍路由傳送所有輸入事件。

輸入系統設定 1

MRTK 所提供的輸入系統背後的是數個其他系統,這些系統有助於推動和管理將多平臺/混合實境架構的複雜性抽象化所需的複雜交錯。

輸入系統設定 2

每個個別設定檔詳述如下:


界限視覺效果設定

界限系統會轉譯基礎平臺界限/守護者系統所報告的感知界限。 界限視覺化檢視設定可讓您自動顯示場景中相對於使用者位置的錄製界限。界限也會根據場景內使用者電報的位置來回應/更新。

系結視覺效果設定

遠端傳送系統選取

Mixed Reality Project 提供功能完整的 Teleportation 系統,用於管理專案中預設選取的遠端傳送事件。

Teleport 系統設定

空間感知設定

Mixed Reality Project 提供重建的空間感知系統,以在專案中使用預設選取的空間掃描系統。

空間感知設定 1

Mixed Reality工具組空間感知設定可讓您量身訂做系統啟動方式,無論是在應用程式啟動時或稍後以程式設計方式啟動,以及設定檢視欄位的範圍。

它也可讓您設定網格和表面設定,進一步自訂專案瞭解您周圍環境的方式。

這僅適用于可以提供掃描環境的裝置。

空間感知設定 2

診斷設定

MRTK 的選擇性但非常有用的功能是外掛程式診斷功能。

診斷設定

診斷設定檔提供數個可在專案執行時監視的簡單系統,包括方便的開啟/關閉開關,以啟用/停用場景中的顯示面板。

診斷設定 系統設定 2

場景系統設定

MRTK 提供此選擇性服務,協助您管理複雜的加法式場景載入/卸載。 若要決定場景系統是否適合您的專案,請閱讀場景系統消費者入門指南。

場景系統設定 1

其他服務設定

Mixed Reality Toolkit 的其中一個更進階區域是其服務定位器模式實作,可允許向架構註冊任何「服務」。 這可讓架構輕鬆擴充新功能/系統,但也允許專案利用這些功能來註冊自己的執行時間元件。

任何已註冊的服務仍會取得所有 Unity 事件的完整優勢,而不需要實作 MonoBehaviour 或 clunky 單一模式的額外負荷和成本。 這允許純 C# 元件,而不需要場景額外負荷來執行前景和背景進程,例如繁衍系統、執行時間遊戲邏輯,或幾乎任何其他專案。

其他系統設定

輸入動作設定

輸入動作可讓您從執行時間專案抽象化任何實體互動和輸入。 控制器/手/滑鼠/等 (的所有實體輸入) 都會轉譯成邏輯輸入動作,以用於執行時間專案。 這可確保無論輸入來自何處,您的專案都會將這些動作實作為場景中的「要執行」或「互動」。

若要建立新的輸入動作,只要按一下 [新增動作] 按鈕,然後輸入其所代表專案的易記文字名稱。 然後,您只需要選取座標軸 (動作) 要傳達的資料類型,或在實體控制器的情況下,可以附加的實體輸入類型,例如:

軸條件約束 資料類型 描述 範例用法
無資料 用於空白動作或事件 事件觸發程式
原始 (保留) object 保留供日後使用 N/A
Digital bool 布林值開啟或關閉類型資料 控制器按鈕
單一軸 FLOAT 單精確度資料值 範圍輸入,例如觸發程式
雙軸 Vector2 多軸的雙浮點數類型日期 Dpad 或 Thumbstick
三個 Dof 位置 Vector3 位置類型資料與 3 浮點數軸 僅限 3D 位置樣式控制器
三個 Dof 旋轉 四元數 僅具有 4 個浮點數軸的旋轉輸入 三度樣式控制器,例如 Go 控制器
六個 Dof Mixed Reality (向量3、四元數) 具有 Vector3 和四元陣列件的位置和旋轉樣式輸入 動作控制器或指標

使用輸入動作的事件不限於實體控制器,而且仍然可以在專案內使用,讓執行時間效果產生新的動作。

注意

輸入動作是在執行時間無法編輯的幾個元件之一,只是設計階段組態。 因為架構 (,而且您的專案) 每個動作所產生的識別碼相依性,所以不應該交換此設定檔。

組態設定檔

輸入動作規則

輸入動作規則提供一種方式,根據輸入值自動將一個輸入動作引發的事件轉譯成不同的動作。 這些是在架構內順暢地管理,而且不會產生任何效能成本。

例如,將單一雙軸輸入事件從 中的 DPad 轉換成 4 個對應的 「Dpad Up」 / 「DPad Down」 / 「Dpad Left」 / 「Dpad Right」 動作 (,如下圖所示) 。

這也可以在您自己的程式碼中完成。 不過,在看到這是非常常見的模式時,架構會提供一種機制來「現成」執行此動作

輸入動作規則可以針對任何可用的輸入軸進行設定。 不過,某個座標軸類型的輸入動作可以轉譯為相同座標軸類型的另一個輸入動作。 您可以將雙軸動作對應到另一個雙軸動作,但不能對應至數位或無動作。

輸入動作規則設定檔


指標設定

指標可用來從任何輸入裝置驅動場景中的互動性、提供方向和點擊測試,以及具有連結碰撞器之場景 (的任何物件,或是 UI 元件) 。 根據預設,指標會自動設定為控制器、頭戴裝置 (注視/焦點) 和滑鼠/觸控輸入。

如果指標實作 MRTK IMixedRealityPointer 介面,也可以使用Mixed Reality工具組所提供的許多行元件之一,或在使用中場景中視覺化。

輸入指標設定檔
  • 指向範圍:決定所有指標的全域指向範圍,包括注視。
  • 指向 Raycast 圖層遮罩:決定要針對哪些圖層指標進行光線傳送。
  • 偵錯繪製點光線:偵錯協助程式,用於視覺化用於光線廣播的光線。
  • 偵錯繪製點光線色彩:用來視覺化的一組色彩。
  • 注視游標預製:可讓您輕鬆地為任何場景指定全域注視游標。

還有其他協助程式按鈕可快速跳至注視提供者,以視需要覆寫注視的某些特定值。


手勢設定

手勢是系統特定的實作,可讓您將輸入動作指派給各種 SDK 所提供的各種「手勢」輸入方法 (,例如 HoloLens) 。

注意

目前的 Gestures 實作僅適用于 HoloLens,而且會針對其他系統增強,因為它們在未來新增至工具組, (尚未) 日期。

手勢設定

語音命令

如同手勢,某些執行時間平臺也提供智慧型「語音轉換文字」功能,讓您能夠產生 Unity 專案可接收的命令。 此組態設定檔可讓您設定下列各項:

  1. 一般設定 - 將 [開始行為] 設定為 [自動啟動] 或 [手動啟動] 會決定要在輸入系統啟動時初始化 KeywordRecognizer,或讓專案決定何時初始化 KeywordRecognizer。 「辨識信賴等級」可用來初始化 Unity 的 KeywordRecognizer API
  2. 語音命令 - 註冊「單字」,並將其轉譯成專案可接收的輸入動作。 如有需要,也可以附加至鍵盤動作。

重要

系統目前只在Windows 10平臺上執行時支援語音,例如 HoloLens 和 Windows 10 桌面,而且未來新增至 MRTK 時,其他系統將會增強, (尚未) 日期。

組態設定檔畫面

控制器對應組態

Mixed Reality Toolkit 的核心組態畫面之一,就是能夠設定及對應專案可以使用的各種控制器類型。

下方的設定畫面可讓您設定工具組目前辨識的任何控制器。

控制器對應

MRTK 提供下列控制器/系統的預設設定:

  • 滑鼠 (包括 3D 空間滑鼠支援)
  • 觸控式螢幕
  • Xbox 控制器
  • Windows Mixed Reality控制器
  • HoloLens 手勢
  • VM Vive Wand 控制器
  • 取觸控控制器
  • 登入遠端控制器
  • 僅限進階使用者的一般 OpenVR 裝置 ()

針對任何預先建置的控制器系統按一下 [映射] 可讓您針對其所有對應的輸入設定單一輸入動作,例如,請參閱下方的 Https Touch 控制器設定畫面:

控制器設定畫面

另外還有一個進階畫面,可用來設定上述未識別的其他 OpenVR 或 Unity 輸入控制器。


控制器視覺效果設定

除了控制器對應之外,還會提供個別的組態設定檔,以自訂控制器在場景中呈現的方式。

這可以在「全域」設定, (特定手部的所有控制器實例) 或個別控制器類型/手的特定實例。

MRTK 也支援適用于 Windows Mixed Reality 和 OpenVR 的原生 SDK 控制器模型。 這些會載入為場景中的 GameObject,並使用平臺的控制器追蹤定位。

如果您的控制器標記法必須從實體控制器位置位移,則只要針對控制器模型的預製物件設定該位移 (例如,將控制器預製專案的轉換位置設定為位移位置) 。

視覺效果設定檔

編輯器公用程式

下列公用程式只能在編輯器中運作,而且有助於提升開發生產力。

MRTK 編輯器設定公用程式

服務偵測器

服務偵測器是一項僅限編輯器的功能,可產生代表使用中服務的場景內物件。 選取這些物件會顯示提供檔連結的偵測器、控制編輯器視覺效果,以及深入瞭解服務狀態。

服務偵測器

您可以在組態設定檔的[編輯器設定] 底下檢查[使用服務偵測器] 來啟用服務偵測器。

深度緩衝區轉譯器

與一些混合實境平臺共用深度緩衝區可以改善 全像投影防震。 例如,Windows Mixed Reality平臺可以修改每個圖元的轉譯場景,以在轉譯畫面時考慮細微的頭部移動。 不過,這些技術需要具有精確資料的深度緩衝區,才能知道幾何與使用者的位置和距離。

為了確保場景會將所有必要的資料轉譯至深度緩衝區,開發人員可以在組態設定檔的[編輯器設定] 底下切換[轉譯深度緩衝區] 功能。 這會採用目前的深度緩衝區,並將後置處理效果 DepthBufferRenderer 套用至主要相機,將它呈現為場景檢視的色彩。

轉譯深度緩衝區公用程式場景中的藍色圓柱具有 ZWrite 關閉的材質,因此不會寫入深度資料

在執行時間變更設定檔

在執行時間可以更新設定檔,而且通常有兩個不同的案例和時間,在此案例中很有用:

  1. 預先 MRTK 初始化設定檔切換:在啟動時,在初始化 MRTK 之前,設定檔變成作用中,取代尚未使用的設定檔,以根據裝置功能啟用/停用不同的功能。 例如,如果體驗是在 VR 中執行且沒有空間對應硬體,則啟用空間對應元件可能並不合理。
  2. 作用中設定檔切換:啟動之後,初始化 MRTK 之後,設定檔變成作用中,交換目前用來變更特定功能行為方式的設定檔。 例如,應用程式中可能有特定的子體驗想要完全移除遠手指標。

預先 MRTK 初始化設定檔參數

您可以附加 MonoBehaviour (範例,) 在 MRTK 初始化 (即 Awake () ) 之前執行。 請注意,腳本 (也就是 SetProfileBeforeInitialization 呼叫) 必須早于 MixedRealityToolkit 腳本執行,這可以藉由設定 腳本執行順序設定來達成。

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

除了 「profileToUse」,也可以有一組任意設定檔套用至特定平臺 (例如,一個適用于 HoloLens 1、一個用於 VR、一個用於HoloLens 2等等) 。 您可以使用各種其他指標 (例如 https://docs.unity3d.com/ScriptReference/SystemInfo.html ,或相機是否不透明) ,來找出要載入的設定檔。

作用中設定檔切換

這可以透過將 MixedRealityToolkit.Instance.ActiveProfile 屬性設定為取代使用中設定檔的新設定檔來完成。

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

請注意,在執行時間期間設定 ActiveProfile 時,目前執行中服務的終結會在所有服務的最後一個 LateUpdate () 之後發生,而且所有服務的第一個 Update () 之前,就會發生與新設定檔相關聯的服務具現化和初始化。

此程式期間可能會發生明顯的應用程式錯誤。 此外,任何優先順序高於 MixedRealityToolkit 腳本的腳本,都可以在正確設定新設定檔之前輸入其 Update。 如需腳本優先順序的詳細資訊,請參閱 腳本執行順序設定

在設定檔切換程式中,現有的 UI 相機會保持不變,確保需要畫布的 Unity UI 元件仍會在切換之後運作。

另請參閱