Help us understand the problem. What is going on with this article?

MRTK v2.4 Release Notes ( 日本語訳 )

Overview

先日、MRTK ( Mixed Reality Toolkit - Unity ) v2.4 がリリースされたので、以下 Release Notes の内容を日本語に翻訳してみました。機械翻訳ではなく、自力で翻訳 ( + 所感 )しているのでフィードバック等あればお気軽にコメントいただければと思います。Unity 2019.3 を使用して開発を進める場合は、ビルド時の設定で詰まる可能性が高いので、「Known issues in MRTK v2.4」 を一度確認されることをお勧めします。


「microsoft/MixedRealityToolkit-Unity」より引用

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 をマウントしたヘッドセット、もしくはデスク上に表向きに置かれた状態で設定することができます。


Release Notes 「Ultraleap Hand Tracking Support」より引用

Migration window

MRTK にマイグレーションツールが追加されました。このツールを活用すれば、MRTK内の Deprecate ( 廃止 ) されたコンポーネントを新しいバージョンに置き換えることができます。既存のプロジェクトを古いMRTKを使って開発していた場合、このツールを使って既存コード + MRTKの新しいバージョンにプロジェクトを移行させることができます。

Migration Window は、[ Mixed Reality Toolkit ] > [ Utilities ] > [ Migration Window ] から追加することができます。

後ほど、ご紹介する「ButtonConfigHelper」や「ObjectManipulation」などを既存プロジェクトに簡単に適用することができます。


Release Notes 「Migration Window」より引用

詳細は、「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 が用意されています。

カテゴリ名 概要 画像
Buttons 様々なカタチのボタン
( 19種類 )
Button Collections 複数のボタンを並べたもの
( 6種類 )
Near Menus 様々な近距離メニュー
( 6種類 )
Miscellaneous 雑多なプレハブ群
( 3種類 )
Tooltips 注釈などに使える補足説明用UI
( 3種類 )
Progress indicators 進行状態を表すインジケータ―
( 4種類 )
Unity UI
( Requires Canvas )
Unity Canvas 上で使えるボタン
( 4種類 )

Toolbox は、[ Mixed Reality Toolkit ] > [ Toolbox ] から追加することができます。

Tap to Place

Tap to Place は遠くのオブジェクトにインタラクション追加するUXコンポーネントです。このコンポーネント ( Script ) を使用すれば、ゲームオブジェクトをサーフェイス ( 壁や床 ) などに簡単に配置することができます。頭の動きとタップ操作 ( Hand Ray ) で、オブジェクトの配置を変更することができます。


Release Notes 「Tap to Place」より引用

サンプルシーン : 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 )


Release Notes 「New HoloLens 2-style Toggle Buttons」より引用

ボタン名 プレハブ名
チェックボックス 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」オプションが追加されました。このオプションにチェックすることで、ゲイズが当っている場合のみハンドメニューを有効化し、それ以外は動作させないという挙動を実現し、誤操作を減らすことができます。


Release Notes 「Hand Menu Improvements」 より引用

サンプルシーン : 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 ) が刷新されています。


Release Notes 「Dialog」 より引用

サンプルシーン : MRTK/Examples/Experimental/Dialog/DialogExample.unity

Dock ( Experimental )

オブジェクトを所定の位置に近づけると、小さくなり Dock に収納することができる UX コンポーネントです。この機能を応用すれば、パレット、棚、ナビゲーションバーなどを作成することができます。


Release Notes 「Dock ( Experimental ) 」 より引用

実際、HL2でサンプルシーンを動作させてみた様子は以下動画をご覧ください。

サンプルシーン : MRTK/Examples/Experimental/Dock/DockExample.unity

Unity Profile makers

新しいバージョンの MRTK ( v2.4 ) では、入力システムとデータプロバイダーに Unity Profile マーカーが追加されました。これらのマーカーでは、アプリケーションの最適化に役立つ、MRTK入力システム内部の処理時間の詳細情報を提供してくれます。


Release Notes 「Unity Profile makers」 より引用

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_KeyboardInputFieldTMP_KeyboardInputField の2つのヘルパークラスが追加されました。このヘルパークラスを使えば、フィールドがクリック時に、 HoloLens 2 および Windows Mixed Reality キーボードが表示され、Unity UI 内の入力フィールドに任意の文字を追加することができます。


Release Notes 「Helpers to get text input fields ..」 より引用

詳細情報は、「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 フィールドで切り替えることができます。


Release Notes 「Grid Object Collection Anchor Changes」 より引用

Adjusted input simulation camera control

Unity Editor 上での入力シミュレーションにおけるカメラ操作スピードは「よりスムーズな体験」を提供するため、遅くなりました。この結果フレームレートから解放され、カメラのコントロール操作を有効化するボタンは「Ctrl」から「Shift」へ変更となりました。

Hands-free GGV input simulation

Unity Editor 上で、手をシミュレーションせずに!? 検証することができるようになりました。従来だと、まず手をシミュレートしてからオブジェクトを操作しないといけませんでしたが、左クリックだけで操作ができるようになりました。これは地味ですが、非常に便利ですね。


Release Notes 「Hands-free GGV input simulation」 より引用

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」 より引用

Spatial sound in Unity

Object manipulator graduated to SDK

ObjectManipulator は、実験的な機能ではなく、SDKに移行しました。この機能は、廃止された ManipulationHandler クラス ( 以前のバージョン ) を置き換えることができます。ObjectManipulation には、ManipulationHandler クラスより柔軟に対応できる新しい制御システムがあり、物理世界に対して正しいフィードバックを返すことができます。完全な機能リストと設定方法については、「Object manipulator」のドキュメントに記載があるので、そちらをご覧ください。


Release Notes 「Object manipulator graduated to SDK」 より引用

さきほどご紹介した「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" のチェックを外す
Futo_Horio
Kobe Digital Labo Inc. 新事業創造係 MR班 班長 / Microsoft Azure コミュニティ「Azure Tech Lab」主催 / Honde Next 共同代表
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした