HoloLens MixedRealityToolkit-Unity GazeRuler

GazeRulerとは、空間の距離や面積を測定する際に使用できるプロジェクトです。

これは、視線と空間マッピングに基づいています。

それでは、実際に GazeRuler を体験してみましょう。

Build Settings が開いている場合は閉じてください。

まず、[Project] パネルから [HoloToolkit-Examples] 内にある [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 については以上です。お疲れ様でした。

他のサンプルはこちら↓↓↓

この記事を書いた人

azure-recipe-user