MRが楽しい

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

MRTK v2のドキュメントを少しずつ読み解く Mixed Reality Toolkitのコンポーネント化

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

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

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200322185746j:plain

Mixed Reality Toolkitのコンポーネント

Mixed Reality Toolkit v2の優れた新機能の1つはコンポーネント化の改善です。
個々のコンポーネントは可能な限り、基盤のコア層を除く全てから隔離されています。

最小化された依存関係

MRTK v2はモジュール化され、システムサービス間の依存関係を最小化する意図で開発されました。
一部のシステムサービスの性質(入力とテレポーテーションなど)により、少数の依存関係が存在します。

サービスには1つ以上のデータプロバイダーコンポーネントが必要になることが予想されます。
しかし、それらの間には直接的なリンクはありません。
SDK機能にも同じことが言えます(例:ユーザーインターフェイスコンポーネント)。

コンポーネント通信

MRTK v2はインターフェイスを利用して、サービス、データプロバイダー、およびアプリケーションコード間で通信します。
これはコンポーネント間に直接リンクがないことを保証するためです。
全ての通信はMixed Reality Toolkitコアコンポーネントを介してルーティングされます。
f:id:bluebirdofoz:20200322185757j:plain

MRTKインポートフットプリントの最小化

MRTKは単一の基盤パッケージとしてインポートされます。
インポートされたファイルを手動で削減することにより、このフットプリントを小さくすることができます。
これは明確に定義されたガイドがない手動のプロセスとなります。

Foundation パッケージのインポート中に、任意のアイテムのチェックを外すことができます。
ただし、機能を損なう可能性があるため、開発の初期段階でこれを行うことはお勧めしません。
アプリの最終的な機能セットを把握したら、次のフォルダーで不要なプロバイダーとサービスを整理できます。
・MixedRealityToolkit.Services
・MixedRealityToolkit.Providers
・MixedRealityToolkit.SDK\Features

注意

MRTK v2には Assets\MixedRealityToolkit フォルダーのコンテンツが必要です。

今後の機能

アプリケーションアーキテクチャ

MRTKは次のような様々なアーキテクチャでアプリケーションを構築できるサポートを提供します。
・MixedRealityToolkit service locator
・Individual services
・Custom service locator
・Hybrid architecture

アプリケーションアーキテクチャを選択するときは、設計の柔軟性とアプリケーションのパフォーマンスを考慮します。
ここで説明するアーキテクチャは、全てのアプリケーションに適しているとは限りません。

MixedRealityToolkit service locator

MRTK はアプリケーションシーンがデフォルトの MixedRealityToolkit サービスロケーターコンポーネントを使用できるようにします。
このコンポーネントには、構成インスペクターを介した MRTK システムとデータプロバイダーの構成のサポートが含まれます。
これらはコンポーネントライフスパンとコア動作を管理します。(例:更新するタイミング)

プロジェクトにシステムが存在するかどうかに関係なく、すべてのシステムがコア構成インスペクターに表示されます。
詳細については、Mixed Reality Configuration Guide を参照してください。
microsoft.github.io

Individual services

一部の開発者は、個々のサービスコンポーネントをアプリケーションシーン階層に含めることを望んでいます。
この利用法を有効にするには、サービスをカスタムレジストラーにカプセル化するか、自己登録/自己管理する必要があります。

自己登録サービスは IMixedRealityServiceRegistrar を実装し、レジストリを介してアプリケーションコードがサービスインスタンスを検出できるように自身を登録します。

自己管理サービスはシーン階層内のシングルトンオブジェクトとして実装できます。
このオブジェクトは、アプリケーションコードがサービス機能に直接アクセスするために使用できるインスタンスプロパティを提供します。

Custom service locator

一部の開発者は、カスタムサービスロケーターコンポーネントを作成する機能を要求します。
カスタムサービスロケーターは IMixedRealityServiceRegistrar インターフェイスを実装し、アクティブなサービスのライフサイクルとコア動作を管理します。

Hybrid architecture

MRTKは、開発者が必要に応じてアプローチを組み合わせることができるハイブリッドアーキテクチャをサポートします。
例えば MixedRealityToolkit サービスロケーターから開始し、自己登録サービスを追加できます。

ハイブリッドアーキテクチャを選択する場合、作業の重複に注意します。
(例:複数のコンポーネントからコントローラーデータを取得する)