本日はツールの調査枠です。
SceneUnderstandingに関して調査しています。
〇SceneUnderstandingとは?
SceneUnderstandingはMicrosoftによって提供されているMRTKの拡張ツールで、HoloLensによって取得する空間認識機能を拡張します。
次のGitリポジトリで公開されています。
旧MixedRealityToolkit(HoloToolkit)では[SpatialUnderstanding]と呼ばれる機能が提供されており、MRTKに同梱されていましたが、MRTKv2移行は2.51現在は別の機能として提供されています。
〇Spatial Mapping(SpatialAwareness)との違い
HoloLensの特徴として[SpatialAwareness(空間認識)]機能があります。
[SceneUnderstanging]も[Spatialmapping]もどちらもHoloLensデバイス自体のセンサーにアクセスしてAPI経由で情報を受けとりますが、二つには次のような違いがあります。
・[SpatialMapping]には検知エリアに制限がありますが、[SceneUnderstanding]には制限がありません。無制限で検出を行えます。
・SpatialMappingに比べ[SceneUnderstanding]は壁や床、オブジェクトを解析することができます。
前回まででNabMesh-Simpleシーンの機能の解析を行っています。
前回はMRTKをSceneUnderstandingのプロジェクトに導入しました。
〇SceneUnderstandingのInputをMRTKで代用する
今回はNavMesh-Simpleシーンで行っていたキーボードのインプットをHoloLensのVoiceInputに切り替えます。
①NavMesh-Simpleシーンのhierarchyウィンドウから[SceneUnderstandingMenu]を選択しinspectorウィンドウから[SampleInputManager]コンポーネントをディアクティブにします。
[SampleInputManager]コンポーネントはSceneUnderstandingの入力を受け持つコンポーネントです。HoloLens実機では機能しないため残しておいても問題はないとは思いますが、今回はわかりやすくするためにディアクティブにします。
次にMRTKのInputに置き換えます。
②hierarchyウィンドウから[MixedRealityToolkit]オブジェクトを開き、inspectorウィンドウから構成を[DefaultHoloLens2ConfigurationProfile]に変更し[Clone]を押して複製します。
③サイドタブから[Input]を開き構成を[Clone]します。
④[Speech]タブを開き[Clone]を行います。
⑤[+Add a New Speech Command]をクリックして新しいコマンドを作成します。
⑥作成したコマンドの[KeyWord]に[Go There]を入力し[KeyCord]には[G]を指定します。
これでUnityEditor内で実行時にGキーを押すことで[Go There]と発話したイベントを発火することができます。
次に発火するイベントを作成します。
⑦hierarchyウィンドウから[SceneUnderstandingMenu]オブジェクトを選択しinspectorウィンドウから[SpeechInputHandler]コンポーネントを加えます。
[SpeechInputHandler]コンポーネントはMRTKで提供されているコンポーネントで音声コマンドに対してのイベントを指定、実行できます。
⑧[SpeechInputHandler]コンポーネントの[Keyword]に[Go There]を入力します。
これはこの[SpeechInpuHandler]コンポーネントがどの音声コマンドに対応して発火するかを設定します。
⑨[SpeechInpuHandler]コンポーネントの[response]を次のように設定します。
・イベントターゲットにhierarchyウィンドウから[NavMesh]オブジェクトを指定します。
・イベントには[SceneUnderstandingPathFindingController.MoveAgent()]を指定します。
〇SceneUnderStandingの機能を理解する
SceneUnderstandingの機能はhierarchyウィンドウから[SceneUnderstandingManager]オブジェクトの[SceneUnderstandingManager]コンポーネントによって処理が開始されます。
今回実機で実行中にSceneUnderstandningの機能を実行するために[SceneUnderstandingManager]コンポーネントをディアクティブに変更します。
hierarchyウィンドウに[PressableButtonHoloLens2]を配置してpressイベントに[SceneUnderstandingManager]コンポーネントをアクティブにするように設定します。
実機にデプロイします。
〇HoloLens実機で動かす。
今回ナビメッシュの機能は試すことができませんでした。
SceneUnderstandingで生成された空間メッシュにコライダーが貼られることがなく、もう少し調査が必要そうですが、MRTKとSceneUnderstandingを併用して実機で動かすことができました。