MRが楽しい

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

MRTK v2のドキュメントを少しずつ読み解くBoundary Systemの概要

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

MRTKv2のGuidesドキュメント

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

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

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

Boundary System

Boundary System は混合現実アプリケーションで仮想現実の境界コンポーネントを視覚化するためのサポートを提供します。
境界線はユーザーがVRヘッドセットを装着したまま安全に移動できる領域を定義します。
これはユーザーがVRヘッドセットを着用しているときに見えない障害物を回避するのに役立つ複合現実感の重要な要素です。

多くのバーチャルリアリティプラットフォームは自動で境界線の表示を提供します。
例えば、ユーザーまたはコントローラーが境界に近づくと、仮想世界に白いアウトラインが重ねられます。
Mixed Reality Toolkit の境界システムは、この機能を拡張して、ユーザーに追加情報を提供するために使用できる追跡エリアの概要、フロアプレーン、およびその他の機能を表示できるようにします。

入門

境界のサポートを追加するには Mixed Reality Toolkit の2つのコンポーネントが必要です。
Boundary System と境界を持つ仮想現実プラットフォームです。

1.Boundary System を有効にする
2.境界の視覚化を構成する
3.構成された境界を使用して、VRプラットフォームを構築してデプロイします
f:id:bluebirdofoz:20200205092247j:plain

Boundary System を有効にする

Boundary System は MixedRealityToolkitオブジェクト(または別のサービスレジストラコンポーネント)によって管理されます。

次の手順は MixedRealityToolkitオブジェクトの使用を前提としています。
他のサービスレジストラで必要な手順は異なる場合があります。

1.シーン階層で MixedRealityToolkit オブジェクトを選択します。
f:id:bluebirdofoz:20200205092259j:plain

2.Inspector パネルを開き Boundary System セクションに移動し、[Enable]をチェックします
f:id:bluebirdofoz:20200205092308j:plain

3.Boundary System の実装を選択します。MRTK が提供するデフォルトのクラス実装は MixedRealityBoundarySystem です。
f:id:bluebirdofoz:20200205092318j:plain

全ての Boundary System は IMixedRealityBoundarySystem を実装しています。

境界可視化の構成

Boundary System は構成プロファイルを使用して構成を変更します。
境界コンポーネントを指定して外観を設定します。
f:id:bluebirdofoz:20200205092328j:plain

デフォルトプロファイル(DefaultMixedRealityBoundaryVisualizationProfile)は、フロアプレーン、プレイエリア、追跡エリアを表示するように事前に設定された Boundary System を持ちます。

ビルドとデプロイ

目的の視覚化オプションを使用して Boundary System を構成したら、プロジェクトをビルドしてターゲットプラットフォームにデプロイできます。

Unity のプレイモードでは境界をエディター内で視覚化できます。
この機能により、ビルドとデプロイのステップを必要とせずに迅速な開発とテストが可能になります。
ビルドおよびデプロイされたバージョンのアプリケーションを使用して、最終テストを必ず行ってください。

コードを介して境界システムにアクセスする

Boundary System を有効にすると、CoreServices のヘルパークラスを介して Boundary System にアクセスできます。
参照を使用して境界パラメータを動的に変更し、システムで管理されている関連する GameObject にアクセスできます。

// Hide Boundary Walls at runtime
// 実行時に壁の境界を隠す
CoreServices.BoundarySystem.ShowBoundaryWalls = false;

// Get Unity GameObject for the floor visualization in scene
// 床の視覚化のためにUnity GameObjectを取得する
GameObject floorVisual = CoreServices.BoundarySystem.GetFloorVisualization();

f:id:bluebirdofoz:20200205092340j:plain