MRTK プロファイル構成ガイド

Mixed Reality Toolkit により、ツールキットを管理するために必要な構成が可能な限り一元化されます (本当に実行時の "こと" を除きます)。

このガイドは、ツールキットで現在使用できる各構成プロファイル画面の簡単なチュートリアルです。

メインの Mixed Reality Toolkit 構成プロファイル

シーンの MixedRealityToolkit GameObject にアタッチされているメインの構成プロファイルにより、プロジェクトにおけるツールキットへのメイン エントリ ポイントが提供されます。

Note

Mixed Reality Toolkit によって既定の構成画面は "ロック" され、プロジェクトで常に共通の開始点が使われることが保証されます。プロジェクトが進化したら、独自の設定の定義を始めることをお勧めします。 MRTK の構成は、再生モードでは編集できません。

MRTK configuration profile

Mixed Reality Toolkit の "既定" のプロファイルはすべて、SDK プロジェクトの Assets/MRTK/SDK/Profiles フォルダーにあります。

重要

DefaultHoloLens2ConfigurationProfile は HoloLens 2 用に最適化されています。 詳しくは、「プロファイル」をご覧ください。

メインの Mixed Reality Toolkit 構成プロファイルを開くと、インスペクターに次の画面が表示されます。

MRTK configuration scene

シーン内に MixedRealityToolkit がない状態で MixedRealityToolkitConfigurationProfile 資産を選んだ場合は、MRTK で自動的にシーンを設定するかどうかを確認するメッセージが表示されます。 これは省略可能ですが、すべての構成画面にアクセスするには、シーンにアクティブな MixedRealityToolkit オブジェクトが存在している必要があります。

これにより、プロジェクトの現在のアクティブな実行時構成が格納されます。

ここから、次のような MRTK のすべての構成プロファイルに移動できます。

これらの構成プロファイルについて詳しくは、以下の関連するセクションをご覧ください。


エクスペリエンス設定

Mixed Reality Toolkit のメインの構成ページにあるこの設定を使って、プロジェクトに対する Mixed reality 環境のスケールの既定の操作を定義します。

Experiance settings

カメラの設定

カメラの設定では、Mixed Reality プロジェクトのカメラの設定方法を定義し、一般的なクリッピング、品質、透明度の設定を定義します。

Camera Profile

入力システムの設定

Mixed Reality Project には、既定で選ばれるプロジェクトの周囲のすべての入力イベントをルーティングするための、堅牢で十分にトレーニングされた入力システムが用意されています。

Input System settings 1

MRTK によって提供される入力システムの背後には他にもいくつかのシステムがあり、マルチプラットフォームの Mixed Reality フレームワークの複雑さを抽象化するために必要な複雑な仕組みを駆動および管理するのに役立ちます。

Input System settings 2

個々のプロファイルの詳細は次のとおりです。


境界の視覚化の設定

基になるプラットフォームの境界やガーディアン システムによって報告された認識された境界は、境界システムによって変換されます。 境界ビジュアライザーの構成を使うと、ユーザーの位置を基準にして、記録された境界をシーン内に自動的に表示することができます。また、境界は、ユーザーがテレポートしたシーン内の位置に基づいて、応答したり更新されたりします。

Boundry Visualization Settings

テレポート システムの選択

Mixed Reality プロジェクトには、既定で選ばれるプロジェクトでのテレポート イベントを管理するために、すべての機能を備えたテレポート システムが用意されています。

Teleport System settings

空間認識の設定

Mixed Reality プロジェクトには、既定で選ばれるプロジェクトでの空間スキャン システムを操作するため、再構築された空間認識システムが用意されています。

Spatial Awareness settings 1

Mixed Reality Toolkit の空間認識の構成を使うと、システムの開始方法 (アプリケーションの起動時に自動的に、または後でプログラムによって) と、視野の範囲の設定を調整できます。

また、メッシュとサーフェスの設定を構成したり、ユーザーの周囲の環境がプロジェクトによって認識される方法をさらにカスタマイズしたりすることもできます。

これは、スキャンされた環境を提供できるデバイスにのみ適用できます。

Spatial Awareness settings 2

診断設定

オプションですが非常に便利な MRTK の機能は、プラグイン診断機能です。

Diagnostics settings

診断プロファイルには、プロジェクト実行中に監視を行うための簡単なシステムがいくつか用意されており、これにはシーンの表示パネルを有効または無効にするための便利なオン/オフ スイッチが含まれます。

Diagnostics settings System settings 2

シーンのシステム設定

MRTK には、複雑な加法シーンの読み込みとアンロードの管理を助けるため、このオプションのサービスが用意されています。 シーン システムがプロジェクトに適しているかどうかを判断するには、シーン システムの使用開始ガイドに関する記事をご覧ください。

Scene System settings 1

その他のサービスの設定

Mixed Reality Toolkit のさらに高度な部分の 1 つは、任意の "サービス" をフレームワークに登録できるサービス ロケーター パターンの実装です。 これにより、フレームワークを新しい機能やシステムで簡単に拡張できるだけでなく、プロジェクトでこれらの機能を利用して独自のランタイム コンポーネントを登録することもできます。

登録されたすべてのサービスですべての Unity イベントを完全に利用でき、MonoBehaviour や扱いにくいシングルトン パターンを実装するためのオーバーヘッドやコストは発生しません。 これにより、フォアグラウンドとバックグラウンド両方のプロセス (システムの生成、ランタイム ゲーム ロジック、または実質的に他のすべてのもの) を実行するためのシーンのオーバーヘッドがない、純粋な C# コンポーネントが可能になります。

additional System settings

入力アクションの設定

入力アクションにより、実行時のプロジェクトからの物理的なやり取りと入力を抽象化することができます。 すべての物理入力 (コントローラー、手、マウスなどから) は、実行時のプロジェクトで使用する論理入力アクションに変換されます。 これにより、どこからの入力であっても、プロジェクトでこれらのアクションをシーン内の "行うこと" または "操作するもの" として単に実装できます。

新しい入力アクションを作成するには、[Add a new Action](新しいアクションの追加) ボタンをクリックし、それが表すもののわかりやすいテキスト名を入力します。 必要なのは、アクションが伝達される軸 (データの方)、または物理コントローラーの場合は次のようなアタッチできる物理入力の型を、選択することだけです。

軸の制約 データ型 説明 使用例
なし データなし 空のアクションまたはイベントに使われます イベント トリガー
生 (予約済み) object 予約済み 該当なし
デジタル [bool] オンまたはオフのブール型のデータ コントローラー ボタン
1 つの軸 float 単精度のデータ値 範囲入力 (トリガーなど)
デュアル軸 Vector2 複数の軸に対する 2 つの float 型データ Dpad またはサムスティック
3 DOF の位置 Vector3 3 つの float 軸からの位置型データ 3D 位置スタイルのみのコントローラー
3 DOF の回転 Quaternion 4 つの float 軸での入力のみの回転 3 度スタイル コントローラー (Oculus Go コントローラーなど)
6 DOF Mixed Reality のポーズ (Vector3、Quaternion) Vector3 と Quaternion の両方のコンポーネントを含む位置と回転のスタイルの入力 モーション コントローラーまたはポインター

入力アクションを利用するイベントは物理コントローラーに限定されず、実行時の影響で新しいアクションを生成するためにプロジェクト内で利用することもできます。

Note

入力アクションは、実行時に編集できないいくつかのコンポーネントの 1 つであり、設計時にのみ構成できます。 各アクションに対して生成される ID にフレームワーク (およびプロジェクト) が依存するため、プロジェクトの実行中にこのプロファイルをスワップアウトすることはできません。

Configuration Profile

入力アクションの規則

入力アクション規則では、1 つの入力アクションに対して発生したイベントを、そのデータ値に基づいて異なるアクションに自動的に変換する方法が提供されます。 これらはフレームワーク内でシームレスに管理され、パフォーマンス コストは発生しません。

たとえば、DPad からの単一のデュアル軸入力イベントを、対応する 4 つの "Dpad 上"、"DPad 下"、"Dpad 左"、"Dpad 右" アクションに変換します (下の図を参照)。

これは、独自のコードで行うこともできます。 ただし、これは非常に一般的なパターンであったため、これを行うメカニズムはフレームワークで "すぐに使える機能" として提供されています

入力アクション規則は、使用可能な任意の入力軸に対して構成できます。 ただし、ある軸の型からの入力アクションを、同じ軸の型の別の入力アクションに変換できます。 デュアル軸アクションを別のデュアル軸アクションにマップできますが、デジタルまたはアクションなしにはマップできません。

Input action rules profile


ポインターの構成

ポインターは、シーンでの任意の入力デバイスからの対話機能を駆動するために使われます。シーン内の (コライダーがアタッチされている、または UI コンポーネントである) 任意のオブジェクトとの方向とヒット両方のテストが行われます。 ポインターは、コントローラー、ヘッドセット (視線入力、フォーカス)、マウスとタッチ入力に対して既定で自動的に構成されます。

ポインターは、Mixed Reality Toolkit によって提供される多数の線コンポーネントのいずれか、または MRTK IMixedRealityPointer インターフェイスを実装している独自のものを使用して、アクティブなシーン内で視覚化することもできます。

Input Pointer Profile
  • [Pointing Extent](ポイントの範囲): 視線入力を含むすべてのポインターのグローバルなポイント範囲を決定します。
  • [Pointing Raycast Layer Masks](ポイントのレイキャストのレイヤー マスク):どのレイヤー ポインターがレイキャストされるのか決定します。
  • [Debug Draw Pointing Rays](デバッグ描画ポインティング レイ): レイキャストに使用される光線を視覚化するデバッグ ヘルパー。
  • [Debug Draw Pointing Rays Colors](デバッグ描画ポインティング レイの色): 視覚化に使用する色のセット。
  • [Gaze cursor prefab](視線入力カーソル プレハブ): 任意のシーンのグローバル視線入力カーソルを簡単に指定できます。

視線入力プロバイダーにすばやく移動し、必要に応じて視線入力の特定の値をオーバーライドするための、追加のヘルパー ボタンがあります。


ジェスチャの構成

ジェスチャはシステム固有の実装で、さまざまな SDK (HoloLens など) によって提供されるさまざまな "ジェスチャ" 入力方法に入力アクションを割り当てることができます。

Note

現在のジェスチャの実装は HoloLens 専用であり、今後他のシステムがツールキットに追加されたら拡張されます (期日は未定)。

Gesture configuration

音声コマンド

ジェスチャと同様に、一部のランタイム プラットフォームには、Unity プロジェクトで受信できるコマンドを生成する機能を備えた、インテリジェントな "音声テキスト変換" 機能が用意されています。 この構成プロファイルを使うと、次のことを構成できます。

  1. [General Settings](全般設定) - [Start Behavior](開始動作) を [Auto Start](自動開始) または [Manual Start](手動開始) に設定して、入力システムの開始時に KeywordRecognizer を初期化するか、または KeywordRecognizer を初期化するタイミングをプロジェクトに決定させるかを決定します。 [Recognition Confidence Level](認識の信頼レベル) は、Unity の KeywordRecognizer API を初期化するために使用されます
  2. [Speech Commands](音声コマンド) - "語句" を登録し、プロジェクトで受け取ることができる入力アクションに変換します。 必要であれば、キーボード アクションにアタッチすることもできます。

重要

現在、音声がサポートされるのはシステムが Windows 10 プラットフォーム (HoloLens や Windows 10 デスクトップなど) で実行されている場合だけであり、他のシステムは今後 MRTK に追加された時点で拡張されます (期日は未定)。

Configuration Profile screens

コントローラー マッピングの構成

Mixed Reality Toolkit の主要な構成画面の 1 つは、プロジェクトで使用できるさまざまな種類のコントローラーを構成してマップする機能です。

次の構成画面では、ツールキットによって現在認識されているコントローラーを構成できます。

Controller Mapping

MRTK では、次のコントローラーおよびシステムの既定の構成が提供されます。

  • マウス (3D 空間マウスのサポートを含む)
  • タッチ画面
  • Xbox コントローラー
  • Windows Mixed Reality コントローラー
  • HoloLens ジェスチャ
  • HTC Vive ワンド コントローラー
  • Oculus タッチ コントローラー
  • Oculus リモート コントローラー
  • 汎用 OpenVR デバイス (上級ユーザーのみ)

事前構築済みのコントローラー システムのイメージをクリックすると、そのすべての対応する入力に対して 1 つの入力アクションを構成できます。たとえば、下の Oculus タッチ コントローラー構成画面を参照してください。

Controller config screen

上で示されていない他の OpenVR または Unity 入力コントローラーを構成するための高度な画面もあります。


コントローラーの視覚化の設定

コントローラーのマッピングに加えて、シーン内でのコントローラーの表示方法をカスタマイズするために、別の構成プロファイルが用意されています。

これは、"グローバル" に (特定の手に対するコントローラーのすべてのインスタンス)、または個別のコントローラーの種類と手に固有に、構成することができます。

Windows Mixed Reality と OpenVR 用のネイティブ SDK コントローラー モデルも、MRTK によってサポートされています。 これらはシーンに GameObjects として読み込まれ、プラットフォームのコントローラー追跡を使って配置されます。

シーンでのコントローラーの表現を物理コントローラーの位置からオフセットする必要がある場合は、単にコントローラー モデルのプレハブに対してそのオフセットを設定します (例: コントローラー プレハブとオフセット位置の変換位置の設定)。

Visualization profile

エディター ユーティリティ

次のユーティリティはエディターでのみ機能し、開発の生産性を向上させるのに役立ちます。

MRTK Editor Configuration Utilities

サービス インスペクター

サービス インスペクターは、アクティブなサービスを表すシーン内オブジェクトを生成するエディター専用の機能です。 これらのオブジェクトを選択すると表示されるインスペクターでは、ドキュメントのリンク、エディターの視覚化の制御、サービスの状態の分析情報が提供されます。

Service Inspectors

サービス インスペクターを有効にするには、構成プロファイルの [Editor Settings](エディターの設定)[Use Service Inspectors](サービス インスペクターを使用する) をオンにします。

深度バッファー レンダラー

一部の Mixed Reality プラットフォームで深度バッファーを共有すると、ホログラムの安定化を向上させることができます。 たとえば、Windows Mixed Reality プラットフォームでは、フレームのレンダリングにかかる時間の間の微妙な頭の動きを考慮して、レンダリングされるシーンをピクセル単位で変更できます。 ただし、これらの手法を使うには、ジオメトリの位置とユーザーからの距離を把握するため、正確なデータを含む深度バッファーが必要です。

必要なすべてのデータがシーンによって深度バッファーにレンダリングされるようにするため、開発者は、構成プロファイルの [Editor Settings](エディターの設定)[Render Depth Buffer](深度バッファーのレンダリング) 機能を切り替えることができます。 これにより、現在の深度バッファーが取得され、後処理効果 DepthBufferRenderer をメイン カメラに適用することで、シーン ビューに色としてレンダリングされます。

Render Depth Buffer Utilityシーン内の青いシリンダーには、ZWrite がオフの素材があるため、深度データは書き込まれません

実行時のプロファイルの変更

実行時にプロファイルを更新することができ、一般に、それが役に立つ 2 つの異なるシナリオとタイミングがあります。

  1. MRTK 初期化前のプロファイルの切り替え: 起動時、MRTK が初期化されて、プロファイルがアクティブになる前に、まだ使用されていないプロファイルを置き換え、デバイスの機能に基づいて異なる機能を有効または無効にします。 たとえば、空間マッピング ハードウェアがない VR でエクスペリエンスが実行されている場合、空間マッピング コンポーネントを有効にしても意味がない可能性があります。
  2. アクティブなプロファイルの切り替え: 起動後、MRTK が初期化されて、プロファイルがアクティブになった後、現在使用されているプロファイルをスワップして、特定の機能の動作方法を変更します。 たとえば、遠距離ハンド ポインターを完全に削除することが望まれる特定のサブエクスペリエンスがアプリケーションに存在する場合があります。

MRTK 初期化前のプロファイルの切り替え

これを実現するには、MRTK 初期化 (つまり Awake()) の前に実行される MonoBehaviour (以下の例) をアタッチします。 スクリプト (つまり、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 the 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 用に 1 つ、VR 用に 1 つ、HoloLens 2 用に 1 つなど)。 他のさまざまなインジケーター (たとえば https://docs.unity3d.com/ScriptReference/SystemInfo.html、またはカメラが不透明か透明か) を使用して、読み込むプロファイルを特定できます。

アクティブなプロファイルの切り替え

これを実現するには、MixedRealityToolkit.Instance.ActiveProfile プロパティを新しいプロファイルに設定して、アクティブなプロファイルを置き換えます。

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

実行中に ActiveProfile を設定すると、すべてのサービスの最後の LateUpdate() の後で現在実行中のサービスの破棄が行われ、新しいプロファイルに関連付けられているサービスのインスタンス化と初期化が、すべてのサービスの最初の Update() の前に行われることに注意してください。

このプロセスの間に、顕著なアプリケーションの遅延が発生する可能性があります。 また、MixedRealityToolkit スクリプトより優先順位の高いすべてのスクリプトは、新しいプロファイルが適切に設定される前にその Update に入る可能性があります。 スクリプトの優先順位について詳しくは、「Script Execution Order」をご覧ください。

プロファイルの切り替えプロセスでは、既存の UI カメラは変更されず、キャンバスを必要とする Unity UI コンポーネントは切り替え後も引き続き動作します。

関連項目