2017年1月22日日曜日

HoloLensの開発効率化 Unity上でAir Tapを確認する方法

HoloLensの開発効率化 Unity上でAir Tapを確認する方法
お疲れ様です。ZuQ9->Nnです。

HoloLensの開発をするうえで、いくつか不便な点があります。
その一つがAir Tap

Holographic Academy - Microsoft Developers
Holograms 101E
ではUnityEngine.VR.WSA.Input GestureRecognizer を利用する方法が紹介されています。

しかし、これは、Unity上で反応せず、
いちいちbuildしてHoloLens Emulatorを起動して確認しなけらばなりません。
HoloLens Emulatorはかなり起動が遅く、確認、デバックが、かなり辛いです。
そこでなるべくUnity上で確認したい欲求がでてきます。

Microsoftが提供してくれているHoloToolkit-Unityには便利なアセットが多く存在します。
UnityにHoloToolkit-Unityをコピーし、プロジェクトの設定を行います。

UnityのProjectから
HoloToolkit > Input > Prefabs
InputManagerのAssetをHierarchyに追加

これでUnityを実行してみると、薄っすら指のアイコンが確認できます。

Shiftキーを押すと反転し色がつくのでわかりやすくなります。
Shiftキーを押したままマウスのクリックを行うと
指のアイコンが動きTapされていることがわかりやすくなります。
調べたところ、この指のアイコンはUnity Editorでしか表示されないようになっていて
HoloLens Emulatorでは表示されません。

またHoloLens EmulatorではShiftキーを押したままマウスのクリックでAir Tapは反応せず
Air Tapは、マウスの右クリックになりますのでご注意ください。

コードでAir Tapをハンドリングするには
Input > Tests > ScriptsのInputHandleCallbackFX.csが参考になります。
using UnityEngine;
namespace HoloToolkit.Unity.InputModule.Tests
{
   public class InputHandleCallbackFX : MonoBehaviour, IInputClickHandler
   {
       [SerializeField] private ParticleSystem particles = null;
       private void Start()
      {
           InputManager.Instance.PushFallbackInputHandler(gameObject);
      }

      public void OnInputClicked(InputClickedEventData eventData)
      {
           particles.transform.position = GazeManager.Instance.HitPosition; particles.Emit(60);
       }
   }
}
こちらは、Gazeの位置でAir Tapすると、パーティクルが表示されるようになっています。
札束のやつも基本これです。HoloToolkit-Unityは、結構頻繁にアップデートをされているので
今後、このやり方ではできなくなるかもしれませんが、
今のところ積極的に使っても大丈夫だと思います。



0 件のコメント:

コメントを投稿