Mixed Reality Toolkit 3の便利な機能 - Data Binding周りを調べてみる

181 Views

November 16, 22

スライド概要

XRミーティング 2022/11/16登壇資料。
Mixed Reality Toolkit 3で提供される予定のData bindingの機能について調べた途中経過を共有。

profile-image

ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 業務アプリケーション実行基盤の開発に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Mixed Reality Toolkit 3の便利な機能 Data Binding周りを調べてみる 2022/11 XRミーティング takabrz1 Takahiro Miyaura

2.

Microsoft MVP for Mixed Reality 2018-2023 某会社でSE(アプリケーション領域のアーキテクト的なお仕事なはず)= XRは趣味です(貢献領域:Mixed Reality) 宮浦 恭弘 (Miyaura Takahiro) ◼ 大阪駆動開発(とHolomagicians)コミュニティに生息 ◼ HoloLens日本販売してからxR系技術に取組む ◼最近はMixed Reality Toolkit 3と戯れている。 ◼ 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura @takabrz1 ※よかったらこれを機にお知り合いになってください

3.

本日の内容 ○ Mixed Reality Toolkit 3のData Binding調べる ○おさらい ○Data Binding調べる 色々と便利ですよ、Data Binding 2022/11/16 Copyright © 2022 Takahiro Miyaura 3

4.

Mixed Reality Toolkit 3 おさらい 2022/11/16 Copyright © 2022 Takahiro Miyaura 4

5.

Mixed Reality Toolkit 3おさらい - Mixed Reality Toolkit とは Unity向けのMicrosoft公式のOSSライブラリ Holotoolkit Mixed Reality Toolkit 3は Public Preview版だから 検証目的で使ってね! HoloLens向け ◼Unity向け ◼クロスプラットフォーム ◼最新バージョンはV2.8.2 ✓基本コンポーネント ✓共通のインタラクション ✓UIコントロール ※Unreal向けのMRTKもあります。 ※実はBabylon.js版もある 2022/11/16 Mixed Reality Toolkit Windows Mixed Reality Devices対応 Mixed Reality Toolkit V2 HoloLens 1/2,VR Devices,Mobile AR… Mixed Reality Toolkit 3 New!!! Copyright © 2022 Takahiro Miyaura 5

6.

Mixed Reality Toolkit 3おさらい ポイント 既存ライブラリへの対応、標準化 ✓ MRTK V2までで持つしかなかった機能や仕組みを改めて既存ライブラリを利用するように変更 引用元:Microsoft Developer,「Getting started with your first MRTK3 project」, https://youtu.be/aVnwIq4VUcY, (参照2022/06/11) 業界標準、冗長な機能に対応するためのリファクタリングにより 扱いやすいライブラリへ 2022/11/16 Copyright © 2022 Takahiro Miyaura 6

7.

Mixed Reality Toolkit 3おさらい ポイント 機能毎のバージョニングに変更となった パッケージ名 バージョン com.microsoft.mrtk.accessibility 1.0.0-pre.12 com.microsoft.mrtk.core 3.0.0-pre.12 com.microsoft.mrtk.data 1.0.0-pre.12 com.microsoft.mrtk.diagnostics 3.0.0-pre.12 com.microsoft.mrtk.environment 3.0.0-pre.12 com.microsoft.mrtk.extendedassets 3.0.0-pre.12 MRTK3からの新機能なのでV1から始まってる MRTK3からの新機能なのでV1から始まってる com.microsoft.mrtk.graphicstools.unity 2022/11/16 0.4.0 com.microsoft.mrtk.input 3.0.0-pre.12 com.microsoft.mrtk.spatialmanipulation 3.0.0-pre.12 com.microsoft.mrtk.standardassets 3.0.0-pre.12 com.microsoft.mrtk.uxcomponents 3.0.0-pre.12 com.microsoft.mrtk.uxcore 3.0.0-pre.12 com.microsoft.mrtk.windowsspeech 3.0.0-pre.12 Copyright © 2022 Takahiro Miyaura 7

8.

Mixed Reality Toolkit 3おさらい 現時点でのサポートデバイス 随時追加しているのでExperimental(試験的)が多め Platform Supported Devices OpenXR devices ○ Microsoft HoloLens 2 ○ Meta Quest 1/2 ○ Windows Mixed Reality (experimental) ○ SteamVR (experimental) ○ Oculus Rift on OpenXR (experimental) ○ Varjo XR-3 (experimental) Windows ○ Traditional flat-screen desktop (experimental) And more coming soon! OpenXRに対応していると大抵動く XRI対応でデバイス対応はかなり楽になってる印象 2022/11/16 Copyright © 2022 Takahiro Miyaura 8

9.

Mixed Reality Toolkit 3おさらい 現時点でのサポートデバイス 先日試したらMeta Quest Pro上でも動きました。 2022/11/16 Copyright © 2022 Takahiro Miyaura 9

10.

Mixed Reality Toolkit 3おさらい (参考)開発環境とパッケージ要件 開発に必要な環境とパッケージ(HoloLensの場合) ○ Mixed Reality Feature Tool ○ Unity 2020.3.35,2021.3.4 or newer ○ packages ✓ Mixed Reality OpenXR Plugin(from Mixed Reality Feature Tool) ✓ Input System* ✓ XR Management* ✓ XR Interaction Toolkit* ✓ OpenXR Plugin* ○ Visual Studio 2022 ✓ Windows 10 SDK version 10.0.19041.0 or 10.0.18362.0, or Windows 11 SDK ✓ USB Device Connectivity (required to deploy/debug to HoloLens over USB) ✓ C++ (v142) Universal Windows Platform tools (required when using Unity) *印はMRTK3を導入すると自動的に依存関係のあるpackageとしてインポートされます。 2022/11/16 Copyright © 2022 Takahiro Miyaura 10

11.

本日の内容 ○ Mixed Reality Toolkit 3のData Binding調べる ○おさらい ○DataBinding調べる 色々と便利ですよ、Data Binding 2022/11/16 Copyright © 2022 Takahiro Miyaura 11

12.

MRTK3 Data Bindingとは 2022/11/16 Copyright © 2022 Takahiro Miyaura 12

13.

MRTK3 Data Bindingとは (参考)開発環境とパッケージ要件 コンポーネントなどに後付けで動的データを扱う 動的にデータを入れ替えたり、スタイルを変更する 2022/11/16 Copyright © 2022 Takahiro Miyaura 13

14.

MRTK3 Data Bindingだけ試すなら 必要なパッケージ Mixed Reality Feature Toolで設定 MRTK3はこれをインポート ○ MRTK Data Binding and Theming Early Preview(1.0.0-pre.12) ○ MRTK Input(3.0.0-pre.12) ○ MRTK Standard Assets(3.0.0-pre.12) ○ MRTK UX Conpoments(3.0.0-pre.12) ○ Mixed Reality OpenXR Plugin(1.6.0) 必要なコンポーネントの設定 MRTK3関連に加えてOpenXR Pluginの追加も忘れずに! 任意で空間オーディオライブラリも使えます。 2022/11/16 Copyright © 2022 Takahiro Miyaura 14

15.

とりあえず試すなら Mixed Reality Toolkit のGithubのサンプルがいいです。 MRTK3はこれをインポート ○ https://github.com/microsoft/MixedRealityToolkit-Unity/ ○ ブランチを「mrtk3」に ○ ルートにUnityProjectsフォルダがある ○ この下にサンプルが入っている Unityのバージョン 現在はUnity 2020.3.38f1です。 2022/11/16 Copyright © 2022 Takahiro Miyaura 15

16.

とりあえず試すなら Assets/Data Binding Example/Scenesの中にサンプルあり 2022/11/16 Copyright © 2022 Takahiro Miyaura 16

17.

ちょっとだけやってみよう 2022/11/16 Copyright © 2022 Takahiro Miyaura 17

18.

ちょっとだけやってみよう Textの{{ samplename }}を変更する Microsoft.MixedReality.Toolkit.Data.DataSourceGOBase ○ 動的データ管理するためのコンポーネントを作成する基底クラス ○ このくらいを継承して自分好みのDataSourceを作成する Microsoft.MixedReality.Toolkit.Data.DataConsumerText ○ 配下にあるText系コンポーネントを検索しDataSouceの値を引当てる 2022/11/16 Copyright © 2022 Takahiro Miyaura 18

19.
[beta]
デモ
作ったコード:samplenameという名前で値が置き換わる
using
using
using
using

Microsoft.MixedReality.Toolkit.Data;
System.Collections;
System.Collections.Generic;
UnityEngine;

public class SampleSourceReflection : DataSourceGOBase
{
private float _deltaSeconds;
private int _nextFiveSecondTarget;

private System.Random _random = new System.Random();
private string[] _names = { "Sample 1", "Data 1", "Demo 1", "XRMTG!!!"};
protected override void InitializeDataSource()
{
InitializeData();
_deltaSeconds = 0;
}
private void Update()
{
_deltaSeconds += Time.deltaTime;
int tenthsOfSeconds = (int)(_deltaSeconds * 10.0);
DataChangeSetBegin();
if (tenthsOfSeconds > _nextFiveSecondTarget)
{
_nextFiveSecondTarget += 50;
SetValue("samplename", _names[_random.Next(0, _names.Length)]);
}
DataChangeSetEnd();
}
private void InitializeData()
{
DataChangeSetBegin();
SetValue("samplename", _names[0]);
DataChangeSetEnd();
}

/// <summary>
/// A class to contain data that is to be used as a data source. This is akin to a view model
/// that will be used to populate a view.
/// </summary>
private class TestInfo
{
public string samplename;
}

オブジェクトに以下を配置
○ Data Consumer Text
○ 今回作ったDataSource

private TestInfo _dataSourceObject = new TestInfo();
/// <summary>
/// IDataSourceProvider method used to provide the correct
/// data source, which in this case is the DataSourceReflection instance with
/// the specified _dataSourceObject attached to it to provide the actual
/// data using reflection.
/// </summary>
public override IDataSource AllocateDataSource()
{
return new DataSourceReflection(_dataSourceObject);
}

}

2022/11/16

Copyright © 2022 Takahiro Miyaura

19

20.

デモ 置き換えるところは {{ samplename }}で! 子のオブジェクトとして。。。 ○ TextMesh Proなどを置く 2022/11/16 Copyright © 2022 Takahiro Miyaura 20

21.

様々な動的データに対応 現状、標準でいろいろ機能がある。 ○Audio CLip ○URLからImageやテクスチャーに張り付ける ○Material ○Sprite ○Text ○Theme(テーマ切替用) 2022/11/16 Copyright © 2022 Takahiro Miyaura 21

22.

本日の内容 ○ Mixed Reality Toolkit 3のData Binding調べる ○動的なデータ置換えが行える ○動的データに合わせてオブジェクト生成する機能もある ○見た目をボタン1つで変えるThemingの機能も 正式にリリースされるのが楽しみ! 2022/11/16 Copyright © 2022 Takahiro Miyaura 22

23.

大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ 2022/11/16