【Unity】MRTK導入してQuest2のハンドトラッキングでボタンを押す
MRTK-Quest
MRTK v2.5 で Oculus Quest がサポートされました!
— たるこす (@tarukosu) October 1, 2020
自分が作って公開した Oculus Quest 拡張が大本なので、MRTK のライセンスをみると HoloLabInc の名前が入ってますhttps://t.co/5uSPkWzCzu pic.twitter.com/RLA4ZwnXiI
というツイートを見ました。
Quest2が発売されたということもあるので
MRTK×OculusQuest2×ハンドトラッキングで
ボタンを押すところまでやってみようと思います。
バージョン情報
Unity 2019.4.8f1
Oculus Integration Version 20.1
Microsoft Mixed Reality Toolkit v2.5.0
MRTK-Quest v1.1.0
準備
まずはOculus IntegrationをAssetStoreからインポートします。
次にMicrosoft Mixed Reality Toolkit
から必要なunitypackageを
ダウンロードしてプロジェクトにインポートします。
今回は、
Microsoft.MixedReality.Toolkit.Unity.Foundation
Microsoft.MixedReality.Toolkit.Unity.Tools
の2つを下記リンクからダウンロードします。
【リンク】:MixedRealityToolkit-Unity
インポートしたら初期設定画面が出ると思うので
Applyを押します。いろいろ必要な設定をやってくれます。
次にQuest対応のMRTK-Questを導入します。
下記からMRTK-Quest_v110_Core.unitypackage
をダウンロードしてインポートします。
【リンク】:MRTK-Quest
Profileの設定
最初にいろいろな設定が利用可能となるProfileを使える状態にします。
下記画像のように
Mixed Reality Toolkit
> Add to Scene and Configure...
を選択すればOKです。
次にMRTK-QuestのProfileを使えるように下記画像のように設定します。
稀にProfileの設定ができないことがあります。(インポートの順番とかバージョンの違いかも)
うまくいかなかったら
下記のサンプルプロジェクトをクローンして
Profileがまとめられたファイルをプロジェクトに丸ごとコピーすれば大丈夫でした。
【リンク】:MRTK-Quest-Sample
Profileがまとめられたファイルのディレクトリは下記です。
MRTK-Quest-Sample\Assets\MRTK.ThirdParty\MRTK-Quest\Profiles
今回はやりませんが、ここまでいろいろダウンロードしたものは
manifest.json
に自分で書き込めば勝手にインポートしてくれるらしいです。
【参考リンク】:MRTK 2.5 を Unity Package Manager を使って取り込む
【参考リンク】:Oculus Quest 2でMRTK使って豆腐と戯れる最小手順
ポインター、ゲイズ、テレポートを削除
下記はMRTK-Questのデモです。
引用元:MRTK-Quest
ただし、これは機能をてんこ盛りにしたバージョンのデモです。
今回は人差し指でボタンを押せる機能だけに絞りたいと思います。
ポインター削除
まずはポインターです。
MixedRealityToolkit
のInput
設定から
下記画像のように不要なポインター機能を削除してPokePointer
だけの状態にします。
ゲイズ削除
手の入力を検知するまでゲイズ(HMDの向きに照射されるポインター)が出ます。
これ正直なところどうやって消せばいいかいまいちわかりませんでした。
なのでオブジェクトを非アクティブにするというパワープレイで非表示にしました。
テレポート削除
MixedRealityToolkit
のTeleport
設定からオフにできます。
ボタンを配置、常にカメラの前に表示する
ボタンはMixed Reality Toolkit
> Toolbox
から
下記画像のように選択できます。
Prefabを直接Hierarchyに置いてもOKです。
表示位置を調整してデバッグするのが面倒なので
常にカメラの前に表示します。下記にまとめたScriptを使用します。
【参考リンク】:【Unity(C#)】Lerp、Slerpを使った減速表現
デバッグ
ここまででもう下記動画のようにボタンは押せるようになっているはずです。
MRTK導入してQuest2のハンドトラッキングでボタンを押すだけの動画です😎#OculusQuest2 #MRTK pic.twitter.com/246Oy32c42
— KENTO⚽️XRエンジニア😎Zenn100記事マラソン挑戦中5/100 (@okprogramming) October 18, 2020
Editor上でも確認できます。下記にまとめてます。
【参考リンク】:【Unity】Oculus Link使ってEditor上でデバッグ
実機での確認は(ビルドの設定は省いて)1つ設定しなければならない箇所があります。
下記画像の通り、Hands Only
にする必要があります。
設定用ConfigのディレクトリはAsset/oculus/OculusProjectConfig
です。
ボタンに処理を追加する
ボタンを押すとキューブの表示が切り替わるデモです。
コード
using Microsoft.MixedReality.Toolkit.UI;
using UnityEngine;
/// <summary>
/// ボタン押下時のイベントを管理
/// 適当なオブジェクトにアタッチ
/// </summary>
public class ButtonEventManager : MonoBehaviour
{
/// <summary>
/// ボタン
/// </summary>
[SerializeField] private Interactable _interactableButton;
[SerializeField] private GameObject _cube;
void Start()
{
_interactableButton.OnClick.AddListener(() =>
{
//ボタン押下時行いたい処理
_cube.SetActive(!_cube.activeInHierarchy);
});
}
}
MRTKのボタンにInteractable
というコンポーネントがついているので
その中のリスナーにイベント登録しています。
おわりに
VRで物理的なUIを一から自分で作るのは面倒なので
これからもお世話になろうと思います。
参考リンク
Oculus Quest 2でMRTK使って豆腐と戯れる最小手順
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
Author And Source
この問題について(【Unity】MRTK導入してQuest2のハンドトラッキングでボタンを押す), 我々は、より多くの情報をここで見つけました https://qiita.com/OKsaiyowa/items/ce7769816721ea351f05著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .