MRが楽しい

MRやVRについて学習したことを書き残す

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3の音声入力

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3の音声入力」と「PhraseRecognitionSubsystem の概要」のページを合わせて読み進めます。
docs.microsoft.com
docs.microsoft.com

概要

MRTK3 の音声入力は PhraseRecognitionSubsystem の実装によって実現しています。
Unity の KeywordRecognizer を利用する WindowsPhraseRecognitionSubsystem をデフォルトで同梱しています。
MRTK v2 と同様に、この機能は、Windows Editor、Standalone Windows、UWPでのみサポートされます。

注意

このガイドでは新しい MRTK プロジェクトで音声サブシステムを有効にする手順を説明します。
音声関連以外の基本的な設定はすでに行われているものとします。

重要

HoloLens 2 で WindowsPhraseRecognitionSubsystem を実行すると「select」キーワードが認識されない外部起因の不具合があります。現在、関係者と連携して対応中です。
回避するには利用する音声認識キーワードを[StatefulInteractable(またはPressableButtonなどのサブクラス) -> Advanced StatefulInteractable Settings -> Allow Select By Voice -> Speech Recognition Keyword]の項目から変更してください。

セットアップ

音声サブシステムを有効にする

1. [Project Settings -> MRTK3 -> Available MRTK Subsystems]に移動します。
2. 使用したい音声サブシステムを有効にします。現時点では MRTK3 には WindowsPhraseRecognitionSubsystem のみが付属しています。

プロファイルを構成します

特定のサブシステムではプロファイルの構成を設定する必要がありますが、現時点の WindowsPhraseRecognitionSubsystem では構成の設定は不要です。
将来の PhraseRecognitionSubsystem の実装では必要になる可能性があることに注意してください。

[MRTK Speech]ゲームオブジェクトをアクティブにします

[MRTK XR Rig -> MRTK Speech]ゲームオブジェクトがアクティブであることを確認して下さい。
更に関連するスクリプト(SpeechInteractor)がアクティブであることを確認します。

マイクの使用権限を設定します

HoloLens2 でアプリを利用する場合、[Project Settings -> Player -> UWP -> PublishingSettings -> Capabilities]に移動し、[Microphone]にチェックを入れます。
これでマイクの使用権限が設定されます。

シーンを再生して動作を確認する

シーンを再生またはデバイスにアプリをデプロイして音声認識の動作を確認します。

PhraseRecognitionSubsystem の使用方法

StatefulInteractable(ボタンなど)と合わせて PhraseRecognitionSubsystem を使用する

PhraseRecognitionSubsystem の最も簡単な使用方法は StatefulInteractable と合わせて使用する方法です。
Interactable で指定された条件が満たされたときに SpeechInteractor によって StatefulInteractable に対する選択イベントがトリガーされます。
以下の設定の場合、指定されたフレーズの[select]が聞こえ、Interactable に視線が合っている場合にトリガーされます。

PhraseRecognitionSubsystem を手動で使用する

PhraseRecognitionSubsystem の手動での使用方法は音声コマンドのフレーズと、そのフレーズが聞こえたときに呼び出す UnityAction を直接登録する方法です。

// Get the first running phrase recognition subsystem.
// 最初に動作するフレーズ認識サブシステムを取得します。
var phraseRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<PhraseRecognitionSubsystem>();

// If we found one...
// 見つかった場合...
if (phraseRecognitionSubsystem != null)
{
    // Register a phrase and its associated action with the subsystem.
    // サブシステムにフレーズとそれに関連するアクションを登録する。
    phraseRecognitionSubsystem.CreateOrGetEventForPhrase("your phrase").AddListener(() => Debug.Log("Phrase recognized"));
}

2022/06/21時点での注意事項

現在(2022/06/21)最新の[MRTK Windows Speech Recognition]のバージョン[3.0.0-pre.6]では以下の不具合があり、手順通り設定を行っても音声認識が動作しません。
github.com

修正バージョンはまだ提供されていないので、どうしても MRTK3 で音声認識を利用したい場合は以下の修正を手動で反映する必要があります。
github.com

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く インタラクションモードマネージャ

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「インタラクションモードマネージャ」のページを読み進めます。
docs.microsoft.com

インタラクションモードマネージャ

インタラクションモードはユーザーが何をしているかの情報に基づいて有効にすべきインタラクションのサブセットを表します。
例えば「近接(Near)インタラクションモード」では全てのレイ系インタラクターを無効にし、掴み(grab)インタラクターや指さし(poke)インタラクターの使用を許可します。

ユーザーがオブジェクトを掴んでいるときは「掴み(GrabSelect)インタラクションモード」にしてタッチインタラクタを無効化し、オブジェクトを掴んでときに誤ってタッチ操作が発生しないようにします。

[InteractionModeManager]がこれらのインタラクション状況を仲介し、[InteractionModeDetector]が現在のコンテキストに最適なモードを決定します。
[ProximityDetector]のような Detector は任意の条件に基づいて、与えられた Controller に対してどのモードを有効にするか決定します。

開発者は[IInteractionModeDetector]を実装することで、インタラクション間の曖昧さを解消する新しい条件を作成することができます。

各モードの優先順位は[InteractionModeManager]の中で表示されている順番で決まります。
複数のインタラクション状況が有効な場合、リストの後半にあるモードがより高い優先度を持ち、主要なモードとなります。
また[InteractionModeManager]ではデフォルトのインタラクションモードを指定することも可能です。

MetaQuest2を起動するとパススルー画面のままメニューが表示されない事象の対処

本日は MetaQuest2 の小ネタ枠です。
MetaQuest2を起動するとパススルー画面のままメニューが表示されない事象が発生したのでその対処について情報を残しておきます。

MetaQuest2を起動するとパススルー画面のままメニューが表示されない

著者の MetaQuest2 を起動するとパススルー画面のままメニューが表示されない事象が発生しました。
この事象が発生すると、メニューが表示されないので Quest2 に関する操作が何もできなくなります。

参考ページ

以下のページに同様の事象報告がありました。
事象再現中は筆者の Quest2 のバージョンは v26 であり、条件に合致していました。
note.com

対処として v28 にアップデートすることが挙げられています。
ただし本事象が再現すると、メニュー画面が開けないので手動でアップデートは実施できません。
Quest2 を起動したまま電源に差し込んでおくと自動でアップデートが走るようなので、これが1つの対処方法になります。

即時対処の方法

手動アップデートができなかったため、[開発者モード]に原因があると考えて筆者環境では後述の対処を試してみました。
ただし同時に自動アップデートも実行されたようで事象解消後にバージョンを確認すると v28 に更新されていました。
このため、厳密には後述の[開発者モード]変更の対処が有効であったかは不明です。

実施した対処

Quest2 と連携している携帯端末から[開発者モード]を無効化して再起動することで解決しました。
[開発者モード]を無効化して再起動すると、[ガーディアンの設定]の案内が表示されて設定を行うとメニュー画面が表示されます。

開発者モードの無効化方法

Quest2 と連携している携帯端末で[Oculus]アプリを起動します。
[メニュー -> デバイス]を選択して連携中のデバイス一覧を開きます。

連携中の Quest2 を開き、[開発者モード]を選択します。

[開発者モード]のトグルが表示されるのでこれを無効化します。

後は Quest2 本体の電源ボタンを長押しして再起動を実行します。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3でのハンドトラッキング

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3でのハンドトラッキング」のページを読み進めます。
docs.microsoft.com

概要

多関節のハンドジョイントデータは MRTK サブシステムによって処理されます。
これは Unity 入力システムによってネイティブに処理されていない入力データの 1 つです。

MRTK3 サブシステムと MRTK 2.x サービスとの違いについてよく知らない場合は、
MRTK3 サブシステムのアーキテクチャーに関するドキュメントを参照して、
MRTK の哲学と設計を深く掘り下げてください。
https://docs.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/mrtk3-overview/architecture/subsystems

MRTK のサブシステムは複数のソースから手作業で共同データを取得し、それらをデバイスとシミュレーションコンテキスト間で機能する中央 API に集約します。
以下に HandsSubsystem サブシステムの実装を示します。

・OpenXRHandsSubsystem は OpenXR プラグインから直接ハンドデータを受け取ります。
・XRSDKHandsSubsystem は Unity の XR SDK の抽象化レイヤーからハンドデータを受け取ります
 (このレイヤーは OpenXR やその他のソースからデータをソースにしている可能性があります)。
・SyntheticHands サブシステムはシステムからの入力アクション(devicePosition、deviceRotationなど)に基づいてハンドジョイントを合成します。
 このサブシステムはエディタで入力シミュレーションを使用するときに表示されるジョイントを提供します。

これらの HandsSubsystem はハンドデータの全てのソースを中央 API に結合する HandsAggregatorSubsystem によって照会できます。

ハンドジョイントデータを直接クエリする場合は個々の HandsSubsystem からではなく HandsAggregatorSubsystem からクエリを実行することをお勧めします。
そうすることでコードはシミュレートされたデータを含む、ハンドジョイントデータの任意のソースに対して機能します。

HandsAggregatorSubsystem と HandsSubsystem は着信ハンドデータ要求を遅延評価で実行します。
ハンドデータは「クライアント」スクリプトが要求するまで照会されません。
アプリが個々のジョイントのみを要求する場合、ハンドサブシステムは遅延評価で実行され、基になる API から単一のジョイントのみを照会します。
「クライアント」がフルハンド相当のジョイントデータを要求する場合、同じフレーム内の後続の呼び出しで同じデータが再利用されます。このため、同じフレーム内の多くのジョイントを照会するコストが削減されます。
新しいフレームごとにキャッシュはフラッシュされ、後続の呼び出しはキャッシュの補充を開始します。

この仕組みにより、アプリケーションをプロファイリングしたとき、フレーム内の最初のジョイントクエリが後続のクエリよりも時間がかかることがあります。
これは最初のクエリに関連付けられたコストと、その後の「キャッシュヒット」の相対的なパフォーマンスによるものです。

摘み(Pinch)特性

HandsAggregatorSubsystem は各特定のハンドサブシステムから照会するジョイントデータに基づいて、摘み(Pinch)ジェスチャに関するいくつかの敷居値を計算します。
これらの敷居値は HandsAggregatorSubsystem 構成で構成されます。

[Pinch Open Threshold]と[Pinch Closed Threshold]は摘み(Pinch)ジェスチャの進行状況を判定する親指と人差し指の間のワールドの絶対距離を制御します。
距離が閉じた[Pinch Closed Threshold]と等しい場合、ピンチの進行状況は 1.0 になり、[Pinch Open Threshold]に等しい場合は 0.0 になります。
(これらの敷居値は現在ワールド単位ですが、まもなくユーザーの手のサイズに正規化されます)

[Hand Raise Camera FOV]は摘み(Pinch)ジェスチャを有効と見なすために、ハンドがユーザー視点の中心にどれだけ近い角度に含まれるかを判定します。
[Hand Facing Away Tolerance]はユーザーの手の回転を測定し、いつユーザーの手が反対側を向いているかを判断するための許容範囲を制御します。

コード例

// Get a reference to the aggregator.
// HandsAggregatorSubsystem への参照を取得します
var aggregator = XRSubsystemHelpers.GetFirstRunningSubsystem<HandsAggregatorSubsystem>();
// Wait until an aggregator is available.
// HandsAggregatorSubsystem が利用できるようになるまで待機します
IEnumerator EnableWhenSubsystemAvailable()
{
    yield return new WaitUntil(() => XRSubsystemHelpers.GetFirstRunningSubsystem<HandsAggregatorSubsystem>() != null);
    GoAhead();
}
// Get a single joint (Index tip, on left hand, for example)
// 単体のジョイントデータを取得する(例:左手の人差し指の指先)
bool jointIsValid = aggregator.TryGetJoint(TrackedHandJoint.IndexTip, XRNode.LeftHand, out HandJointPose jointPose);
// Get an entire hand's worth of joints from the left hand.
// 左手から手のひら全体のジョイントデータを取る。
bool allJointsAreValid = aggregator.TryGetEntireHand(XRNode.LeftHand, out IReadOnlyList<HandJointPose> joints);
// Check whether the user's left hand is facing away (commonly used to check "aim" intent)
// This is adjustable with the HandFacingAwayTolerance option in the aggregator configuration.
// handIsValid represents whether there was valid hand data in the first place!
// ユーザーの左手が反対側を向いているかどうかをチェックします(一般的に指さしの意図をチェックするために使用されます)。
// この判定敷居値は HandsAggregatorSubsystem の設定にある HandFacingAwayTolerance オプションで調整できます。
// handIsValid はそもそも有効な手のデータがあったかどうかを表します。
bool handIsValid = aggregator.TryGetPalmFacingAway(XRNode.LeftHand, out bool isLeftPalmFacingAway);
// Query pinch characteristics from the left hand.
// pinchAmount is [0,1], normalized to the open/closed thresholds specified in the aggregator configuration.
// isReadyToPinch is adjusted with the HandRaiseCameraFOV and HandFacingAwayTolerance settings in the configuration.
// 左手から掴み(Pinch)ジェスチャーの状態を問い合わせます。
// pinchAmount は 0 から 1 の値で HandsAggregatorSubsystem の構成で指定された敷居値を基に正規化されています。
// isReadyToPinch の判定は構成の HandRaiseCameraFOV と HandFacingAwayTolerance の設定で調整できます。
bool handIsValid = aggregator.TryGetPinchProgress(XRNode.LeftHand, out bool isReadyToPinch, out bool isPinching, out float pinchAmount);

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3 input と MRTK サブシステム

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3 input」と「MRTK サブシステム」のページを読み進めます。
docs.microsoft.com
docs.microsoft.com

MRTK3 input

MRTK3 の入力は主に Unity の入力システムと MRTK サブシステムの 2 つのパスでルーティングされます。
Unity の入力システムはコントローラーのボタンやスティック、コントローラーとハンドポインターのポーズまで全てのサポート対象に使用されます。
MRTK サブシステムは手の関節や音声など、幅広い対話式操作に必要なデータ用に存在します。

Unity の入力システムについては以下のドキュメントを参照ください。
docs.unity3d.com

MRTK サブシステム

MRTK3 は Unity XR サブシステムを活用して、音声やハンドトラッキングなどの機能のクロスプラットフォームサポートに役立つ拡張可能なモジュールを作成します。
これらのサブシステムは、XRMeshSubsystem や XRInputSubsystem などの既存の Unity サブシステムとともに Unity によって初期化およびロードされます。

Unity サブシステムの仕組みについては以下のドキュメントを参照してください。
docs.unity3d.com

理念

MRTK v2 では「サービス」がシーン自体の機能の多くを提供しました。これらはオブジェクトのインスタンス化、オブジェクトの移動、シーン階層の更新などを行いました。
MRTK3 ではサブシステムはシーンを明示的に変更しません。
MRTK3 サブシステムはデータ、情報、またはイベントのモジュラー・プロバイダーであるか、エンド・ユーザーのために計算を実行します。
シーン内の何かをデータ入力に基づいて変更または処理する必要がある場合は、データを操作する別のシーンベースのビジュアライザーコンポーネントが必要です。この分割によりサブシステムはシーンの変更に関して非破壊的であり、シーン関連の副作用を引き起こさないことが保証されます。

MRTK v2 は入力の処理にシステムとサービスを自由に使用していました。
MRTK3 は一般にクロスプラットフォームの入力に OpenXR と Unity Input System を使用します。ただし、一部のタイプのデータは入力システムによってまだラップされていません。
ラップされていない場合、MRTK3 はサブシステムを通じてクロスプラットフォームインターフェースを提供します。

MRTKサブシステムのライフサイクル

Unity のインフラストラクチャに含まれているサブシステム定義は[Start],[Stop],[Destroy]などの単純なライフサイクル方法を提供します。
MRTK はこれらの定義のほか[Update],[LateUpdate],[FixedUpdate]などの便利な定期メソッドを拡張します。

MRTK の[MRTKLifecycleManager]はライフサイクルインタフェースを実装するサブシステムを管理します。
これはサブシステムアーキテクチャに関与する唯一の MonoBehavior です。
シーン内のどこにでも配置できますが、通常はリグのどこかに残しておきます。

クエリ

サブシステム実装の照会は簡単でパフォーマンスに優れています。

// Gets the first valid implementation of T that is started and running.
// 開始および実行されている T の最初の有効な実装を取得します。
T mySubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<T>();

// Gets the first valid implementation of T, even if it hasn't been started.
// 開始されていないものでも T の最初の有効な実装を取得します。
T mySubsystem = XRSubsystemHelpers.GetFirstSubsystem<T>();

// If multiple implementations of T are loaded, get all of them.
// T の複数の実装がロードされている場合は、それらのすべてを取得します。
List<T> allOfThem = new List<T>();
GetAllRunningSubsystemsNonAlloc<T>(allOfThem);

記述子

サブシステムの実装が異なれば、機能も異なる場合があります。
例えば、HandsSubsystem の実装では物理データまたは合成データを報告する機能を指定できます。
この機能情報はサブシステム記述子に格納され、任意の実装について照会できます。

// Get the first running hands subsystem.
// 最初に実行しているハンドサブシステムを取得します。
var handsSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<HandsSubsystem>();

// If we found one...
// もし発見できれば...
if (handsSubsystem != null)
{
    // Read the capability information off the implementation's descriptor.
    // 実装の記述子から機能情報を読み取ります。
    bool isPhysicalData = handsSubsystem.subsystemDescriptor.IsPhysicalData;
}

プロファイル

MRTK3 サブシステムのプロファイルは作成および開始されるサブシステムを定義するプラットフォームごとの定義です。
MRTK 2.xのプロファイルとは異なります。

対応するチェックボックスがオンになっているサブシステムは MRTKLifecycleManager によって作成および起動され、ライフサイクルメソッドが呼び出されます。
異なるプロファイルをプラットフォームごとに割り当てることができます。

プロファイルに表示されるサブシステムはインストールしたパッケージによって決まります。
パッケージがインストールされていない場合、一覧が自動更新されてそのパッケージに関連付けられているサブシステムは表示されません。

MRTK3 パッケージの一部として提供される既製の MRTKProfile があります。これは不変のアセットです。
実行するサブシステムのカスタムプロファイルを作成する場合は、プロジェクト内に MRTKProfile アセットを作成する必要があります。

MRTKProfile を作成する場合は MRTK3 をインポートしたプロジェクトのアセットフォルダで右クリックから[Create -> MRTK -> MRTKProfile]で作成できます。

構成

サブシステムに構成オブジェクトを割り当てて、その動作をカスタマイズできます。

これらの構成オブジェクトは XRSubsystemHelpers API を介してどこからでもアクセスできます。

XRSubsystemHelpers.GetConfiguration<TConfig, TSubsystem>()

サブシステムは MRTKSubsystemAttribute でどの構成タイプがサブシステムに関連するかを定義します。加えてこの属性は実装されたプロバイダーの具象型と共に、いくつかのメタデータも定義します。
例えば、以下は MRTK Hands Aggregator サブシステムが使用する属性です。

[MRTKSubsystem(
        Name = "com.microsoft.mixedreality.hands",
        DisplayName = "MRTK Hands Aggregator Subsystem",
        Author = "Microsoft",
        ProviderType = typeof(MRTKAggregator),
        SubsystemTypeOverride = typeof(MRTKHandsAggregatorSubsystem),
        ConfigType = typeof(MRTKHandsAggregatorConfig))]

プロファイルと同様に、MRTK3 ではデフォルトの構成アセットが提供されています。
これらは不変のアセットです。
構成を編集するにはプロジェクトにアセットを複製または新規作成する必要があります。

作成する場合は MRTK3 をインポートしたプロジェクトのアセットフォルダで右クリックから[Create -> MRTK -> Subsystems]から作成できます。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3 environment

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3 environment」のページを読み進めます。
docs.microsoft.com

MRTK3 environment

[MRTK3 environment]パッケージには空間認識と仮想現実の境界を簡単に操作し、魅力的な視覚的表現を可能にする機能とコンポーネントが用意されています。

[MRTK3 environment]パッケージは現在、初期プレビュー段階です。
初期プレビューパッケージには計画されているすべての機能が含まれているわけではなく、リリース前にアーキテクチャに大きな変更が加えられる可能性があります。

境界サブシステム

MRTK3 にはユーザーの安全なプレイスペースを確認したい開発者が利用できる境界サブシステムが含まれています。
このデータの多くは XR 入力サブシステムなどの Unity が提供する API から取得されます。

MRTK チームは境界サブシステムに関する開発者からのフィードバックを求めています。
Unity で公開されたデータを 1 つの API に集約することに価値はありますか?
たとえば、ユーザーがプレイスペース/境界を出たかどうかを判断するためのユーティリティスクリプトに焦点を当てる方が良いですか?
GitHub リポジトリの会話に参加してください。
https://github.com/Microsoft/MixedRealityToolkit-Unity

空間メッシュの視覚化

視覚的に説得力のある空間メッシュ表現はユーザーの体験を向上させることができます。
MRTK3 には魅力的な表現を実装するために拡張できるクラスが含まれています。
MRTK3 Environment/Visualizers/SpatialMesh を参照してください。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3パッケージの使用

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3パッケージの使用」のページを読み進めます。
docs.microsoft.com

MRTK3パッケージの使用

MRTK3 は Mixed Reality Feature Tool と Unity Package Manager (UPM) を使用して Unity にインポートするパッケージとして配布されます。
これらのパッケージを使用すると、開発者はプロジェクト内で MRTK3 をカスタマイズできます。

MRTK パッケージのインポートの詳細については以下の記事を参照ください。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

依存関係

一部の MRTK3 パッケージは Microsoft または Unity が提供する追加のパッケージを必要とします。
これらのパッケージの一部はオプションであり、追加の機能を有効にします。

Mixed Reality Feature Tool を使用してパッケージをインポートすると自動的に依存関係の管理が実行されます。

次の図は MRTK パッケージと一部の Unity 依存関係の関係を示しています。

画像は参照ページより引用

次の表では MRTK パッケージの依存関係について説明します。

表示名 パッケージ名 説明 必須パッケージ 任意パッケージ
MRTK Core Definitions com.microsoft.
mrtk.core
共有定義、ユーティリティおよびコンポーネント ・com.unity.xr.
 interaction.toolkit
・com.unity.xr.
 management
MRTK Accessibility com.microsoft.
mrtk.accessibility
複合現実体験を構築するための定義、機能、サブシステム ・com.microsoft.
 mrtk.core
・com.microsoft.mrtk.
 graphicstools.unity
・com.unity.
 meshpro
MRTK Data Binding and Theming com.microsoft.
mrtk.data
データバインディングと UI のテーマ設定 ・com.microsoft.
 mrtk.core
・com.unity.nuget.
 newtonsoft-json
・com.unity.
 textmeshpro
MRTK Diagnostics com.microsoft.
mrtk.diagnostics
診断およびパフォーマンス監視サブシステム ・com.microsoft.
 mrtk.core
・com.unity.xr.
 management
MRTK Environment com.microsoft.
mrtk.environment
空間認識や境界などの環境機能とサブシステム ・com.microsoft.
 mrtk.core
・com.unity.xr.
 management
MRTK Extended Assets com.microsoft.
mrtk.extendedassets
追加のオーディオ、フォント、テクスチャ、およびその他のアセット ・com.microsoft.
 mrtk.standardassets
・com.microsoft.mrtk.
 graphicstools.unity
MRTK Input com.microsoft.
mrtk.input
多関節式ハンドのサポート、オフライン音声認識
エディター内シミュレーションなどの入力コンポーネント
・com.microsoft.
 mrtk.core
・com.microsoft.mrtk.
 graphicstools.unity
・com.unity.xr.
 interaction.toolkit
・com.unity.
 inputsystem
・com.unity.xr.
 management
・com.unity.xr.openxr
・com.unity.xr.
 arfoundation
MRTK Spatial Manipulation com.microsoft.mrtk.
spatialmanipulation
空間配置と操作のコンポーネントとユーティリティ(ソルバーを含む) ・com.microsoft.
 mrtk.core
・com.microsoft.
 mrtk.uxcore
・com.unity.
 inputsystem
・com.unity.xr.
 interaction.toolkit
com.microsoft.
mrtk.input
MRTK Standard Assets com.microsoft.
mrtk.standardassets
マテリアルやテクスチャなどの標準アセット ・com.microsoft.mrtk.
 graphicstools.unity
MRTK UX Components com.microsoft.
mrtk.uxcomponents
複合現実用の 3D のユーザインタフェース構築を開始するための
プレハブ、ビジュアル、既製のコントロールなど全てのアセット
・com.microsoft.
 mrtk.uxcore
・com.microsoft.mrtk.
 spatialmanipulation
・com.microsoft.
 standardassets
com.microsoft.
mrtk.data
MRTK UX Core com.microsoft.
mrtk.uxcore
MR ユーザーインターフェイスコンポーネントを構築するための
コアインタラクションスクリプトと視覚化スクリプト
・com.microsoft.
 mrtk.core
・com.microsoft.mrtk.
 graphicstools.unity
・com.unity.
 inputsystem
・com.unity.
 textmeshpro
・com.unity.xr.
 interaction.toolkit
com.microsoft.
mrtk.data
MRTK Windows Speech com.microsoft.
mrtk.windowsspeech
Windows 音声 API の音声サブシステムの実装 ・com.microsoft.
 mrtk.core

パッケージテストの実行

一部の MRTK パッケージにはコンポーネントを検証するためのテストが含まれています。
これらのテストでは依存関係としてアサートされていない追加の MRTK パッケージが必要なことがあります。

Unity にパッケージをインポートする場合、テストアセンブリはデフォルトでコンパイルされません。
テストのコンパイルを有効にするにはプロジェクトの manifest.json ファイルの testables 要素を使用してください。

MRTK をインポートするアプリケーションのオーバーヘッドを最小限に抑えるために、依存関係はランタイム要件に対してのみアサートされます。
次の表にテストアセンブリコンパイルと実行を有効にするために必要な追加パッケージを示します。

表示名 パッケージ名 テスト要件
MRTK Core Definitions com.microsoft.mrtk.core
MRTK Accessibility com.microsoft.mrtk.accessibility
MRTK Data Binding and Theming com.microsoft.mrtk.data
MRTK Diagnostics com.microsoft.mrtk.diagnostics
MRTK Environment com.microsoft.mrtk.environment
MRTK Extended Assets com.microsoft.mrtk.extendedassets
MRTK Input com.microsoft.mrtk.input
MRTK Spatial Manipulation com.microsoft.mrtk.spatialmanipulation com.microsoft.mrtk.input
MRTK Standard Assets com.microsoft.mrtk.standardassets
MRTK UX Components com.microsoft.mrtk.uxcomponents com.microsoft.mrtk.input
MRTK UX Core com.microsoft.mrtk.uxcore com.microsoft.mrtk.input
MRTK Windows Speech com.microsoft.mrtk.windowsspeech