LoginSignup
2
3

More than 5 years have passed since last update.

HoloLensアプリ開発手順 備忘録(カーソル、エアタップ)

Last updated at Posted at 2019-05-15

はじめに

すでに沢山の方が開発手順の記事を記載してますが、個人の知識整理として投稿します。
※2019/05/15時点の記事になります。

1.Unityでプロジェクトを作成する
2.プロジェクトにMRTKをインポートし、Mixed Realityプロジェクト用の設定にする
3.Input Managerを追加する
4.カーソルを追加する
5.エアタップを認識させる

環境

Unity:2017.4.27f1 Personal(64bit)
MRTK:HoloToolkit-Unity-2017.4.3.0-Refresh.unitypackage

MRTKをインポートし、Mixed Realityプロジェクト用の設定にする

Unityで3Dプロジェクトを作成したら、メニューバーから「Assets」→「Import Package」→「Custom Package...」を選択する。
3.png
ファイル選択ダイアログが表示されるので、ダウンロードしたMRTKのパッケージを選択し、インポートする。
4.png
インポートするとメニューバーに「Mixed Reality Toolkit」が追加されるので、「Mixed Reality Toolkit」→「Configure」→「Apply Mixed Reality Project Settings」を選択する。これを選ぶとMixed Reality用のセットアップを行ってくれる。
5.png

Input Managerを追加する

Input ManagerはHoloLensの入力系を制御するオブジェクトとのことで、ジェスチャの認識やカーソル、視線などを制御できるようになるとのこと。

1.ProjectウインドウのHoloToolkitにあるInputManagerオブジェクトをHierarchyウインドウに追加する。
 InputManagerオブジェクトはHoloToolkit/Input/Prefabs/の配下にある。

カーソルを追加する

視界の中心にカーソルを表示する。
PCで言うところのマウスポインタの役割を果たす。

1.ProjectウインドウのHoloToolkitにあるCursorオブジェクトをHierarchyウインドウに追加する。
 CursorオブジェクトはHoloToolkit/Input/Prefabs/Cursor/の配下にある。

2.HierarchyウインドウでInputManagerを選択し、InspectorウインドウにInputManagerの情報が表示されている状態にする。

3.HierarchyウインドウのCursorオブジェクトを、Inspectorウインドウの「Simple SinglePointer Selector(Script)」内の「Cursor」にドラッグアンドドロップする。
6.png
これでカーソルが表示される。

エアタップでオブジェクトに干渉する

オブジェクトに対しエアタップジェスチャによる干渉する。

1.エアタップで干渉したいオブジェクトに対し、C#スクリプトを追加する。
 Hierarchyウインドウで干渉したいオブジェクトを選択し、Inspectorウインドウの下にあるAdd Componentを押下。
 new scriptを選択してC#スクリプトを追加する。

2.C#スクリプトでゲームオブジェクトにIInputClickHandlerインターフェースを追加する。
 手順2で追加したC#スクリプトを開き、オブジェクトにIInputClickHandlerインターフェースを追加する。

using UnityEngine;
using HoloToolkit.Unity.InputModule;    // InputModuleをusingで追加しておく

public class GestureTest : MonoBehaviour, IInputClickHandler {  // IInputClickHandlerを追加

    // OnInputClickedイベントを追加する(これがエアタップされた時にイベントハンドラとして呼ばれる)
    public void OnInputClicked(InputClickedEventData eventData)
    {
        // ここにエアタップされた時の処理を記述(以下はオブジェクトのカラーを赤に変えている)
        GetComponent<Renderer>().material.color = Color.red;
    }

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
}

上記の様にIInputClickHandlerを追加することでOnInputClicked()が実装される。
エアタップするとこのOnInputClicked()がイベントハンドラとして呼びだされる。

1.png

オブジェクトをエアタップすると

2.png

色が変わる(エアタップというジェスチャを認識し、イベントハンドラの処理が行われた。)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3