こんにちは、ナレコム前川です!
今回は、MixedRealityToolkit のGazeRuler をご紹介します。
MixedRealityToolkit の導入方法について コチラ で説明しているので、導入をしていない方は参照してください。
GazeRuler
GazeRulerとは、空間の距離や面積を測定する際に使用できるプロジェクトです。
これは、視線と空間マッピングに基づいています。
それでは、実際に GazeRuler を体験してみましょう。
Build Settings が開いている場合は閉じてください。
まず、[Project] パネルから [HoloToolkit-Examples] 内にある [GazeRuler] を選択してください。
選択したら、[Scenes] -> [GazeRulerExample] シーンの順に選択し、開いてください。
次に、[Hierarchy] パネルから [Measure Manager] を展開し、選択してください。
[Measure Manager] は、測定に関する全ての管理を行います。
スクリプトは、[Project] パネルの [Assets] -> [HoloToolkit-Examples] -> [GazeRuler] -> [Scripts]にある
[Measure Manager] を使用しています。
また、線やポリゴンの管理を行うスクリプトも 同じ [Scripts] フォルダ内にあるので確認してください。
[Inspector] パネルで [Measure Manager] を確認してください。
ここでのプレハブについて以下で説明します。
- [Mode] では、線や円、多角形など測定に用いるものを設定しています。
- [Line Prefab] は、[HoloToolkit-Examples] -> [GazeRuler] -> [Prefab] 内からプレハブを持ってきています。
これは、測定を行う際に表示される直線のプレハブです。 - [Point Prefab] は、上記の [Prefab] フォルダ内から持ってきています。
これは、測定の際の直線の両端に表示される点のプレハブです。 - [Mode Tip Object] では、[Hierarchy] パネル内の [ModeTip] を持ってきています。
このオブジェクトによって、直線の測定と面積の測定の切り替えができます。 - [Text Prefab] では、”Line” と ”Point” 同様の [Prefab] フォルダからプレハブを持ってきています。
これは、アプリケーションを立ち上げたときやモードを切り替えた時に文字を表示させるプレハブです。
続いて、[Hierarchy] パネルで [SpatialMapping] を選択してください。
[Inspector] パネルで複数のスクリプトがあることが確認できると思います。
[SpatialMapping] では、周囲の環境の認識を行います。
スクリプトについて説明していきます。
① [Spatial Mapping Observer] スクリプトでは、
環境スキャンの役割を行う SurfaceObserver の管理を行っています。
このスクリプトは、[Assets] -> [HoloToolkit] -> [SpatialMapping] -> [Scripts] 内にあります。
② [Spatial Mapping Manager] スクリプトでは、
環境スキャンの役割を行う SurfaceObserver や格納された SpatialMapping の Mesh データを使うことを許可します。
また、Mesh データ をアプリケーションが読み込む際には、SurfaceObserver を停止させたり、
リアルタイムで SpatialMapping を更新したりします。
このスクリプトも上記の [Scripts] フォルダ内にあります。
③ [Object Surface Observer] スクリプトでは、
周囲の環境をスキャンし、物体を読み込みます。
このスクリプトについても、同様に上記の [Scripts] フォルダ内にあります。
次に、[Hierarchy] パネルにある [InputManager] は、
[Project] パネルの [Assets] -> [HoloToolkit] -> [Input] -> [Prefab]にある
[InputManager] プレハブを使用しています。
前回の ColorPicker の記事で詳しく説明していますが、
[InputManager] では、視線やジェスチャーによる入力の管理を行っています。
続いて、[InputManager] の下にある [Input] を展開して、選択してください。
[Input] の配下に [CursorWithFeedback] があるのを確認できると思います。
この [CursorWithFeedback] は、[HoloToolkit] -> [Input] -> [Prefabs] -> [Cursor] 内にあります。
これは、ユーザーの視線やジェスチャーをフィードバックするカーソルです。
最後に、[Hierarchy] パネルにある [HoloLensCamera] を展開して、選択してください。
このオブジェクトは、[Project] パネルの [HoloToolkit] -> [Input] -> [Prefabs] 内にあるプレハブを持ってきてあります。
アプリケーションをエミュレーターや Unity 上で実行する際、子オブジェクトである [GazeControls] が
マウスやキーボード、ジョイスティックなどから視線を操作できるようにしています。
それでは、実行してみましょう。
配置とビルド
次に配置とビルドを行います。
配置とビルドに関しては、HOLOLENS 5つのビルド方法を参照してください。
ビルドをする際に、GazeRuler シーンを追加し、GazeRuler シーンのみチェックしてください。
※Unity から Build Settings を行う際に、Player Settings の [Other Settings] や [Public Settings] で
必要項目がチェックされているか確認してください。
[Other Settings] では、きちんと [Virtual Reality Supported] にチェックがしてあるか確認してください。
[Public Settings] では、
・InternetClient
・InternetClientServer
・Microphone
・SpatialPerception
にチェックが入っていることを確認してください。
実行後、長さを測定したい物体の両端をタップすると、物体の長さが表示されます。
また、面積を測りたい場合には、「Chage mode」と発音してからタップで点を繋ぎ、
「Close」と発音すると面積が表示されます。
「Change mode」では、長さと面積で測るものを切り替えることができます。
測定したものを消したい場合は「Remove」と発音してください。
全て削除したい場合は、「Remove all」と発音すると、
現在のモードに対応するものは全て削除されます。
また、面積を測るときに面積の数値表示が裏表逆になってしまいました。。
これは、時計回りにタップしていくと逆にならないみたいです!
実行動画でも実際に試してみてるのでぜひ見てください。
実行動画はこちらです。
これで、GazeRuler については以上です。
お疲れ様でした。
他のサンプルはこちら↓↓↓