MRが楽しい

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

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く データバインディングとフレームワークのテーマ化(最初のデータバインディングプロジェクト)

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

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

今回は「データバインディングフレームワークのテーマ化」のページの「最初のデータバインディングプロジェクト」に関する項目を読み進めます。
docs.microsoft.com

前提条件

本サンプルシーンの作成を行う際は DataSourceJsonTest コンポーネントが必要なため、MRTK3 のサンプルシーンプロジェクトで実施する必要があります。
サンプルシーンの展開手順の詳細は以下の記事の[データバインディングとテーマ設定のサンプルシーン]項を参照ください。
bluebirdofoz.hatenablog.com

最初のデータバインディングプロジェクト

以下はすぐに始められる簡単な例です。

1.以下のサンプルシーンを開きます。
・Assets/Scenes/SampleEmptyMRTKScene.unity

2.[Empty]のゲーム・オブジェクトを作成し、"Data Binding "という名前に変更します。

3.ゲームオブジェクトに DataSourceJsonTest コンポーネントを追加します。

4.Inspector ビューから、[URL]プロパティをhttps://www.boredapi.com/api/activityに変更します。

5.[UI -> Text - TextMeshPro]オブジェクトを、Data Binding ゲームオブジェクトに追加します。Canvas と Text (TMP) オブジェクトが追加されます。

6.Text (TMP)」オブジェクトを選択し、[Text Input]プロパティを以下のように変更します。

{{ activity }}. It's {{ type }}.

7.Canvas オブジェクトを選択し、Data Consumer Text コンポーネントを追加します。

8.プロジェクトを実行します。15秒ごとに、異なるアクティビティが表示されます。

筆者メモ

筆者環境では上記キャプチャの通り、以下の証明書エラーが発生して正常に動作しませんでした。

Cert verify failed: UNITYTLS_X509VERIFY_FLAG_USER_ERROR1

新しいデータソースの作成

データソースは1つまたは複数のデータコンシューマにデータを提供します。
データソースはアルゴリズムで生成されたもの/RAM上のもの/ディスク上のもの/中央データベースから取得したものなど、あらゆるデータを扱うことができます。

すべてのデータソースは IDataSource インターフェイスを提供する必要があります。
基本的な機能の一部は DataSourceBase という基底クラスで提供されています。
ほとんどの場合、このクラスから派生して、必要なデータ管理機能を追加することができます。

データソースをコンポーネントとしてゲームオブジェクトに設定できるようにするために DataSourceGOBase という別のベースオブジェクトが存在します。
これは MonoBehavior であり、コンポーネントとしてゲームオブジェクトに設定することができます。
これはプロキシで Unity に依存しないコアデータソースに仕事を委ねるように設計されています。

データソースは Unity Editor 内でデータを操作する機能を公開することがあります。
この場合、派生クラスはすべてのデータソースロジックを含むか、または「純正」データソースを活用し、さらに Inspector フィールドやその他のデータ設定手段を追加することができます。

新しいデータコンシューマーの作成

データコンシューマはデータが変更されたときに通知を受け取り、TextMeshPro コンポーネントに表示されるテキストなど、ユーザーエクスペリエンスを更新します。

すべてのデータコンシューマーは IDataConsumer インターフェイスを提供する必要があります。
基本的な機能の一部は DataConsumerGOBase という基底クラスで提供されています。

データコンシューマの仕事の大部分は新しいデータを受け入れ、それをプレゼンテーションのために準備することです。
これは正しいプレハブを選択するのと同じくらい簡単なことかもしれませんし、コンテンツ管理システムのようなクラウドサービスからより多くのデータを取得することを意味するかもしれません。

データ収集アイテムプレーサーの作成

データコレクションのアイテムプレーサーはコレクションが小さな静的リストであっても、巨大な百万レコードのデータベースであっても、コレクションのどの部分が現在表示されているかとその表示方法を管理する責任があります。

すべてのアイテムプレッサーは IDataCollectionItemPlacer インターフェイスを提供する必要があります。
基本的な機能のいくつかは DataColletionItemPlacerGOBase と呼ばれる基底クラスで提供されます。
すべてのアイテムプレーサーはこのクラスから派生する必要があります。

既知の制限事項と不足している機能

・Unity の Canvas ベースのコントロールやスクロール可能なリストとの統合は未実装です。
・.NET INotifyPropertyChanged の統合は未実装です。
Flickr と trymrtk.com から画像を取得するサンプルシーンは Unity の後のバージョンの HTTPS SSL バグのため、HoloLens では動作しません。
・パフォーマンスチューニングを追加しました。
・このリリースではデータキャプチャではなく、データプレゼンテーションに重点を置いています。MRTK UX コントロールはまだ DataSource の状態を設定するように接続されていません。
・リストデータへの動的な変更は増分更新ではなく、リスト全体を完全にリフレッシュします。
・データ操作のパイプラインがまだ実装されていません。
・スレート上のすべてのUXコンポーネントの入力はまだ完全にサポートされていません。
・DataSourceJson ノードは、DataSourceObjects と相互運用できるように IDataNode インターフェイスを実装する必要があります。