Overview
先日、MRTK ( Mixed Reality Toolkit - Unity ) v2.4 がリリースされたので、以下 Release Notes の内容を日本語に翻訳してみました。機械翻訳ではなく、自力で翻訳 ( + 所感 )しているのでフィードバック等あればお気軽にコメントいただければと思います。Unity 2019.3 を使用して開発を進める場合は、ビルド時の設定で詰まる可能性が高いので、「Known issues in MRTK v2.4」 を一度確認されることをお勧めします。
Agenda
- Support devices & platforms
- Software Requirements
- What's new in MRTK v2.4
- Breaking changes in MRTK v2.4
- Known issues in MRTK v2.4
Support devices & platforms
MRTK v2.3 からの大きな変更点は、以下の2点になります。
1. 「Ultraleap Hand Tracking をサポート」
2. 「Mobile AR から ( Experimental ) が外れた」
※ ( Experimental ) は、現在実装途中であり、時間の経過と共に変更が加わる可能性のある新たな機能を開発者がいち早く検証できるよう提供されている実験的な取り組みです。
- Microsoft HoloLens 2
- Microsoft HoloLens ( 1st gen )
- Windows Immersive headsets
- OpenVR
- ( Experimental ) Unity 2019.3 XR Platform
- Mobile AR ( Unity AR Foundation 使用 )
- Android
- iOS
- Ultraleap Hand Tracking
Software Requirements
ほとんど変更点はないですが、MRTK v2.3 では 「NuGet から MRTK をインポートする際、Unity 2018.4 LTS のみサポート」 となっていた箇所が、MRTK v2.4 Relase Note では表記が削除され、Unity 2019 でもサポートされたようです。( 未検証 )
- Visual Studio ( 2017 or 2019 ) Community Edition or Higher
- Windows 10 SDK 18362 or later ( Visual Studio Installer インストール分 )
- Unity 2018.4 LTS or 2019 ( ※ 2019.3 を推奨 )
※ Nuget ( .NET Framework パッケージマネージャー ) より MRTK をインストールする場合
Nuget を使って、MRTK をインポートする方法は以下のドキュメントをご覧ください。
※ Nuget パッケージを使用した既存プロジェクトのマイグレーション ( MRTK アップデート ) は現時点でサポートされていません。新規プロジェクトで MRTK をインポートする際にのみ使用できます。基本的には、GitHub Release ページから .Unitypackage ファイルをダウンロード&インポートする方法が良いかと思います。
What's new in MRTK v2.4
Ultraleap Hand Tracking Support
新しく追加された Leap Motion Data Provider を使えば、VRアプリケーションで手の関節を認識したハンドトラッキングや、Unity Editor 上でのラピッドプロトタイピングを実現することができます。このデータプロバイダーは、Leap Motion Controller をマウントしたヘッドセット、もしくはデスク上に表向きに置かれた状態で設定することができます。
We teased it last week at #MRDevDays, but the moment is actually here! MRTK 2.4 is released. MRTK 2.4 now supports @Ultraleap hand tracking! We can’t wait to see what you develop with this update.
— Mixed Reality DevRel Team (@MxdRealityDev) May 27, 2020
Check the release notes for the other features - https://t.co/CITIZembqL pic.twitter.com/rH9rb9HqCx
Migration window
MRTK にマイグレーションツールが追加されました。このツールを活用すれば、MRTK内の Deprecate ( 廃止 ) されたコンポーネントを新しいバージョンに置き換えることができます。既存のプロジェクトを古いMRTKを使って開発していた場合、このツールを使って既存コード + MRTKの新しいバージョンにプロジェクトを移行させることができます。
Migration Window は、[ Mixed Reality Toolkit ] > [ Utilities ] > [ Migration Window ] から追加することができます。
後ほど、ご紹介する「ButtonConfigHelper」や「ObjectManipulation」などを既存プロジェクトに簡単に適用することができます。
詳細は、「Migration Window」 ページをご覧ください。
MRTK folder layout change
MRTK v2.4 からフォルダのディレクトリ構造に変更が加わりました。この変更により全てのMRTKコードが単一の 「MRTK」 フォルダ配下に格納され、ファイルパスの長さが短縮されました。
変更前フォルダ | 変更後フォルダ |
---|---|
MixedRealityToolkit | MRTK\Core |
MixedRealityToolkit.Examples | MRTK\Examples |
MixedRealityToolkit.Extensions | MRTK\Extensions |
MixedRealityToolkit.Providers | MRTK\Providers |
MixedRealityToolkit.SDK | MRTK\SDK |
MixedRealityToolkit.Servies | MRTK\Services |
MixedRealityToolkit.Tests | MRTK\Tests |
MixedRealityToolkit.Tools | MRTK\Tools |
※ 個別カスタマイズをしたプロファイル ( クローン, 新規作成 ) が格納されるフォルダ 「MixedRealityToolkit.Generated」 は、
この変更に含まれておらず、そのまま残っています。
( 下図 : 変更後のディレクトリパス )
MRTK Toolbox
MRTK Toolbox は、Unity Editor Window の便利ツールです。この機能を使えば、MRTK UX Prefab Component ( あらかじめ用意されたUXコンポーネント ) の「検索」と 「シーンへの追加」を簡単に行うことができる ようになります。検索バーを使用すれば、表示されるアイテムをフィルタリングすることが可能です。Toolbox Window は、すぐに使える MRTK Prefab を生成し、シーンに追加するために設計されています。
アイコンをクリックすると、ヒエラルキーに対象Prefabが追加されます。また、アイコンの下にある「Documentation」ボタンを押すと、それぞれのドキュメントページへ飛ぶことができます。
以下のように7カテゴリ、45種類の Prefab が用意されています。
Toolbox は、[ Mixed Reality Toolkit ] > [ Toolbox ] から追加することができます。
MRTK v2.4 新機能
— Futo Horio (@Futo_Horio) May 29, 2020
Toolbox ( Unity Editor )
MRTKに含まれている Prefab を
ビジュアルを確認しながら追加可能!
ボタン、ツールチップ、Unity UI etc..
ジャンル分けもされてて見やすい。
#MRTK #MixedReality#Unity #MixedRealityToolkit pic.twitter.com/ER7lyiAt8i
Tap to Place
Tap to Place
は遠くのオブジェクトにインタラクション追加するUXコンポーネントです。このコンポーネント ( Script ) を使用すれば、ゲームオブジェクトをサーフェイス ( 壁や床 ) などに簡単に配置することができます。頭の動きとタップ操作 ( Hand Ray ) で、オブジェクトの配置を変更することができます。
サンプルシーン : MRTK/Examples/Demos/Solvers/Scenes/TapToPlaceExample.unity
Button Config Helper added to Pressable Button
Button Config Helper
は名前の通り、MRTK の Pressable Button のアイコンや、ボタン名などを一括で管理するためのヘルパーです。MRTK v2.3 までは、それぞれのゲームオブジェクトで設定していた内容が、MRTK v2.4 Button Config Helper を使用すれば、親オブジェクトのヘルパー内で簡単に設定を変更することができます。
Release Notes 「Button Config Helper added to Pressable Button」 より引用
サンプルシーン : MRTK/Examples/Demos/UX/PressableButton/Scenes/PressableButtonExample.unity
New HoloLens 2-style Toggle Buttons - Checkbox, Switch, Radio
MRTK UX Component に新しい Toggle ボタンが追加されました。
- チェックボックス ( Checkbox )
- スイッチ ( Switch )
- ラジオ ( Radio )
ボタン名 | プレハブ名 |
---|---|
チェックボックス | HoloLens 2 Checkbox Button 32×96mm |
スイッチ | HoloLens 2 Switch Button 32×96mm |
ラジオ | HoloLens 2 Radio Button 32×96mm |
Hand Menu Improvements
ハンドメニューはこれまでも多くのアプリケーションに採用されてきましたが、大きな問題がありました。それはオブジェクトの操作中、または他のコンテンツを操作している際に誤ってハンドメニューがアクティベーションされるという問題です。誤ったアクティベーションを防ぐために、HandConstraintPalmUp.cs にゲイズ ( Eye-Gaze, Head-Gaze )が当っている時にだけアクティベーションを行う「Gaze Activation」オプションが追加されました。このオプションにチェックすることで、ゲイズが当っている場合のみハンドメニューを有効化し、それ以外は動作させないという挙動を実現し、誤操作を減らすことができます。
サンプルシーン : MRTK/Examples/Experimental/HandMenuLayout/Scenes/HandMenuLayoutExamples.unity
[ Use Gaze Activation
] は、HandConstraitPalmUp コンポーネントの下部にチェックボックスがあります。
Hand Menu Example update
Hand Menu Example がアップデートされました。
具体的には、以下2つの大きな操作メニューが追加されています。
メニュー名 | 概要 | gif 動画 |
---|---|---|
大きな操作メニュー (1) | つまみを引いて離した移動&固定してくれる | |
大きな操作メニュー (2) | 手を下げた場所で自動位置固定をしてくれる |
※ これらのメニューは、Examples/Demos 配下に追加されており、現時点で Toolbox からは検索ができないので注意してください。
メニュー | プレハブ場所 (パス) |
---|---|
大きな操作メニュー (1) | MRTK/Examples/Demos /HandTracking/Prefabs /HandMenu_Large_AutoWorldLock_On_HandDrop.prefab |
大きな操作メニュー (2) | MRTK/Examples/Demos /HandTracking/Prefabs /HandMenu_Large_WorldLock_On_GrabAndPull.prefab |
Relese Notes 「Hand Menu Example update」 より引用
Dialog ( Experimental )
HoloToolkit から Dialog UI が移植されました。機能のアップデートは無いですが、HoloLens 2 向けにデザイン ( HoloLens 2 shell-style design ) が刷新されています。
サンプルシーン : MRTK/Examples/Experimental/Dialog/DialogExample.unity
Dock ( Experimental )
オブジェクトを所定の位置に近づけると、小さくなり Dock に収納することができる UX コンポーネントです。この機能を応用すれば、パレット、棚、ナビゲーションバーなどを作成することができます。
実際、HL2でサンプルシーンを動作させてみた様子は以下動画をご覧ください。
MRTK v2.4
— Futo Horio (@Futo_Horio) May 29, 2020
Dock (Experimental)
早速試してみた!
所定の位置にオブジェクトを
近づけると小さくなって収納される。
パレット、ナビゲーションバー etc..
実装時に参考になるUXコンポーネント
想像より大きかったw#MRTK #HoloLens2#MixedReality pic.twitter.com/JrUOCXZYBx
サンプルシーン : MRTK/Examples/Experimental/Dock/DockExample.unity
Unity Profile makers
新しいバージョンの MRTK ( v2.4 ) では、入力システムとデータプロバイダーに Unity Profile マーカーが追加されました。これらのマーカーでは、アプリケーションの最適化に役立つ、MRTK入力システム内部の処理時間の詳細情報を提供してくれます。
WindowsApiChecker : isMethodAvailable(), IsPropertyAvailable(), and IsTypeAvailable()
WindowsApiChecker に、3つの新たなメソッドが追加されました。
これらのメソッドは、Windows 10 の機能サポートのチェックを可能にします。
( 結果は、UniversalApiContractV#_IsAvailable プロパティよりも優先的に使用されます。 )
- IsMethodAvailable
- IsPropertyAvailable
- IsTypeAvailable
Helpers to get text input fields working with MixedRealityKeyBoard for UnityUI, TextMeshPro ( Experimental )
UI_KeyboardInputField
、TMP_KeyboardInputField
の2つのヘルパークラスが追加されました。このヘルパークラスを使えば、フィールドがクリック時に、 HoloLens 2 および Windows Mixed Reality キーボードが表示され、Unity UI 内の入力フィールドに任意の文字を追加することができます。
詳細情報は、「Mixed Reality Keyboard Helpers」をご覧ください。
Grid Object Collection Alignment Options
Grid Object Collection にグリッド内の用さを中央に配置するか、左/右軸に合わせて配置するかを選択できる機能が追加されました。
Release Notes 「Grid Object Collection Alignment Options」 より引用
Grid Object Collection Anchor Changes
Grid Object Collection の動作に変更が加わりました。オブジェクトの中心軸に沿ってアンカーを配置することで、Unity のレイアウトグループの動作により一致します。従来の Grid Object Collection の動作は、AnchorAlogAxis
フィールドで切り替えることができます。
Adjusted input simulation camera control
Unity Editor 上での入力シミュレーションにおけるカメラ操作スピードは「よりスムーズな体験」を提供するため、遅くなりました。この結果フレームレートから解放され、カメラのコントロール操作を有効化するボタンは「Ctrl」から「Shift」へ変更となりました。
Hands-free GGV input simulation
Unity Editor 上で、手をシミュレーションせずに!? 検証することができるようになりました。従来だと、まず手をシミュレートしてからオブジェクトを操作しないといけませんでしたが、左クリックだけで操作ができるようになりました。これは地味ですが、非常に便利ですね。
Button Config Helper
Button Config Helper は、MRTKボタンのカスタマイズを容易にする編集機能です。
以下の操作を非常に簡単に行えるようになりました。
- ボタンラベルの変更
-
ボタンクリックイベントリスナーの追加
( ボタンがクリックされた時のイベント処理設定 ) - ボタンアイコンの変更
Audio Spatializer Selection in MRTK configuration dialog
Audio Spatializer が MRTK Configuration dialog から指定できるようになりました。
Microsoft Spatializer のような新しい Spatializer をインストールすると、簡単に設定が変更できるように MRTK Project Configuration ウィザードが再表示されます。
Release Notes 「Audio Spatializer Selection in MRTK configuration dialog」 より引用
Object manipulator graduated to SDK
ObjectManipulator は、実験的な機能ではなく、SDKに移行しました。この機能は、廃止された ManipulationHandler クラス ( 以前のバージョン ) を置き換えることができます。ObjectManipulation には、ManipulationHandler クラスより柔軟に対応できる新しい制御システムがあり、物理世界に対して正しいフィードバックを返すことができます。完全な機能リストと設定方法については、「Object manipulator」のドキュメントに記載があるので、そちらをご覧ください。
さきほどご紹介した「Migration Window」を使用することによって、「ManipulationHandler」から「ObjectManipulator」にアップグレードすることができます。
Bounds control improvements
MRTK v2.4 では、これまでのバージョンよりも境界面制御のテスト範囲を拡大し、ユーザーが抱える大きな問題点の1つに対処しました。境界のコントロールでは、設定を変更してもビジュアルを再作成しなくなりました。また、実行時のプロパティ変更もサポートするようになりました。
Breaking changes MRTK v2.4
前回バージョンの MRTK v2.3 から MRTK v2.4 となり、大きな変更が加わった箇所は、以下の2点です。
Eye Gaze API
IMixedRealityEyeGazeProvider インタフェースを実装した GazeProvider クラスのプロパティ名 「UseEyeTracking」 に変更がありました。
変更前 | 変更後 |
---|---|
GazeProvider.UseEyeTracking | GazeProvider.IsEyeTrackingEnabled |
Eye gaze setup
新しい MRTK バージョンでは、Eye Gaze を有効化する手順に変更がありました。
「IsEyeTrackingEnabled」チェックボックスは、入力ポインター ( Input Pointer ) プロファイルの視線設定で見つけることができます。このチェックボックスにチェックを入れることで、デフォルトの Head Gaze ではなく、Eye Gaze が有効になります。
この変更の詳細とアイトラッキングの詳細な設定手順は、「Getting started with eye tracking in MRTK」をご覧ください。
Known issues in MRTK v2.4
MRTK v2.4 には、以下、既知の問題が報告されているので内容把握と回避策を頭に入れておくと開発時に役立つと思います。
MRTK Configurator dialog does not show 'Enable MSBuild for Unity' in Unity 2019.3
Unity 2019.3 で MSBuild を有効にすると、パッケージの読み込みが無限にループするという現象が発生します。回避策は、NuGet for Unity を使って、「Microsoft.Windows.DotNetWinRT」パッケージをインポートすることです。
Duplicate Assembly Version and Multiple Precompiled Assemblies Unity 2018.4
Unity 2018.4 で、ターゲットプラットフォームを「PC, Mac & Linux Standalone」から「Universal Windows Platform」に切り替え、再度「PC, Mac & Linux Standalone」に戻されると、コンソールに次にエラーが表示される場合があります。
PrecompiledAssemblyException: Multiple precompiled assemblies with the same name Microsoft.Windows.MixedReality.DotNetWinRT.dll included for the current platform. Only one assembly with the same name is allowed per platform. Assembly paths
Assets\MRTK\Examples\Demos\HandTracking\Scenes\Utilities\InspectorFields\AssemblyInfo.cs(6,12): error CS0579: Duplicate 'AssemblyVersion' attribute
これらのエラーは、MSbuild For Unity による削除プロセス内の問題に起因しています。この問題を解決するには、「PC, Mac & Standalone」を選択した状態で、アセットのルートにある依存フォルダを削除し、Unityを再起動します。
この問題の詳細情報は、「Erros when switching from UWP to Standalone ( #7948 ) 」をご確認ください。
Applications appearing as a 2D slate on Unity 2019.3
Unity 2019.3 を使用する場合、標準 SDK ( legacy ) または、プラグイン ( XR Management ) で XR サポートが有効化されていません。この結果、アプリケーションが2D平面で動作する状態になります。この問題を解決する方法は、「Building and Deploying MRTK article」に詳細が記載されています。
Unity 2019.3 : ARM build architecture
Unity 2019.3 には、Visual Studio 2019 でビルドをする際、ターゲットプラットフォームを「ARM」設定するとエラーを引き起こす問題が報告されています。推奨される回避策は、「ARM64」に設定を変更し、ビルドを実行することです。もし、その選択が取れない場合は、Unity Editor 上で、「Graphics Jobs」 を無効化してください。[Edit] > [Project Settings] > [Player] > [Other Settings] から設定することができます。さらに情報が必要な場合は、「Building and Deploying」をご覧ください。
Runtime profile swapping
MRTK は、実行時のプロファイル交換を完全にサポートしていません。
今後のリリースに向け、この機能について現在調査を進めている最中である。
詳しい情報が欲しい場合は、以下の GitHub Issues をご確認ください。
- Changin ActiveProfile at runtime does not work ( #4289 )
- Runtime Profile Swapping - Input System ( #5465 )
- Runtime Profile Swapping - Non Input System ( #5466 )
Unity 2018 : .NET Backend and AR Foundation
Unity 2018 で .NET スクリプティングバックエンドを使用して、UWP ( Universal Windows Platform ) 向けのビルドを実行した際、Unity AR Foundation パッケージ由来のエラーが発生する問題があります。
この問題の回避するには、次のいずれかの手順を実行する必要があります。
- スクリプティングバックエンドを .NET から IL2CPP に切り替える
- Build Settings ウィンドウで、"Unity C# Projects" のチェックを外す