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. 動作確認結果
こうなります。遠近感が少しおかしいですが、実際は床の上にピンク色のカプセルが転がっていて、キーボード操作で動いています。
これを使うと、現実の中でラジコン操作のようなことができそうですね。