MRが楽しい

MRやVRについて学習したことを書き残す

hololensのタップ操作

昨日は一足先に音声認識を行いましたが、hololensではタップ操作も可能です。
という訳で、下記ブログで紹介されているチュートリアルの続きです。
・HOLOLENS ホログラムを動かす GESTURES
 https://azure-recipe.kc-cloud.jp/2016/12/hololens-tutorial3/

修正を行い、アプリを実行すると、下記のようなタップ操作が可能となります。
f:id:bluebirdofoz:20170411235054j:plain
ボールに注視して空中でタップ操作を行うと…
f:id:bluebirdofoz:20170411235102j:plain
ボールが落ちました。

さて、今回のプロジェクトで重要なのは以下のコード。

・UnityEngine.VRで提供されるジェスチャーの監視クラス

GestureRecognizer recognizer;

・タップイベントが発生したとき、注目中のオブジェクトのOnSelect関数を実行するよう設定します。

recognizer.TappedEvent += (source, tapCount, ray) =>
{
    // Send an OnSelect message to the focused object and its ancestors.
    if (FocusedObject != null)
    {
        FocusedObject.SendMessageUpwards("OnSelect");
    }
};

チュートリアル#2で用いたポインタ方法を用いて、今度は注目中のオブジェクトを取得しています。

var headPosition = Camera.main.transform.position;
var gazeDirection = Camera.main.transform.forward;

RaycastHit hitInfo;
if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
{
    // If the raycast hit a hologram, use that as the focused object.
    FocusedObject = hitInfo.collider.gameObject;
}

・ボールに重力属性を与え、床に落ちる動作が起こるようにします

rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;


今回はGestureRecognizerを利用しています。
UnityEngine.VRというネームスペースからも分かる通り、これはVR向けに提供されるインタフェースですね。
だんだんとMRらしくなってきました。