デコシノニッキ

ホロレンジャーの戦いの記録

MRTK2.4の更新

MRTK2.4がリリースされました

github.com

更新

LeapMotionのサポート

Provider層に新たにLeap Motion Data Providerが追加されました! VRアプリでArticulated Hand(多関節ハンド)トラッキングをしたり、エディタでのラピッドプロトタイピングに使うことを想定しているようです。 利用シナリオに応じて、ヘッドセットにLeap Motionをマウントしたり机の上に置いて利用できるよう設定項目も設けられています。

https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Images/CrossPlatform/LeapMotion/LeapMotionSideBySide2.gif

Migration Window

Migration(マイグレーション)というのは、「移行」っていう意味ですね。

f:id:haikage1755:20200528030828p:plain

BoundingBoxやObjectManipulatorなど、作り直しが入った新しいコンポーネントが登場したこともあり、レガシーなコンポーネントを新しいコンポーネントのものに差し替えたり、MRTKの破壊的変更に対して既存のコードを維持するような仕組みです。

以前のMRTKから移行する際は、こちらのMigrationToolを使って移行することが推奨だそうです。

Mixed Reality Toolkit > Utilities > Migration Window から起動できます。

現在の移行対象は下記です。

  • ManipulationHandlerとBoundingBoxを新しいバージョンのObjectManipulatorとBoundsControlにアップグレード
  • 新しい Button Config Helper でカスタムボタンアイコンを正しく動作するように更新

MRTKのフォルダ名が短くなった

フォルダ名が短くなり、MRTKがルートになるようにまとめられました。

f:id:haikage1755:20200528031304p:plain

f:id:haikage1755:20200528055003p:plain

ツールボックスでUI/UXコンポーネントの検索と配置が楽に

MRTK Toolbox というUI/UXコンポーネントを簡単に探す機能が追加されました。

f:id:haikage1755:20200528031739p:plain

探索だけではなくて、いまのシーンにPrefabを置くこともできます。 https://user-images.githubusercontent.com/25975362/73321582-c9683a00-41f7-11ea-8bac-bf8efdb2fbe3.gif

この機能はFoundaitonではなく、Toolsの方に含まれています。

Tap to Placeの復活

Tap To Place という表面に沿ってオブジェクトを配置する機能が追加されました。 これはHoloLens 1 時代のHolotoolkitにあったもので、お世話になった人も多いのではないでしょうか。

https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Images/Solver/TapToPlace/TapToPlaceIntroGif.gif

Pressable Buttonsのボタン設定の簡易化とButtonConfigHelper

https://user-images.githubusercontent.com/9789716/70167111-e3175600-167a-11ea-9c52-444509c06105.gif

ボタンのアイコンやテキストが簡単に変更できるようになりました。 Pressable Button は、もともと設定が複雑性すぎるということでフィードバックがちょいちょい上がってたのですが、これが改善されました。

また、これはButtonConfigHelperというコンポーネントを使って実現しています。

f:id:haikage1755:20200528032830p:plain

Holo2スタイルのトグルボタン、チェックボックス、スイッチ、ラジオの追加

3DスタイルのUIではなく、2DスタイルなUIが追加されました。 3Dのレイアウトは配置が難しいので、プロトタイピングに使うにはとても便利です。

https://user-images.githubusercontent.com/13754172/75299797-df631d80-57ea-11ea-8857-8ef647df0aca.gif

ハンドメニューの改善

ハンドメニューの暴発防止機能ですね。手のひらを返してメニューを出す方法が、前バージョンでありましたが、オブジェクトの操作中など暴発が多いので、手を見ている時にだけメニューが出せるオプションが追加されました。

https://user-images.githubusercontent.com/13754172/79507261-4aabbd80-7fec-11ea-95c4-6e3f4bd18c11.gif

ハンドメニューのサンプルの追加

従来のハンドメニューを更に拡張し、2つの面白いメニューが追加されました。

World Lock + 掴めるメニュー gifでは一瞬なのですが、ハンドメニューを出したあとに手から切り離すことができます https://user-images.githubusercontent.com/13754172/79507983-90b55100-7fed-11ea-9062-630c892950cb.gif

手を下げると自動でWorld Lock ハンドメニューを出した状態で手を下げると空間にとどまるメニューです。 https://user-images.githubusercontent.com/13754172/79508227-f9043280-7fed-11ea-995f-ac3cfe42fe65.gif

ダイアログ (Experimental)

ダイアログコンポーネントが追加されました。ダイアログはよく使うパターンなので地味に嬉しい。

f:id:haikage1755:20200528033739p:plain

Dock (Experimental)

オシャレUIです。フィギュアのようにオブジェクトがおけるので面白いですね!車や大き目なオブジェクトでやるとインパクトがあるかもしれません。(うまく操作できるかはわからない)

https://user-images.githubusercontent.com/621574/76669327-65e86080-6548-11ea-85a3-f84f6b367f97.gif

Unity Profiler markers

Input System のどこでパフォーマンスを食っているのかがProfilerで可視化されるようになりました。

f:id:haikage1755:20200528034222p:plain

Windows API Checker のメソッド追加

WindowsApiCheckerに下記のメソッドが追加されました。

  • IsMethodAvailable
  • IsPropertyAvailable
  • IsTypeAvailable

こんか感じで使うみたいです。

#if WINDOWS_UWP
        private static readonly bool isTryGetViewConfigurationSupported = Windows.Utilities.WindowsApiChecker.IsMethodAvailable(
            "Windows.Graphics.Holographic",
            "HolographicDisplay",
            "TryGetViewConfiguration");
#endif // WINDOWS_UWP

テキスト入力フィールドからキーボードを立ち上げるヘルパー

テキスト入力フィールドはそのままではキーボードが表示されないので、そのサポート機能です。

f:id:haikage1755:20200528034728p:plain

テキストフィールドにアタッチして使う

  • UI_KeyboardInputField
  • TMP_KeyboardInputField

が追加されています。

Grid Object Collection の機能追加

グリッド内の要素を中央に配置するか、左/右軸に沿って配置するか(行と列のレイアウトを行う場合は上/下軸)を選択できるようになりました。

f:id:haikage1755:20200528035008p:plain

オブジェクトの中心軸に沿ってアンカーを配置することで、UnityのLayout Groupの動作に合わせて Grid Object Collectionの動作が変更されました。

f:id:haikage1755:20200528035016p:plain

ハンズフリーな input simulation

これはめちゃくちゃ嬉しいアップデートです!

https://user-images.githubusercontent.com/39840334/79164615-40908180-7d96-11ea-8195-6be34d4df8d6.gif

Shiftで手を出さなくてもマウスの左ボタンをクリックしてオブジェクトを操作できます!超楽!

Audio Spatializer の設定追加

MRTKの設定ダイアログでAudio Spatializerを指定できるようになりました。Microsoft Spatializerなどの新しいスペーシャライザをインストールすると、簡単に選択できるようにプロンプトが表示されます。

空間音響を使いたい場合は、Microsoft Spatializerをつかった方が標準のものよりパフォーマンスが若干いいそうです。

f:id:haikage1755:20200528035549p:plain

Object Manipulator のExperimentalがとれてSDK

ManipulationHandlerの代わりとなるObjectManipulatorのExperimentalが外れました 物理に対応(掴んだまま床や壁にぶつけたり)にしたので、古い方はもういいでしょう。

Bounds Control の改善

Boundsが設定変更ごとに再生成されていたのが修正され、実行時に再設定できるようになったなど変更が大きく入りました。

破壊的変更

Eye Gaze API

IMixedRealityEyeGazeProviderを実装したGazeProviderのUseEyeTrackingのプロパティがIsEyeTrackingEnabledにリネームされました。

Eye Gaze のセットアップ

EyeGazeのセットアップステップが変更されました。 'IsEyeTrackingEnabled' のチェックボックスは、input pointer profileにあります。このチェックボックスを入れると、デフォルトのHeadGazeではなく、EyeGazeが有効になります。

f:id:haikage1755:20200528054855p:plain

既知の問題

Unity 2019.3でMRTK Configuratorダイアログに「Enable MSBuild for Unity」が表示されない

2019.3でMSBuild for Unityを有効にすると、パッケージの復元が無限ループになる可能性があるという問題があります#7239

回避策として、NuGet for Unityを使用してMicrosoft.Windows.DotNetWinRTパッケージをインポートすることができます。

Unity 2018.4でアセンブリのバージョンと複数のプリコンパイル済みアセンブリの重複

Unity 2018.4でプラットフォームをスタンドアロンからUWPに切り替えてからスタンドアロンに戻すと、コンソールに以下のようなエラーが出ることがあります。

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

これらのエラーは、MSBuildForUnityでの削除処理に問題があるためです。この問題を解決するには、スタンドアロンで、AssetsのルートにあるDependenciesフォルダを削除し、unityを再起動します。

詳細については、issue 7948を参照してください。

Unity 2019.3で2Dスレートでアプリが表示される

Unity 2019.3を使用している場合、XRサポートを有効にすると、デフォルトのSDK(レガシー)やプラグイン(XR Mangement)が設定されません。その結果、アプリケーションが 2D スレートに制約されます。これを解決するための詳細は、MRTKのビルドとデプロイの記事に記載されています。

Unity 2019.3. ARMのビルドアーキテクチャ

Unity 2019.3では、Visual StudioでビルドアーキテクチャとしてARMを選択するとエラーが発生する既知の問題があります。推奨される回避策は、ARM64用にビルドすることです。それがオプションでない場合は、Edit > Project Settings > Player > Other SettingsでGraphics Jobsを無効にしてください。詳細については、「ビルドとデプロイ」を参照してください。

ランタイムプロファイルのスワップ

MRTKは実行時のプロファイルのスワップを完全にはサポートしていません。この機能は将来のリリースに向けて調査中です。詳細はissue 428954655466を参照してください。

Unity 2018: .NET Backend と AR Foundation

Unity 2018では、.NETスクリプトバックエンドを使用してUniversal Windows Platformプロジェクトをビルドすると、Unity AR Foundationパッケージが失敗するという問題があります。

この問題を回避するには、次のいずれかの手順を実行してください。

  • スクリプトバックエンドをIL2CPPに切り替える
  • ビルド設定ウィンドウで「**Unity C# Projects」のチェックを外します。

[デコシノニッキ]は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」