MRが楽しい

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

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3のシーンの使用と作成(新しいシーンの作成)

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

Mixed Reality Toolkit 3 のドキュメント

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

今回は「MRTK3のシーンの使用と作成」のページの「MRTK3 を使用した新しいシーンの作成」項を実際に確認しつつ読み進めます。
docs.microsoft.com

前提条件

事前に以下の記事に従ってMRTK パッケージを追加した Unity プロジェクトを作成してください。
bluebirdofoz.hatenablog.com

MRTK3 を使用した新しいシーンの作成

1.新しい Unity シーンを作成する

MRTK3 を利用する新しい Unity シーンを用意します。

2.MRTK XR Rigプレハブの追加

以下の Assets フォルダから[MRTK XR Rig.prefab]を Hierarchy にドラッグしてシーンに追加します。
・Packages/MRTK Input/Assets/Prefabs

3.既存のメインカメラの削除

MRTK XR Rig には既に Main Camera ゲームオブジェクトが含まれています。
重複を避けるため、既存の Main Camera ゲームオブジェクトを削除します。

4.MRTK Input Simulatorプレハブの追加

以下の Assets フォルダから[MRTK Input Simulator.prefab]を Hierarchy にドラッグしてシーンに追加します。
・Packages/MRTK Input/Simulation/Prefabs

この手順は MRTK3 の動作には必須ではありません。
エディタ内のシミュレーションを利用する場合のみ必須となります。

5.動作確認

これで MRTK3 を利用する空のシーンが構築できました。
[再生]ボタンをクリックしてシーンを再生し、W, A, S, D キーを押下してシーン内を移動できることを確認します。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3のシーンの使用と作成(サンプルシーン)

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

Mixed Reality Toolkit 3 のドキュメント

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

今回は「MRTK3のシーンの使用と作成」のページの「MRTK3 サンプルプロジェクトに同梱されているサンプルシーン」項を実際に確認しつつ読み進めます。
docs.microsoft.com

MRTK3 サンプルプロジェクトに同梱されているサンプルシーン

MRTK3 サンプルプロジェクトの利用手順の詳細は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

本項ではこのサンプルプロジェクトに含まれるサンプルシーンで体験できる機能を紹介しています。

一般的なサンプルシーン

MRTK3 の機能に関するサンプルシーンは以下の Assets フォルダに含まれています。
・Assets/Scenes

ハンドインタラクション(HandInteractionExample.unity)

指さし、タッチ、掴み、両手操作などの様々な手を使った操作 UI の例を体験できます。

境界制御(BoundsControlExamples.unity)

平面化された境界と 3D 境界の両方を BoundsControl を使った様々な構成で表示します。

キャンバス(CanvasExample.unity)

Unity キャンバス上に構築された UX コンポーネントのコレクションを表示します。
これらの UX コンポーネントは XR Interaction Toolkit 上に構築され、完全な XR インタラクションをサポートします。
同時に Canvas でも作成され、マウス、キーボード、ゲームパッドとの従来のインタラクションもサポートします。

ダイアログ(DialogExample.unity)

このシーンではダイアログの使用方法を示します。

視線入力(EyeGazeExample.unity)

視線インタラクタを使用してシーン内のオブジェクトをハイライト表示します。

ハンドメニュー(HandMenuExamples.unity)

手に追従するメニューの使用方法を示します。

対話型ボタン(InteractableButtonExamples.unity)

対話型ボタンの様々なスタイルの例を示します。

近距離メニュー(NearMenuExamples.unity)

近距離メニューの例を示します。

オブジェクトバー(ObjectBarExample.unity)

オブジェクトバーを表示します。
オブジェクトバーはサイズが変化するバックプレートを持つ水平または垂直のスタックに配置されたオブジェクトの動的なコレクションです。

空のサンプルシーン(SampleEmptyMRTKScene.unity)

このシーンにはコア MRTK プレハブ(MRTK XR Rig)と入力シミュレータプレハブ(MRTKInputSimulator)のみが含まれています。
これは開発者にMRTKの必需品のみが含まれたシーンを提供することを目的としています。

スレート描画(SlateDrawingExample.unity)

MRTK3 を使用して簡単な描画アプリケーションを作成する例を示します。

空間マッピング(SpatialMappingExample.unity)

このシーンでは MRTK3 で ARMeshManager(MRTK XR Rig -> ARSpatialMeshManager) を使用して空間メッシュを視覚化する方法を示します。

タブビュー(TabViewExample.unity)

関連付けられたゲームオブジェクトの表示を制御するトグル操作の例を示します。

トグルコレクション(ToggleCollectionExample.unity)

コレクション内の 1 つのトグルだけがアクティブになるように強制する ToggleCollection スクリプトの使用方法を示します。

UIバックプレート(UIBackplateExample.unity)

このシーンでは様々なタイプの UI パネルとメニューを構築するために使用できる UIBackplate.prefab を示します。

UIテストシート(UITearSheet.unity)

このシーンでは MRTK で使用可能な全ての UI 構成要素とその配列を示します。
全てのコントロールは新しい Mixed Reality デザイン言語に基づいています。

データバインディングとテーマ設定のサンプルシーン

MRTK3 サンプルプロジェクトの以下に同梱されているデータバインディングとテーマ設定のサンプルシーンを紹介します。
・Assets\UX Theming Example\Scenes
・Assets\DataBinding Example\Scenes


事前準備

UX Theming Example のサンプルシーンを試す場合は事前に以下の Script Define Symbols を追加しておく必要があります。

MRTK_UX_DATABINDING_THEMING_ENABLED

メニューから[Edit -> Project Settings]を開き、[Player]タブを開きます。

[Other Settings]パネルを開き、[Script Define Symbols]に MRTK_UX_DATABINDING_THEMING_ENABLED を追加します。

オーディオテーマ(Assets\UX Theming Example\Scenes\AudioTheming.unity)

データバインディングとテーマを使用して仮想キーボードのサウンドを変更します。

バッテリーレベル(Assets\UX Theming Example\Scenes\BatteryLevelExample.unity)

データバインディングを使用してバッテリレベル表示を更新します。

UXコアの外観(Assets\UX Theming Example\Scenes\CoreUXThemingExample.unity)

データバインディングとテーマを使用して UX コアコンポーネントの外観を制御します。

データバインド(Assets\DataBinding Example\Scenes\DataBindingExamples.unity)

データバインディングとテーマを使用してデータソースにバインドする方法を示します。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く 初期セットアップ(手順2:MRTK パッケージを追加する)

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

Mixed Reality Toolkit 3 のドキュメント

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

今回は「MRTK3 の初期セットアップ」のページの「手順2:MRTK3 を新しい Unity プロジェクトに追加する」項を実際に試しつつ読み進めます。
docs.microsoft.com

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

手順2:MRTK3 を新しい Unity プロジェクトに追加する

1.新しい Unity プロジェクトを作成する

Unity (2020.3.35f1 以降 / 2021.3.4f1 以降) で新しい Unity プロジェクトを作成します。

次のステップに進む前に Unity プロジェクトを閉じてください。

2.必要な依存関係と MRTK3 パッケージを Mixed Reality Feature Tool でインポートする

Mixed Reality Feature Tool を使って MRTK3 をプロジェクトにインポートします。
最新の Mixed Reality Feature Tool の取得方法と MRTK3 を参照する設定の詳細は以下のページを参照ください。
bluebirdofoz.hatenablog.com

[Select project]ページで先ほど作成した Unity プロジェクトを選択します。

[Discover Features]ステップで必要なパッケージを選択します。
[MRTK3]の欄から必要な MRTK3 のパッケージを選択します。必要なパッケージが不明な場合は全て選択して問題ありません。

各パッケージの詳細については[MRTK3 パッケージの使用]ページで情報を参照できます。
可能であればプロジェクトに必要なものを選択してください。
docs.microsoft.com

MRTK3 が使用するパッケージにはこのプレビュー以外のパッケージがいくつかあります。
次の最新バージョンを選択してください。
・Platform Support -> Mixed Reality OpenXR Plugin
・Spatial Audio -> Microsoft Spatializer(任意)

パッケージの選択が完了したら[Get Features]をクリックします。

Mixed Reality Feature Tool が自動で依存関係をチェックし、必要なパッケージがあれば[Required dependencies]に追加してくれます。
対象のパッケージを確認して[Import]ボタンをクリックします。

最後に実際に Unity プロジェクトに反映される package.json とダウンロードファイルが表示されます。
[approve]ボタンをクリックすると、選択したパッケージが Unity プロジェクトにインポートされます。

3.Unity プロジェクトを開く

Unity プロジェクトを再び開き、新しく追加されたパッケージのインポートを完了するのを待ちます。
このプロセスでは 2 つのポップアップが表示されます。

1.最初のポップアップは新しい入力バックエンドを有効にするかを尋ねます。必ず yes を押してください。

2.次のポップアップは XR InteractionLayerMask を更新するかを尋ねます。[No Thanks]を押してください。

Unity はこのプロセスで数回再起動することがあります。
全てのプロセスが完了するまで待ってから続行してください。

4.MRTK プロファイルの設定を行う

MRTK3 をインポートしたら各ターゲットプラットフォーム用にプロファイルを設定する必要があります。
以下に設定手順を示します。

1.メニューから[Edit -> Project Settings]を開きます。

2.[Project Settings]内の[MRTK3]項目に移動して[Standalone]タブに切り替えます。
[Profile]は初期状態では指定されていないことに注目してください。

3.コアパッケージと共に取得されている既存の MRTK プロファイルを[Profile]フィールドに設定します。
プロジェクトウィンドウの検索バーから[All]を対象にして、キーワード[MRTKprofile]と入力するとプロファイルが見つかります。

または以下のフォルダからプロファイルを直接見つけることができます。
Packages/MRTK Core Definitions/Configuration/Default Profiles/MRTKProfile.asset

表示される MRTK サブシステムはプロジェクトに追加した MRTK3 パッケージによって異なる場合があります。

4.これをドラッグして[Profile]に設定します。

5.その他、使用するビルドターゲット(UWP、Androidなど)のタブに切り替えてプロファイルが割り当てられているかを確認して同様の設定を行います。
HoloLens 2 を対象にする場合は[UWP(Universal Windows Platform)]のタブで同様の作業を行います。


5.OpenXR 関連の設定を行う

MRTK3 では HoloLens 2 や Quest などの XR デバイスをターゲットにしている場合 OpenXR での構成が必要です。

本ページの手順は HoloLens 2 または WMR ヘッドセットに適用されるものを紹介します。
Quest をターゲットにする場合は以下の[Questへのデプロイ]ページの手順を参照してください。
docs.microsoft.com

1.メニューから再び[Edit > Project Settings]を開きます。

2.[Project Settings]内の[XR Plug-in Management]項目に移動します。

[Standalone]タブと[UWP]タブのそれぞれで以下の設定を行います。

[Standalone]タブ

以下の項目を有効にします。
・[OpenXR]
・[Initialize XR on Startup]
・[Windows Mixed Reality feature group under Standalone]

[UWP]タブ

以下の項目を有効にします。
・[OpenXR]
・[Initialize XR on Startup]
・[Microsoft HoloLens feature group under UWP]

OpenXR オプションをチェックした後、黄色の警告アイコンが表示されることがあります。
そのアイコンをクリックして OpenXR プロジェクト検証ツールを開きます。
[fix all]をクリックし、自動修正できない相互作用プロファイルの問題を無視します。


3.[Project Settings]内の[XR Plug-in Management -> OpenXR -> Interaction Profiles]項目に移動します。
[Standalone]と[UWP]用に次の 3 つのプロファイルを追加します。

・Eye Gaze Interaction Profile
Microsoft Hand Interaction Profile
Microsoft Motion Controller Profile


OpenXR プロジェクト検証ツールを使用して黄色の三角形を削除する必要がある場合があります。

4.HoloLens 2 では[Depth Submission Mode]の設定で[Depth 16 Bit(16 ビットの深度送信)]を使用することをお勧めします。
WMR ヘッドセットの場合は[Depth 24 Bit(24 ビット深度送信)]を使用できます。
詳細については[Unity で推奨される設定]ドキュメントの[深度バッファーの共有を有効にする]項を参照してください。
docs.microsoft.com

6.プロジェクトのセットアップはこれで完了です

[MRTK3 でのシーンの使用と作成]ドキュメントの[MRTK3 を使用した新しいシーンの作成]項に進んでください。
docs.microsoft.com

Mixed Reality Feature Toolを使ってパブリックプレビューのMRTK3をインポートする

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Feature Toolを使ってパブリックプレビューのMRTK3をインポートする方法を記事にします。

Mixed Reality Feature Tool

Mixed Reality Feature Tool は開発者が Mixed Reality Feature Package を検索して Unity プロジェクトに追加するためのツールです。
インポートする前にパッケージを名前またはカテゴリで検索し、それらの依存関係を確認することもできます。
docs.microsoft.com

2022/6/11 現在、Mixed Reality Feature Tool を使って MRTK3 をインポートするにはパブリックプレビューの参照設定を行う必要があります。

前提条件

Mixed Reality Feature Tool を利用するには以下の環境が必要です。
・Windows10 環境
・.NET 5.0 runtime
dotnet.microsoft.com

Mixed Reality Feature Toolのダウンロード

最新版の Mixed Reality Feature Tool は以下のページの[Download]からダウンロードします。
www.microsoft.com

ダウロードした zip ファイルを適当なフォルダに展開してください。

フォルダ直下の MixedRealityFeatureTool.exe が実行ファイルになります。

パブリックプレビューの参照設定

パブリックプレビューの参照設定を行います。
Mixed Reality Feature Toolを起動して歯車のアイコンをクリックします。

[Feature]タブを開き、[Show preview releases]にチェックを入れて[OK]をクリックします。

これで[Discover Features]ステップでパブリックプレビューのパッケージが表示されるようになります。

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く 初期セットアップ(手順1:サンプルシーン)

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

Mixed Reality Toolkit 3 のドキュメント

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

今回は「MRTK3 の初期セットアップ」のページの「手順1:全ての MRTK パッケージを使用するように事前設定されたサンプルテンプレートプロジェクトを使用する」項を実際に試しつつ読み進めます。
docs.microsoft.com

MRTK3 の初期セットアップ

MRTK3 パブリックプレビューへようこそ。
MRTK3 は疎結合パッケージのコレクションであるため、MRTK3 の手順は MRTK 2.x とは異なります。
以下の2つの開始手順があります。

手順1:全ての MRTK パッケージを使用するように事前設定されたサンプルテンプレートプロジェクトを使用する (開始が簡単です)
手順2:新しい Unity プロジェクトで新たに MRTK パッケージを取得する (より詳細な制御が可能で推奨されます)

常に全ての MRTK パッケージを利用することは想定していません。
「MRTK3 パッケージの使用」ページを参考にどの機能が役立つかを確認し、重要な依存関係のみを追加してください。

・MRTK3 パッケージの使用
docs.microsoft.com

事前準備

開始する前に、以下のリンクの全てのツールがあることを確認してください。
・ツールのインストール
docs.microsoft.com

手順1:リポジトリを複製してサンプルの Unity プロジェクトを試す

MRTK3 を試す最も簡単な方法は現在の全ての MRTK3 パッケージの参照を含む構成済みのプロジェクトを使用することです。
GitHub リポジトリのプロジェクトを Git Clone して[mrtk3]ブランチをチェックアウトしてください。
その後、UnityProjects 配下の[MRTKDevTemplate]プロジェクトを Unity (2020.3.35f1 以降 / 2021.3.4f1 以降) で起動します。
これをリモート処理またはデバイスにデプロイすることで、エディタでサンプルシーンの再生を開始できます。

GitHub リポジトリ
github.com

プレビューに含まれるサンプルシーンの詳細については「MRTK3 でのシーンの使用と作成」を参照してください。
・MRTK3 でのシーンの使用と作成
docs.microsoft.com

実際の利用手順

プロジェクトの取得

上記のリポジトリから GIT Clone または[Download ZIP]ボタンでプロジェクトをダウンロードします。
今回は[Download ZIP]で zip ファイルをダウンロードしました。

ダウンロードしたプロジェクトの[MRTKDevTemplate]フォルダを Unity で開きます。
Unity のバージョンは 2020.3.35f1 以降 または 2021.3.4f1 以降を利用します。

サンプルシーンの選択

Unity プロジェクトが開いたら以下のアセットフォルダから試したいサンプルシーンを選択します。
・Assets/Scenes

サンプルシーン選択時に[TextMeshPRO]のインポートダイアログが表示されます。
[Import TMP Essentials]でインポートを実行してください。

アプリケーションのビルド

サンプルシーンを選択したらメニューの[File -> Build Settings]を開きます。

[Add Open Scene]で現在のシーンをビルドシーンに設定します。
HoloLens 2 にアプリをビルドする場合は[Platform]を[Universal Windows Platform(UWP)]に切り替えて[Switch Platform]を実行します。

[Switch Platform]が完了したら[Build]を実行します。

筆者環境では[Switch Platform]完了時に以下のエラーが発生しましたが、無視して問題なさそうでした。

The asset at Packages/com.microsoft.mrtk.standardassets/Fonts/selawksl.ttf has been scheduled for reimport during the Refresh loop and Loading of it has been attempted.
Doing this can lead to the AssetDatabase returning two versions of the same asset.
Please ensure that code which attempts to reimport this asset does not run while the editor is Refreshing.
You can do so by checking the value of EditorApplication.isUpdating

HoloLens 2へのデプロイ

生成された VisualStudio ソリューションファイルを開きます。
MRTK3 の推奨バージョンは VisualStudio 2022 です。

ソリューションプラットフォームを[ARM]または[ARM64]に設定して接続先の HoloLens 2 にデプロイします。

HoloLens 2 上でアプリを起動します。
以下の通り、MRTK3 のサンプルシーンを試すことができました。

複数のサンプルシーンを同時に試す

サンプルシーン内に[HandMenu]または[SampleSceneHandMenu]オブジェクトが含まれるサンプルシーンはアプリ内で別シーンへの遷移が行えます。

以下のシーンを同時に[Scenes In Build]に含んでビルドを行うと、アプリ内でハンドメニューを使って複数のサンプルシーンを確認することができます。
・BoundsControlExamples
・CanvasExample
・CanvasUITearsheet
・DialogExample
・EyeGazeExample
・HandInteractionExamples
・HandMenuExample
・InteractableButtonExamples
・NearMenuExamples
・ObjectBarExample
・SlateDrawingExample
・SpatialMappingExample
・TabViewExample
・ToggleCollectionExample
・UIBackplateExample
・UITearSheet

他シーンへの遷移ができないサンプルシーンは以下のシーンです。
これらのシーンを含めると、これらのシーンに遷移したとき別シーンへの遷移ができなくなります。
・FontIconExample
・InputFieldExample
・SampleEmptyMRTKScene

HoloLens 2 上でアプリを起動します。
手のひらを目の前に出すとハンドメニューが表示されるので[Previous Scene]または[Next Scene]でシーンを遷移します。

次回記事の「手順2:初期セットアップ(MRTK パッケージを追加する)」に続きます。
bluebirdofoz.hatenablog.com

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

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

Mixed Reality Toolkit 3 パブリックプレビューのドキュメント

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

今回は MRTK3 パブリックプレビューの概要です。

Mixed Reality Toolkit 3

MRTK3 は Unity で利用する Microsoft Mixed Reality Toolkit の第 3 世代です。
これは Unity でのクロスプラットフォームの複合現実開発を加速するための Microsoft 主導のオープンソースプロジェクトです。
この MRTK の新しいバージョンは Unity の XR Management System と XR Interaction Toolkit の上に構築されています。

その機能の一例を以下に示します。

クロスプラットフォームの入力システム・空間的な体験とUIの構成要素を提供します
・エディタ内のシミュレーションによるアプリの動作確認を可能にし、変更をすぐに確認できます
・開発者がコアコンポーネントを交換できる拡張可能なフレームワークとして動作します
・幅広いプラットフォームをサポートします

サポートするプラットフォーム例

プラットフォーム サポート対象のデバイス
OpenXR デバイス Microsoft HoloLens 2, Meta Quest(試験的), Windows Mixed Reality(試験的), Steam VR(試験的), Oculus Rift On OpenXR(試験的)
Windows 従来のフラットスクリーン

MRTK3パブリックプレビューへようこそ

MRKT3 はあなたに最新の機能への早期アクセスを提供します。
また、あなたのフィードバックを通して MRTK3 の将来のイテレーションを形作ることを勧めます。
MRTK3 は現在パブリックプレビュー段階にあります。(2022/6/9現在)
現在のスナップショットは開発中のものになります。一部の機能はまだ欠落しているか、MRTK2.x と同等ではありません。
MRTK の未来を形作るため、あなたのフィードバックや提案を楽しみにしています。

MRTK3の主な改善点

構成

・Unity XR Interaction Toolkit と Unity Input System 上に構成しています
・OpenXR に焦点を当てています
・自由で柔軟な体験の範例を提供します

パフォーマンス

・UXから入力、サブシステムまで凡その機能とシステムを書き直して再設計しています
・フレームごとのメモリ割り当てをゼロにしています
・HoloLens 2 やリソースに制約のあるモバイルプラットフォームで最大のパフォーマンスが得られるように調整しています

ユーザインターフェース

・新しい対話モデル (視線ピンチ間接操作)
・更新された複合現実デザイン言語
・Unity Canvas + 3D UX: 規模に合わせた動的な自動レイアウト
ゲームパッド、マウス、アクセシビリティのサポートのための統一された2Dおよび3D入力
・差別化、テーマ、動的データおよび複雑なリストのためのデータバインディング機能

アクセシビリティ

・ロービジョン(低視覚)ケア
・入力支援

長期サポート(最小要件)

・OpenXR
・Unity 2020.3 LTS
・Unity の XR Interaction Toolkit

このパブリックプレビューは何のために使用する必要がありますか?

・最新の機能を試してプロトタイプを構築したい
・XR Interaction Toolkit と MRTK3 によるインフラストラクチャーの理解を深めたい
・新しいパッケージング戦略とアラカルト依存関係モデルを評価したい
・OpenXR の互換性と機能の詳細を確認したい
・新しい UX システムとビジュアルデザイン言語について学びたい

このパブリックプレビューは何に使用すべきではありませんか?

・既存のプロジェクトを 2.x から MRTK3 に移行する(現在の API の不安定性により、移行作業がスムーズに進まない可能性があるため)
・安定した API を期待する実稼働可能なコードを作成する
・アプリケーションのパフォーマンスを評価する (フルリリースでは現在のコードと比較してパフォーマンスが異なる場合があるため)

ソフトウェア要件

MRTK3 を取得して使用するには以下のソフトウェアツールが必要です。

ソフトウェア バージョン 特記
MicrosoftVisualStudio 2019 コミュニティ版以上 Visual Studio 2022 を推奨
Unity 2020.3.35+ または 2021.3.4+ LTS リリースの使用を推奨
Mixed Reality Feature Tool MRTK3 パッケージの取得に使用
Mixed Reality OpenXR Plugin Feature Toolからインストール

バージョン管理

以前の MRTK (HoloToolkit および MRTK v2) は全パッケージが同じバージョン番号 (2.8.0 など) の完全なセットとしてリリースされていました。
MRTK3 以降では、各パッケージはセマンティックバージョニング 2.0.0 仕様に従って個別にバージョン管理されます。

MRTK3 の '3' はバージョン番号ではありません。
これは基になるアーキテクチャの世代を示す指標です。
HoloToolkit は第 1 世代、MRTK v2.x は第 2 世代です。

個々のバージョン管理により、より迅速なサービスが可能になります。
また開発者が変更の大きさを理解できるので、修正に応じて更新する必要があるパッケージの数を減らすことができます。

例えばユーザーインターフェイスの動作のロジックを含む UX コア パッケージに、改行しない新機能が追加された場合、マイナーバージョン番号は増加します (3.0.x から 3.1.0 に)。
この変更は破壊的な変更ではないため、UX コアに依存する UX コンポーネント パッケージを同時に更新する必要はありません。

このバージョン管理の結果、MRTK3 には統一された製品バージョンはありません。
特定のパッケージとそのバージョンを識別するために、MRTK3 にはプロジェクトに含まれる関連パッケージを一覧表示するバージョン情報ダイアログが用意されています。
このダイアログにアクセスするには、Unity エディターメニューから [Mixed Reality -> MRTK3About -> MRTK] を選択します。

ブランチステータス

MRTK3 は現在パブリックプレビュー段階にあり、運用プロジェクトでの使用はお勧めできません。
チームが一般提供 (GA) に向けて作業している間、テスト、課題、フィードバックに感謝します。

早期プレビューパッケージ

MRTK3 の一部は開発プロセスの初期段階にあります。
早期プレビューパッケージは Mixed Reality Feature Tool と Unity Package Manager で[Early Preview]の指定によって識別できます。

2022 年 6 月現在、以下のコンポーネントは早期プレビュー段階にあると見なされます。

名前 パッケージ名
Accessibility com.microsoft.mrtk.accessibility
Data Binding and Theming com.microsoft.mrtk.data
Environment com.microsoft.mrtk.environment

MRTK チームはこの機能のリリースに全力を尽くしています。
パッケージには完全なリリース予定の機能セットが含まれていない場合や、リリース前に大きな破壊的な変更を受ける可能性があることに注意してください。
これらの早期プレビュー機能の最終形態を形作るのに役立つあらゆるフィードバックを提供することをお勧めします。

UX ビルディングブロック

ボタン

指さし、視線、レイ操作、マウスクリック、ゲームパッドなど幅広い入力様式に最適化されたボタン。

ボタンコントロール

注目フィードバックと精密操作アフォーダンス

オブジェクトマニピュレータ

多種多様な入力様式を使用して片手または両手でオブジェクトを移動および操作します。

ハンドメニュー

クイックアクションに簡単にアクセスするための手に追従する UX コントロールを提供します。

ニアメニュー

UX コントロールのコレクションはマニピュレータ、ピン留め、およびユーザーを追従するように設定できます。

スライダー

1次元軸に沿って値を調整します。

ソルバー

視界追従、ボディロック、一定のビューサイズ、表面移動などの様々なオブジェクトの配置動作を提供します。

ダイアログ

ユーザー操作のためのプロンプトを表示します。

スレート

大きなインターフェースとコンテンツを表示するためのフラットパネルを提供します。

ロードマップ

パブリックプレビューから GA までのロードマップを次の表に示します。

リリース タイムライン
パブリックプレビュー 2022年6月8日
プレビューの更新 GAまで約2~4週間毎
一般提供(GA) 2022年冬

MRTKでTheme設定を使って無効化時に見た目が変化するボタンを作成する

本日は MRTK の小ネタ枠です。
MRTKでTheme設定を使って無効化時に見た目が変化するボタンを作成する手順を記事にします。

MRTKのボタンプレハブ

MRTK のボタンは Interactable コンポーネントを使って状態(State)を管理しています。
Theme の設定で状態ごとの設定を行うことで、ボタンの状態に応じた見た目の変化を定義できます。
docs.microsoft.com
docs.microsoft.com

Interactable コンポーネントの[General]項目でボタンの状態の定義を、[Profiles]項目で状態に応じたボタンの変化を定義できます。

サンプルプロジェクトの作成

実際に手順を実施してみるため、MRTK をインポートしたサンプルプロジェクトを作成します。

MRTK のインポートと基本設定

MRTK のインポートと HoloLens 向けプロジェクトの基本設定を行い、サンプルプロジェクトを作成します。
手順の詳細は以下の記事を参照してください。
bluebirdofoz.hatenablog.com

無効化状態のときにボタンの色を変化させる

実際に無効化状態のときにボタンの色を変化させる設定を行ってみます。

ボタンを無効化する

初めにボタンの変化を確認するため、ボタンを無効化する以下のサンプルスクリプトを作成しました。
・ButtonDisable.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.MixedReality.Toolkit.UI;

[RequireComponent(typeof(Interactable))]
public class ButtonDisable : MonoBehaviour
{
    [ContextMenu("DisableButton")]
    public void IsDisableInteractable()
    {
        // Interactableの状態を Disabled に移行する
        this.GetComponent<Interactable>().IsEnabled = false;
    }
}

ボタンにスクリプトを追加し、シーン再生中にコンテキストメニューから[DisableButon]を実行することでボタンを Disabled 状態に移行できます。

デフォルトのボタンでは Disabled 状態になっても[Say XXX]の音声認識用ラベルが非表示になるだけで、ボタンの見た目は変わりません。

背景色を変化させるThemeを作成する

今回はボタンの状態の定義は変更せず Profiles に状態に応じた変化を Theme で設定します。
MRTK をインストールしたプロジェクトの Project フォルダで右クリックから[Create -> MixedReality -> Toolkit -> Theme]で新規 Theme を作成できます。

作成した Theme に名前を設定し、Inspector ビューを開きます。

[States]項目にボタンプレハブで使用されている[FocusPressTouchGrabStates]を設定します。
これで状態ごとの変化を設定できるようになります。

今回はボタンの背景色を変化させたいので[Theme Runtime]に[InteractableColorTheme]を設定します。
状態ごとの色を設定できるようになるので Disabled 時のみ灰色の背景色を設定します。

これで状態に応じて色を変化させる Theme を作成できました。

Themeをボタンに設定する

作成した Theme をボタンに設定します。
Interactable コンポーネントの[Add Profile]をクリックして新規 Profile を作成します。

[Target]項目には Theme の変化を適用するゲームオブジェクトを設定します。
今回の場合、ボタンの背景色を表示している[BackPlate/Quad]オブジェクトを指定します。

[Theme]項目に先ほど作成した Theme を指定して設定完了です。

背景色のマテリアル設定

実際に試してみたところ、ボタンの背景色はカラー設定よりも[indescene]の色合いの影響が大きいことが分かったので動作確認ではこれを無効化しました。


動作確認

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

ボタンを Disabled 状態に変化させると以下の通りボタンの背景色が変わるようになりました。