CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

【HoloLens】Spatial Mappingのメッシュを動かさずに、キーボード操作をする方法

HoloLensのアプリケーション開発手段として、従来のHoloTool Kitに加えて、MR Design Labというプロジェクトがあります。これは、一部HoloToolKitのSDKを含みつつも、ユーザー操作機能が拡張されています。Unityで使う基本的な準備方法は下記にまとめたので、よろしければご参照ください。

【HoloLens】MR Design Lab Unity概要とgitを使わない構築手順 - CrossRoad

さて、せっかくなので、MR Design Labを色々見ているところ、とある事情でCGモデルをSpatila Mappingした実空間上で動かすことになりました。最終的にキーボード操作で動くようになったのですが、途中過程で少し詰まったので、参考までに整理しました。

以下の環境で動作を確認しています。

  • Windows 10 Pro Creator Update
  • Unity 5.6.2f1
  • MR Design Lab v0.1.2-Unity-5.6

1. MR Design Labをそのまま使ってキーボード操作を入れた結果

HoloLensのメッシュでステージを使って、乗り物のCGをラジコン操作を試そうとしました。CGモデルをキーボードから動かせるようにスクリプトを書いて実際に動かしてみると、このようになりました。

少し見辛いですが、キーボード操作によってSpatial Mappingのメッシュが動いています。いうまでもなく、本来はCGモデルを動かすのが目的ですので、これでは意図と異なります。そこで、今回はキーボード操作でこうならない方法を解説します。

2 変更方法

他にも方法があるかもしれませんが、簡単なのは下記のスクリプトを変更することです。


gistfe5ed2a4f262de4e76d6f60626a3a64c

配置場所は、Assets/MRDesignLab/HUX/Scripts/Utility/ManualCameraControl.cs です。このGetCameraControlTranslation()によって、HoloLensのカメラを動かすようにしているので、キー入力の箇所(上のgistでは6,7行目)をコメントアウトします。これを修正することによって、オブジェクトをキーボードで動かすことができました。

参考までに、整形できてませんがオブジェクトを動かすコードです。


gist7091d111d0af449c8946102a70177e23

Audio関係のコードは、操作をしているときだけ音が鳴るためのものです。このコードを適当な空のGameObjectに貼り付けます。Sceneには操作したいCGモデルを配置し、AudioSourceとRigidBodyをつけておきます。

ちなみに、ゲームパッドが手持ちにないので動作未確認ですが、この記事によるとXbox One Controllerでは動くようです。

【12/01動画追加】【HoloLens開発】ユニティちゃんとHoloLensで戯れる - ゲームパッド編 - ~ BRILLIANTSERVICE TECHNICAL BLOG

3. 動作確認結果

こうなります。遠近感が少しおかしいですが、実際は床の上にピンク色のカプセルが転がっていて、キーボード操作で動いています。

これを使うと、現実の中でラジコン操作のようなことができそうですね。