夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MixedRealityToolKit v2 Examplesを触ってみる BoundingBoxExamples

MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。

 Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。

 今回は UX/BoundingBox/BoundingBoxExamplesを見ていきます。

f:id:Holomoto-Sumire:20191108083030j:plain

〇デモシーンの概要 

  このデモシーンでは様々なタイプのBoundingBoxとその見え方を見ることができます。

 MixedRealityデバイスにおけるBoundingBoxはアプリ内のオブジェクトの移動、方向、大きさをユーザー自身が変更する際に使用し、直感的に操作するためのUIです。

〇シーンの解説

 シーンには左から順に以下の7種類のコップオブジェクトが存在します。

・Activate by Hand Proximity and Pointer (CoffeeCup1) 

・Activate by Hand Proximity and Pointer, Far Scale = 1   (CoffeeCup2)

・Activate on Start, Far Scale = 1 (CoffeeCup3)

・Activate by On Start No handle prefabs assigned (CoffeeCup4)

・Activate by Hand Proximity and Pointer No handle prefabs assigned(CoffeeCup5)

・Activate by On Start No handle prefabs assigned (CoffeeCup6)

・Activate Manually No handle prefabs assigned(CoffeeCup7)

7つは同じCoffeeCupという3Dモデルのオブジェクトで構成されていますが、それぞれBoundingBoxの表示方法に違いがあります 。

〇BoundingBox

 MRTKv2におけるBoundingBoxはBoundingBoxを機能させたいオブジェクトの親にBoundingBox.csがあり、これによって機能しています。

 このシーンの場合「HoloLens 2 Style」などのテキストも含めてBoundingBoxの影響を受けるように親オブジェクトが設定されています。

f:id:Holomoto-Sumire:20191108090211j:plain

〇各BoundingBoxの違い

CoffeeCup1

 BondingBoxが表示されScaleやRotationのためのハンドルが表示されない

CoffeeCup2

 カーソルを当てたとき、もしくはGrabのときバーハンドルが表示される。

CoffeeCup3

 常にバーハンドルが表示されている。

CoffeeCup4

 カーソルもしくはGrab時に操作する部分の球体ハンドルが表示される(HoloLens1stスタイル)

CoffeeCup5

 カーソルもしくはGrab時にすべての部分の球体ハンドルが表示される(HoloLens1stスタイル

CoffeeCup6

 常にすべての部分の球体ハンドルが表示されている。

CoffeeCup7

 常に下部にバーが表示されており、ボタンを選択することですべての部位の球体ハンドルが表示される。 また、オブジェクトを削除することもできる。

 

 このデモシーンではCoffeeCupを主に3タイプに分けることができます。

それぞれ詳しく見ていきます。

Type①CoffeeCup1 ,CoffeeCup2,CoffeeCup3

 MRTKv2で新しく導入されたHoloLens2用のBoundingBoxです。

 〇CoffeeCup1、CoffeeCup2との比較

  この2つのオブジェクトの違いはシーン実行時に表示されるハンドル(BoundingBoxの操作ハンドル)です。

f:id:Holomoto-Sumire:20191108090950j:plain

CoffeeCup1のBoundingBox

f:id:Holomoto-Sumire:20191108091047j:plain

CoffeeCup2のBoundingBox

 2つのオブジェクトのBoundingBox.csを見比べてみるとほぼすべて同じ設定ですが一か所だけ、ProximityのFar Scaleが違います。

 実行中にこの値を変化するとハンドルの大きさが変化しました。


BoundingBoxExamples CoffeeCup1,CoffeeCup2比較

 〇CoffeeCup1,2とCoffeeCup3の比較

 CoffeeCup3と1,2の違いは常にハンドルが表示されるか、手をかざしたときにのみ表示されるかの違いです。

 この設定はBoundingBox.csのBegavior内ActivationがActivate On Startにすることで実現します。

f:id:Holomoto-Sumire:20191108092207j:plain

Type②  CoffeeCup4 ,CoffeeCup5,CoffeeCup6


BoundingBoxExamples CoffeeCup4,5,6比較

 従来のMRTK(旧HoloToolKit)から含まれているHoloLens1stのスタイルタイプです。

 HoloLens 2のType①グループとの違いはBoundingBox.csのHandlesにアタッチされているMaterialとPrefabです。

 こちらのHoloLens 1stスタイルタイプではプレファブがアタッチされていません。

f:id:Holomoto-Sumire:20191108093101j:plain

HoloLens2スタイルのBoundingBox

f:id:Holomoto-Sumire:20191108093130j:plain

HoloLens 1stスタイルのBoundingBox

 これを見るにHoloLens 1st用のBoundingBoxを拡張してMRTKv2でプレファブを設定することでスタイルを変更できるようになっているようです。

 〇CoffeeCup4、CoffeeCup5との比較

 Cup5は常にハンドルが表示されているのに対して、Cup4ではカーソルを当てた場所のみハンドルが表示されます。

f:id:Holomoto-Sumire:20191108094519j:plain

CoffeeCup4のBoundingBox

f:id:Holomoto-Sumire:20191108094621j:plain

CoffeeCup5のBoundingBox

 BoundingBoxのBoxDisplay、WireframeにMaterialを設定することで行っています。
  CoffeeCup5ではここの設定がされていないため実行時にMaterialが自動的にアタッチされデフォルトではすべてのhandleが表示されるようになっています。

 〇CoffeeCup4,5、とCoffeeCup6との比較

 CoffeeCup6ではカーソルが当たった時だけではなく常にBoundingBoxが表示されています。

 CoffeeCup3同様BoundingBox.csのBegavior内ActivationがActivate On Startにすることで実現します。

Type③ CoffeeCup7

 従来のHoloLens 1stスタイルです。

f:id:Holomoto-Sumire:20191108100756j:plain

 AppBarというオブジェクトが設定されておりTargetBoundingBoxにCoffeeCup7のBoundingBoxが設定されており、これによってBarのボタンを押すことでBoundingBoxを機能させています。


BoundingBoxExamples CoffeeCup7

 

  BoundingBoxは3Dオブジェクトを配置調整するアプリケーションであればほとんどの場合使用する機能になります。

 MRTKの前のバージョンと比べMRTKv2ではBoundingBox.cs一つに機能がまとめられた印象を受けます。