MRTKv2が遂にリリースされました。(発売迫っているのかな(‘ω‘ )wktk)
2.0でのアップデート内容を整理していきます。
- Package
- Release Note
- BoundingBox
- Clipping Example
- CoreServices
- Default HoloLens (1st gen) profile
- Dependency window
- Example: Launch applications from within a Unity app
- Extension Service Creation Wizard
- Fingertip Cursor
- Hand Menu Graduated from Experimental
- HoloLens 2 Button
- HoloLens 2 Shell Parity
- IMixedRealityRaycastProvider
- Improved solvers
- Input animation recording
- MRTK Standard Shader
- Optimize Window
- Radial Solver
- Scene System
- Service managers(experimental)
- Slate
- SpatialObjectMeshObserver
- Take Screenshot
- UX controls
- Updated architecture documentation
- Known Issue
Package
- Foundation
- Extension
- Tools
- Examples
の4つから構成されており,この中でコアになるパッケージはFoundationです。
Toolsは,後述するDependencyWindowやScreenShotUtility,MSBuildといったMRTKの動作そのものには関係しないものが含まれています。
Extensionsには現状含まれているのはSceneTransionServiceだけみたいですが,コアの仕組みとしてはいらないけど,あると開発に便利くらいの立ち位置でしょうか。
Release Note
BoundingBox
Improvements
- ハンドルアセットのサイズとスケールロジックの正規化
- ハンドルアセットのサイズが1mになった
- デフォルト値とExampleがアップデートされた
New features
- 近接によるアニメーションハンドル
- HoloLens2シェル(Home画面のこと)の動作と一致
- ハンドルは手が近くにあるときのみ表示されるよう構成可能になった
New example scene
- BoundingBoxExample SceneがExample packageに追加された
Clipping Example
MRTK standard shaderの新しいClipping機能を使ったデモがExample packageのClippingExample sceneという名前で追加された。
CoreServices
CoreServices というstatic classはMixedRealityServiceRegistryと連携して、コアサービスのインスタンスを取得するための高速で便利なメカニズムが追加された。
Default HoloLens (1st gen) profile
HoloLens (1st gen) 開発向けにパフォーマンスを考慮して設定されたプロファイルが追加された。
設定を適応するにはActive ProfileにDefaultHoloLens1ConfigurationProfileを設定してください。
Dependency window
どのアセットがお互いに依存関係にあるかを提示するDependency Windowが追加されました。このツールで、どのアセットがプロジェクトに含まれていて使われていないかを確認することができます。
Example: Launch applications from within a Unity app
Example packageのHandInteractionExamples sceneでは、外部アプリを立ち上げることができるLaunchUriのデモがあります。
(HoloLens2からは3Dアプリ内で、2DUWPアプリを1つまで立ち上げることができるようになっています。)
Extension Service Creation Wizard
シングルトンからサービスへの移行は困難な場合があります。Extension Service Creation Wizardは、開発者が新しいサービスを簡単に作成できるようにすることで、ドキュメントとサンプルコードを補完します。
Fingertip Cursor
Fingertip Cursor(指先カーソルのこと)がHoloLens 2 shellによりマッチするようにアップデートされました。
Hand Menu Graduated from Experimental
HandConstraintとHandConstraintPalmUpソルバーが公式機能として使えるようになり、ドキュメントも改善されました。
HandConstraintPalmUpには、アクティブ化する前に手の指が同一平面上にあることを強制するトグルがあります。(要は、手の指がまっすぐ揃っていないとダメという条件がつけられる)
HoloLens 2 Button
HoloLens 2 shell にマッチするように多くのビジュアル的改善がなされました。
- ビジュアルの圧縮
- 遠方のインタラクションのサポート
- フォーカスハイライト
- Shader effect
HoloLens2 スタイルの丸型ボタンが追加されました。
HoloLens 2 Shell Parity
このリリースで、MRTKが更新され、HoloLens 2 shellの動作とビジュアルの機能がよりよく反映されます。このGithub issueは変更について説明しています。
IMixedRealityRaycastProvider
Input systemがアップデートされ、IMixedRealityRaycastProviderのカスタム実装を通して、raycastをカスタマイズできるようになりました。
Input Systemのプロファイルで、使いたいraycast providerを指定します。
Improved solvers
Solverは左利き/右利きに固定される代わりに、最初に利用可能なハンド/コントローラで制御できるようになりました。Tracked Target Typeの古い値タイプは廃止されていない値に更新する必要があります。
Input animation recording
頭部の動きと手の追跡データをアニメーションファイルに保存できる記録システムがあります。記録されたデータは、Input Simulation Systemを使用して再生できます。
MRTK Standard Shader
MRTK Standard ShaderはUnityのLight weight scriptable render pipelineをサポートするようになりました。
追加の改善項目
- Warningと"Fix Now"ボタンが、Enable Depth Buffer Sharingが有効になっていて、深度を書き込まないマテリアルに対して表示されるようになりました
- 近接ライトには、マテリアルごとのカラーオーバーライドと、近接するシャドウを模倣するSubtractive Lightオプションがあります
- Clipping primitevesは、ビルド時にShader順序を知る必要がなく、実行時にオン/オフが切り替えできるようになりました
- Addaptive と transparentマテリアルが正しくクリッピングされるようになりました。Blend Clipping Width と呼ばれる非不透明またはカットアウトマテリアルの新しいプロパティにより、開発者はクリップブレンドの幅を調整できます
- 三角形の背面の向きの照明が正しくなりました
Optimize Window
Optimize WIndowは、Unityで最高のパフォーマンスを実現するために、Mixed Reality Projectを構成するプロセスを自動化し、教えてくれるユーティリティです。
Radial Solver
垂直方向の配置が改善されました。"User Fixed Vertical Position"をオンにして、垂直方向の動きをロックし、Shell styleのtag-alongに沿った動きを実現します。ToggleFeaturePanel prefab sceneのlazy-following tag-alongの例でふるまいを確認できます。
Scene System
Scene Systemは1つ以上のシーンを含むアプリケーションをサポートします。
Service managers(experimental)
このリリースでは、service managerが追加され、Spatial Awareness Systemなどの特定のMRTK機能を個別に簡単に追加できるようになりました。
これらのService ManagerはFoundationパッケージの一部としてインポートされ、MixedRealityToolkit.SDK \ Experimental \ Featuresフォルダーにあり、開発中のものです。
Service manager prefabは、次のサービス用に提供されています。
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SpatialAwarenessSystem
- TeleportSystem (requires the Input System)
使用するには、目的のPrefabをheirarchy にドラッグアンドドロップし、プロファイルを選択します。
Slate
Improved
- 指の近接に基づいて影を追加してslateの使いやすさを改善
- Follow me のふるまいがHoloLens 2 shell のふるまいと一致するように、Radial Solverを改善
Fixed
- Flatted bounding boxで修正された境界線の厚さの問題
SpatialObjectMeshObserver
Spatial Awareness Systemを使用する際の開発者の生産性を向上させるために、SpatialObjectMeshObserverを追加しました。このObserverは、インポートされた3Dモデルからメッシュデータを読み取り、それらを使用してHoloLens 2などのデバイスから環境データをシミュレートします。
SpatialObjectMeshObserverはデフォルトのプロファイルでは有効になっていません。この機能の使用方法については、Spatial Awareness Getting Startedを参照してください。
Take Screenshot
Editor内で高解像度のスクリーンショットをキャプチャするために、Take Screen shot Utilityのメニュー項目(Mixed Reality Toolkit > Utilities > Take Screenshot)が追加されました。スクリーンショットは、ドキュメントやメディア用の画像を簡単に合成する際に使用するために、透明な透明色でキャプチャできます。
UX controls
次のリストにある次のUXコントロールは、コードからインスタンス化および構成できるようになりました。
- BoundingBox
- ManipulationHandler
- HandInteractionPanZoom
- Interactable (basic features)
Updated architecture documentation
architecture documentationが新しいバージョンになりました。
Known Issue
Extension Service Wizard
Extension Service Wizardを使用する場合、インスペクターの生成やプロファイルの生成は実際にはオプションではありません。 これらのいずれかの選択を解除して拡張サービスを作成しようとすると、次のページでエラーが発生します。 さらに、ユーザー用に作成された拡張サービスは、実際には作成されなかったScriptableObjectプロファイルのプロパティを作成します。 これにより、プロパティ行が削除されるまでコンパイラエラーが発生します。
現在の回避策の手順:
- 拡張サービスウィザードのエラーメッセージを無視する
- 作成された* ExtensionService.csファイルを開き、存在しないプロファイルへの参照を削除する
Long paths
Windows上でビルドする場合、255文字のMAX_PATH制限があります。 Unityはこれらの制限の影響を受け、解決された出力パスが255文字より長い場合、バイナリのビルドに失敗する場合があります。
これは、Visual Studioで次のようなCS0006エラーとして現れる可能性があります。
CS0006: Metadata file 'C:\path\to\longer\file\that\is\longer\than\255\characters\mrtk.long.binary.name.dll' could not be found.
これは、Unityプロジェクトフォルダをドライブのルートに近づけることで回避できます。次に例を示します。(まじか)
C:\ src \ project
Runtime profile swapping
MRTKは、実行時のプロファイルスワッピングをサポートしています。 この機能は、future releaseで調査中です。
Text overflow in the some of the scroll view example when deployed with 16-bit depth buffer
Scroll view exampleで作成された例は,デバイスが16bit深度バッファで構成されている場合,デバイス上でテキストがはみ出ます。24bit深度を使用してこれらのサンプルシーンを構築します。(これはEnableDepthBufferSharingの設定のことですね。詳しくはこちら
Unity 2019: Could not copy the file HolographicAppRemoting.dll
Unity 2019用のWindows Mixed Realityパッケージのバージョン3.0.0には既知の問題があります。プロジェクトにこのバージョンがインストールされている場合、Microsoft Visual Studioでコンパイルするときに次のエラーが発生します。
この問題を回避するには、Unityエディターの[ウィンドウ]> [パッケージマネージャー]を使用して、新しいバージョンを確認するか、バージョン3.0.2にロールバックしてください。
VR/Immersive devices: Content in some demo scenes is placed below the user
Examplesパッケージに含まれるデモシーンの一部は、HoloLensデバイス用に最適化されています(ヘッドセットのy位置は0です)。 これらのシーンは、VR /イマーシブデバイスで実行されている場合、ユーザーの下にオブジェクトを配置できます(ヘッドセットのY位置は床からの距離です)。 この問題を回避するには、階層でシーンコンテンツオブジェクトを選択し、トランスフォームの位置Yの値を1.5(1.5メートル、または優先ヘッドセットの高さ)に設定します。