2.6K Views
February 21, 24
スライド概要
【大阪-オンライン開催】XRミーティング 2024/02/21【AR/CR/MR/SR/VR】(https://osaka-driven-dev.connpass.com/event/309284/)登壇資料。
Microsoft Meshが先月GAされたのでらためて概要、カスタム環境(オリジナルの空間を作る機能)での実装方法(Visual Scripting/Cloud Scripting)の紹介、Cloud Scriptingで利用してカスタム環境内からAzure Digital Twinsへ情報を連携するための検証について。
ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
Microsoft Meshと Azure Digital Twinsを連携させてみた。 2024/02 XRミーティング @takabrz1 Takahiro Miyaura
Microsoft MVP for Mixed Reality 2018-2024 XRは趣味です 宮浦 恭弘 (Miyaura Takahiro) ◼ 大阪駆動開発(とHolomagicians)コミュニティに生息 ◼ HoloLens日本販売してからxR系技術に取組む ◼最近は ✓ ✓ Mixed Reality Toolkit v3.0.0(GAされた!) Snapdragon Spacesとか戯れている。 ◼ 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura https://zenn.dev/miyaura @takabrz1 ※よかったらこれを機にお知り合いになってください
いつかあれがやりたいのでその前編 今日のお題 ○(再)Microsoft Mesh関連の情報 ○Microsoft MeshのCustom Immersive Spacesについて ○Mesh Visual ScriptingとMesh Cloud Scripting ○あれがやりたい ○Custom Immersive Spacesでの事象をAzure Digital Twinsに反映 ○今日はここまでできている! 2024/2/21 Copyright © 2023 Takahiro Miyaura 3
(再)Microsoft Mesh関連の情報 @takabrz1 Takahiro Miyaura
Microsoft Meshとは Microsoft Meshは2024/01/24 にGA https://learn.microsoft.com/ja-jp/mesh/overview?wt.mc_id=WDIT-MVP-5003104 We are re-imagining the way employees come together with Microsoft Mesh, a new three-dimensional (3D) immersive experience. Microsoft Mesh is not merely another innovation, but a solution that enables your distributed workforce to connect like never before in a 3D immersive space, helping virtual meetings and events feel more like face-to-face connections. サイトからの引用 機械翻訳 私たちは、新しい3D没入型体験であるMicrosoft Meshによって、 社員が集う方法を再構築します。Microsoft Meshは、単なるイノ ベーションではなく、分散した従業員が3D没入型スペースでか つてないほどつながることを可能にするソリューションです。 2024/2/21 Copyright © 2023 Takahiro Miyaura 5
Microsoft Meshとは コンセプトを実現するために提供される3D空間の活用手段 ○Immersive Spacesの活用(Teams) ○Teams会議の中で3D没入空間での会議体験を可能にする ○カスタマイズ(Microsoft Mesh) ○既存環境のカスタマイズ https://learn.microsoft.com/en-us/mesh/overview#customize-a-ready-to-use-environment ?wt.mc_id=WDIT-MVP-5003104 ○既にある空間に装飾(動画、画像を配置)することで環境を整える ○カスタム環境の開発 https://learn.microsoft.com/en-us/mesh/overview#develop-a-custom-environment ?wt.mc_id=WDIT-MVP-5003104 ○3D空間すべてをカスタム環境として開発する 参考 Meshでは3D空間そのものを環境(Environment)と定義 2024/2/21 Copyright © 2023 Takahiro Miyaura 6
Microsoft MeshとTeams PCとMeta Questの参加は組合せがある ○Teams ○Immersive Spacesでプリセットの3D空間で会議ができる ○Microsoft Mesh App(PC/Meta Quest) ○Meshポータル/アプリで設定したイベントを体験できる ○QuestについてはVR空間でMesh アバターで交流可 Mesh App Meta Quest Teams – Immersive Spaces PC Mesh App PC Mesh App Meta Quest 2024/2/21 〇 〇 〇 Mesh App PC × 〇 〇 Copyright © 2023 Takahiro Miyaura Teams – Immersive Spaces PC 〇 × 〇 7
Teamsの予定、Meshのイベント両方セットすると Mesh App(PC)で見るとMeshのイベントだけ表示 2024/2/21 Copyright © 2023 Takahiro Miyaura 8
Teamsの予定、Meshのイベント両方セットすると Teamsで見ると予定は両方表示される MeshのイベントはMesh Appからしか起動できない 2024/2/21 Copyright © 2023 Takahiro Miyaura 9
Teamsの予定、Meshのイベント両方セットすると Mesh App(Meta Quest)で見ると両方表示される Teamsの会議、Mesh イベント両方参加できる Teams会議の方に入るといきなりImmersive Spacesになる 2024/2/21 Copyright © 2023 Takahiro Miyaura 10
Microsoft Meshに必要なライセンス Microsoft Entra(以前の言い方だとAzure AD)下で利用 https://learn.microsoft.com/en-us/mesh/setup/content/preparing-your-organization?wt.mc_id=WDIT-MVP-5003104 ✓ M365関連のライセンスが必要 ✓ ✓ ✓ ✓ ✓ ✓ Teams Essentials Microsoft 365 Business Basic Microsoft 365 Business Standard Microsoft 365 Business Premium Microsoft 365 E3/E5 Office 365 E1/E3/E5 ✓ Meshのクライアントアプリ(PC/Android=Quest)の利用には上記に加えて ✓ Teams Premium(利用アカウント分) ✓ Azureアカウントとサブスクリプションも必要 ✓ 2024/2/21 カスタム環境を使う場合(必要に応じて) Copyright © 2023 Takahiro Miyaura つまり 現時点では組織アカウントで運用が必要 11
Microsoft Meshの Custom Immersive Spacesについて Unityで開発できるよ @takabrz1 Takahiro Miyaura
Microsoft Meshの Custom Immersive Spacesについて Unity上で構築しMesh ポータルにアップロードする ノードをつなぐ形で開発していくスタイル 2024/2/21 Copyright © 2023 Takahiro Miyaura 13
カスタマイズ環境の現在の要求環境 あれ使います https://learn.microsoft.com/en-us/mesh/develop/getting-started/prerequisites?wt.mc_id=WDIT-MVP-5003104 ○Unity 2022.3.7f1 ○URP(3D) ○開発スキル(Visual Scriptingを使って開発) ○Mesh Toolkit ○Meshワールドを構築するために便利なライブラリ群 ○開発そのものには不要だがMeshの環境として使うためには必要 ○M365関連のライセンス 2024/2/21 Copyright © 2023 Takahiro Miyaura 14
カスタマイズ環境の開発しようの紹介 最初はチュートリアルMesh101がお勧め ○やり方を学びたいならチュートリアル「Mesh101」 https://learn.microsoft.com/en-us/mesh/develop/getting-started/mesh-101-tutorial/mesh-101-01-overview-and-setup?wt.mc_id=WDIT-MVP-5003104 ○ボタンの扱いやテレポート、オブジェクト操作の実装方法 ○Meshワールドへの登録~実際に使うまでの手順 ○サンプルもある https://learn.microsoft.com/en-us/mesh/develop/getting-started/samples/samples-overview?wt.mc_id=WDIT-MVP-5003104 ○いくつかの機能や、世界観を表す環境のサンプル(Mesh101含) ○空プロジェクトの作り方もあるよ https://learn.microsoft.com/en-us/mesh/develop/build-your-basic-environment/create-a-new-project-or-update?wt.mc_id=WDIT-MVP-5003104 ○Mesh Toolkitの導入 2024/2/21 Copyright © 2023 Takahiro Miyaura 15
カスタマイズ環境の開発しようの紹介 Githubでサンプルは公開 ○https://github.com/microsoft/Mesh-Toolkit-Unity 2024/2/21 Copyright © 2023 Takahiro Miyaura 16
Mesh Visual ScriptingとMesh Cloud Scripting 2024/2/21 Copyright © 2023 Takahiro Miyaura 17
Mesh Visual ScriptingとMesh Cloud Scripting Meshのカスタム環境を作るための実装方法は大きく2つ Visual Scripting ○ ノードをつないで実装 ○ Mesh Toolkitで部品が提供 ○ 他の参加者と状態の共有/非共有が設定可 2024/2/21 ○ ○ ○ ○ Cloud Scripting C#(.NET 6)で開発できる Azure上でMeshポータルとは別管理 他のサービスとも連携が可能 オブジェクトや状態は自動的に共有 Copyright © 2023 Takahiro Miyaura 18
簡単に仕組みを説明 環境 ◼ Mesh Toolkitの環境設定でCloud Scriptingを使う設定を行う ◼ Meshポータルの発行時に指定されたAzureのリソースグループ内に環境が構築される 2024/2/21 Copyright © 2023 Takahiro Miyaura 19
簡単に仕組みを説明 環境 インフラについての公式ドキュメント https://learn.microsoft.com/ja-jp/mesh/develop/script-your-scene-logic/cloud-scripting/cloud-scripting-setup-infrastructure?wt.mc_id=WDIT-MVP-5003104 ◼ Application Insights ◼ App Service ◼ Action Group ◼ App Service プラン (注:Premium v2 P2V2(月額22,000円超)) ◼ Log Analyticsワークスペース ◼ ストレージアカウント ◼ 仮想ネットワーク Azureポータルから変更不要 (ただし)App Serviceの料金は検証用ならスペック 下げてもいいと思います。 2024/2/21 Copyright © 2023 Takahiro Miyaura 20
簡単に仕組みを説明 実装について Unity上で実装するがちょっと特殊です。 ◼ ルート要素にMesh Cloud Scriptingコンポーネントを設定 Cloud Scriptingでの実装時、Unityの機能はそのまま使えない (具体的にはコンポーネントの情報を直接はとれない) 2024/2/21 Copyright © 2023 Takahiro Miyaura 21
簡単に仕組みを説明 Cloud ScriptingとUnityのHierarchy/コンポーネントの関係 Cloud ScriptingはNodeで管理する 階層構造をあわせて。。。 ○ ノード部品が提供 ○ Cloud Scripting上はNodeクラスから情報を取る ○ Unityオブジェクトから情報が取れない(場合も) 対応するノードをCloud Scripting内に配 置しても消失はせずに複製される 2024/2/21 Copyright © 2023 Takahiro Miyaura 22
コーディング例
Cubeをクリックすると水平方向に回転する実装
public Task StartAsync(CancellationToken token){
// Cloud Scriptingの中からCubeのオブジェクトを検索
var transform = _app.Scene.FindFirstChild<TransformNode>();
// Cube内に含まれるInteractableNodeを検索
var sensor = transform.FindFirstChild<InteractableNode>();
// InteractableNodeがクリックされたときのイベントに処理を実装
sensor.Selected += (_, _) => {
// Update the angle on each click
_angle += MathF.PI / 8;
transform.Rotation = new Rotation { X = 1, Y = 0, Z = 0, Angle = _angle };
};
return Task.CompletedTask;
}
2024/2/21
Copyright © 2023 Takahiro Miyaura
23
あれやりたい! 2024/2/21 Copyright © 2023 Takahiro Miyaura 24
あれやりたい! Cloud Scriptingでカスタム環境をAzure Digital Twinsに写像 カスタム環境内の状況を Azure Digital Twinsに同期 SignalRなどで同報通信す れば。。。 面白いかも? 2024/2/21 Copyright © 2023 Takahiro Miyaura 25
【基礎編】 Azure Digital Twins(ADT)について 現実環境のデジタルモデルに基づいたデジタルツインを構築できるPaaS ◼ Json形式のデジタルモデル管理 ✓ デジタルモデルをDigital Twins Definition Language(DTDL)で定義 ✓ ✓ ✓ ◼ 現実環境をデジタル環境に定義する言語 Json形式で定義 PropertyとTelemetryがある モデルに対するインスタンス(=デジタルツイン)を管理 ✓ クエリ言語によるインスタンスの状態更新 https://docs.microsoft.com/ja-jp/azure/digital-twins/overview ◼ API,SDKによる情報の入出力 現実環境のモデルをどう構築するかがキモ 2022/02/03 Copyright © 2022 Takahiro Miyaura 26
こんなアーキテクチャで試してます。 定番の構成 Azure Functions SignalR HoloLens Mesh Custom World Cloud Scriptingで空間内の 情報をAzure Digital Twinsで連 携させる。 Azure Functions 2024/2/21 Azure Digital Twins Event Grid Copyright © 2023 Takahiro Miyaura 27
失敗するかもデモ 2024/2/21 Copyright © 2023 Takahiro Miyaura 28
資料化はまだですが。。。 スクラップで情報だけ集めてます。 https://zenn.dev/miyaura/scraps/94f243e3be40a6 以下の内容を今は残しています。 ○今日話したMesh関連のリンク ○環境構築 ○チュートリアルMesh101やってみた ○Azure Digital Twins構築 ○Azure Function構築 2024/2/21 Copyright © 2023 Takahiro Miyaura 29
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ