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

概要

本項は MRTK3 のデータバインディングフレームワークのテーマ化についてです。
このフレームワークは1つ以上のデータソースから提供されるデータによって、実行時、動的に設定および更新可能なビジュアル要素を作成できます。

データバインディングとは

データバインディングはアプリケーションのUX(ビュー)と表示されるデータ(モデル)の接続を確立するためのプロセスです。
バインディングに正しい設定を行い、データが適切な通知を提供したとします。
このときにデータの値が変更されると、そのデータにバインドされている要素に変更が自動的に反映されます。

一般的なデータバインディングフレームワークの例

Delphi
Windows Presentation Framework (WPF .NET)
Windows Forms
・Angular
・Backbond
JavaFX Bindings

Windows Presentation Frameworkのデータバインディングブロック図

画像は参照ページより引用

MRTK3と同等のブロック図

画像は参照ページより引用

設計目標

クロスプラットフォーム
・あらゆる組織構造とデータソースの発信元をサポートする
・既存のコードベースまたはグリーンフィールドコードベースへ容易に統合できる
・デザイナーと開発者に優しい
・アプリケーションのライフサイクル中にいつでも有効/無効を切り替え可能とする
・現実世界のエンタープライズシナリオ(バックエンドDB、複雑なUXプレハブテンプレート)をサポートする
・MRTKではないUXコンポーネントや新しいビジュアル要素に簡単に適用できる
・スプライト、画像、マテリアル、アニメーション、オーディオクリップなどの任意のデータ型をバインドする
・既存のコードベースに触れることなく機能を簡単に拡張できる
・CPU、RAM、GC、フレームタイムを効率的に使用する
・様々なローカルまたはバックエンドのデータソースと容易に統合できる
・埋め込み/ランタイム状態/バックエンドのデータ・ソースを任意に同時に組み合わせる
・リスト表示のために任意のサイズのコレクションを効率的に処理する
・テーマ設定とデータバインディングを組み合わせてテーマ設定可能な動的データ要素とする
・変数データを表示する前に、オープンエンドの方法で検証および操作する
・他のMRTK機能への依存関係を最小限にする
・MRTK v2 および MRTK3 との互換性を持つ
・最小限の労力で簡単にホワイトラベルを付けたり、ストック資産にブランド化を適用する

主な機能

・オープンエンドのデータソースは永続化されたリモートデータストラテジ、またはRAMデータストラテジをサポートする
・オープンエンドのデータコンシューマはあらゆる UX バインディングとテーマのニーズをサポートする
・データソースとコンシューマ間の自動検出により、接続を簡素化する
バインディングプロファイルからオプションを自動構成する
・分離されたデータモデルとビューは MVC パターンと MVVM パターンをサポートする
・ページングとスクロールによるナビゲーションを備えた仮想化されたコレクション
・スムーズなリストナビゲーションのためのコレクション項目の予測プリフェッチ
・コレクションオブジェクトをプールして再利用して GC を減らす
・データの違いをマップしたり、キーパス名前空間を表示できます。

現在の機能

1. データコンシューマによる可変データの可視化

現在サポートされているもの

・TextMeshPro および TextMesh
・テキストスタイルシート (テーマとアクセシビリティ用)
・Sprite テクスチャ
・boolean トリガー
・Quad テクスチャ
・フォントアイコン
・コレクション(可変データを設定したプレハブを含む任意のサイズのリスト)
・IDataConsumer インターフェイスをサポートするその他のコンシューマー (直接または基本クラス派生経由)

2. 様々なデータソースを使用して可変データを提供する

JSON テキスト (直接または URL フェッチによる)
・可変データ要素の Dictionary
・オブジェクト(ノードベースの構造化データ)
・任意の C# オブジェクトのリフレクション
・プログラムによって変更されたデータ
・IDataSource インターフェイスをサポートするその他のメソッド

3. リストの視覚的なマニフェスト化を管理するためのリストアイテムの配置設定

4. ページング、スクロール、ビジュアルの一覧表示

・データは可視時または処理中の場合にのみフェッチされる
・任意に大きいバックエンドデータセットをサポートする
・フェッチは複数のフレーム間で負荷分散されます

5. プレハブプールの一覧表示

・プレハブは再利用され GCインスタンス化の時間が短縮されます。

6. 実行時に要素にテーマを動的に適用する

ロードマップの機能

既に利用可能なものに加えて、追加機能の最優先事項は以下のとおりです。

1. データマニピュレーターパイプライン

・データとビュー間の値の変換
ローカリゼーション (Unity ローカリゼーションとのシームレスな統合)
・フォーマッティング
・検証

2. 予測リスト項目のプリフェッチによるスクロール/ページングを高速/スムーズ化

3. より多種のデータコンシューマ

コンポーネントにパブリックプロパティを設定する
チェックボックスのオン/オフ状態を設定する
・スライダー値を設定する
・グループ内のラジオボタンを設定する
・カラーなどの個々のマテリアルプロパティを設定する

4.テーマ化

・アプリケーションを実行していない時もエディターで適用されたテーマを表示する
・テーマを反映させるためにプレハブを更新し、それがデフォルトのテーマになるようにする
・テーマ/スタイルを継承する