MRでカーソル表示、オブジェクトフォーカスとクリック


MRヘッドセットはAcerのがメルカリに定価であったので買いました。

MRのサンプルでカーソル表示、オブジェクトのフォーカスとクリックをUnityで実装したのでまとめます。

 

①環境

Unity2017.2b11 とりあえず2017.2系の最新使うようにしてます。

OSビルド 16288.1

 

②参考

https://github.com/Microsoft/MixedRealityToolkit-Unity

基本的にMixedRealityToolkitを利用して実装しています。楽なので

Input回りはこちらが参考になります。

「InputTapTest.unity」が参考になりました。

 

③実装

 3-1.プロジェクトを作成して上記のgithubをダウンロードして「MixedRealityToolkit-Unity/Assets/HoloToolkit/」をプロジェクトに追加

HoloToolkitを追加

HoloToolkitを追加

 

 3-2.カーソルの表示

Prefabの追加

Prefabの追加

上記のようにMainCamera、Directional light(ライトは別に消さなくてもいいです)を削除

HoloToolkit/Input/Prefabs/MIxeRealityCameraParent

HoloToolkit/Input/Prefabs/Manager(InputManagerでOK)

HoloToolkit/Input/Prefabs/Cursor/Cursor

をシーンに追加

 

この状態でUnityでプロジェクトを実行するとカーソルが表示されます。

 

3-3.オブジェクトの設定

Cubeオブジェクト配置して見やすく適当な位置と角度を設定してscriptとmaterialを設定

Cubeの設定

Cubeの設定

とりあえず作成したものを

Position(x:0,y:0,z:8)に設定しています。

CureTapResponderとBlue(白色)ってマテリアルを設定してます。

using HoloToolkit.Unity.InputModule;
using System;
using System.Collections;
using UnityEngine;

public class CubeTapResponder : MonoBehaviour, IInputClickHandler, IFocusable
{
public void OnFocusEnter()
{
gameObject.GetComponent().material.color = Color.blue;
}

public void OnFocusExit()
{
gameObject.GetComponent().material.color = Color.white;
}

public void OnInputClicked(InputClickedEventData eventData)
{
gameObject.transform.localScale += 0.05f * gameObject.transform.localScale;
gameObject.transform.Rotate(new Vector3(0f, 30f, 0f));

eventData.Use();
}
}
スクリプトの内容はこんな感じです。

クリック

クリックの管理はIInputClickHandlerのインターフェースで用意されている「OnInputClicked

メソッドを利用して実装します。サンプルでは回転してオブジェクトを大きくしています。

 

フォーカス

IFocusableのインターフェースで

OnFocusEnter」「OnFocusExit」の2つでフォーカス時とフォーカスアウト時の動きを設定します。

サンプルでは色をフォーカス時に青、非フォーカス時に白に戻しています。

 

作成はこれでです。

実際に実行した結果が以下です。

 

 

おかしなところなどあれば指摘していただけるとありがたいです。

動画のものをフォーカスの比較のためにキューブが2つ表示されていますが気にしないでください。

フォーカスが当たらなくなる距離が存在するようなんですがそんなのどこかに載ってたかな。。。

Toolkitの問題か?

 

とりあえずじゃんじゃんMRやってこう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です