Edited at

HoloToolkitの入力クラスをエディタ上で操作する


はじめに

この記事はOculus Rift Advent Calendar 2018 13日目の記事です。

12日目の記事は@songofsaya_さんのまわりがGOだらけなのでMirage SOLOでHDRPをデプロイするのを試す記事とか書きますというタイトルでVRアドベントカレンダーに参戦する。でした。

demo.gif

今回はHoloLens開発には(多分)欠かせないHoloToolKitに関するお話です。

入力回りをいい感じに制御できるクラスがあるのですが、大変便利なことにエディタ上でプレビューする機能も用意されています。すごいことにキーコンフィグも細かく弄れるのですが、反面パッと見で対応するキーマッピングが分かりづらいという状況がありました。

そこで今回はデフォルトのマッピングをまとめつつ、どう定義されているかを簡単に紹介します。


動作環境


TL;DR

デフォルト設定だと以下の通りです。

多分これだけ知りたい人が多そう(僕がそうだった)


視点操作

動作
マウス
キー

平行移動 X
-
(→, ←), (D, A)

平行移動 Y
-
(Q, E)

平行移動 Z
Ctrl + マウススクロール
(↑,↓), (W,S)

軸回転 X
縦方向にドラッグ
テンキーの(2, 8)

軸回転 Y
横方向にドラッグ
テンキーの(6, 4)

軸回転 X
-
テンキーの(1, 3), (9, 7)

正方向が左辺です。テンキーを使う場合はNumLockをオンにしてください。

平行移動に関してはInputManagerの定義が使われているため、変更を加えている方は上の限りでないです。


ハンドジェスチャ

動作
入力

右手の移動 XY
Space + ドラッグ

右手の移動 Z
Space + マウススクロール

右手のクリック
Space + 左クリック

左手の移動 XY
Shift + ドラッグ

左手の移動 Z
Shift + マウススクロール

左手のクリック
Shift + 左クリック


ちょっとした解説

メニューのMixed Reality Toolkit > Configure > Apply Mixed Reality Scene Settingsより、MixedRealityCameraParent, InputManagerプレハブがシーンに追加された状態での話をしていきます。

fasdfasdfasdfas.PNG


視点操作の解説

move.gif

視点の制御はMixedRealityCameraParentの子のMixedRealityCameraについているManualGazeControlというコンポーネントで行われています。

asdfasdfasdf.PNG

マウス、キーボード、ジョイスティック(デフォルトでオフ)によって制御できるように設定されています。チェックボックスでそれぞれについて有効無効を切り替えることができます。

細かい設定については、このGameObjectの子についているコンポーネントに対して行っていきます。

afdsafasdfasdfasd.PNG

MouseXYRotationAxisを見てみましょう。AxisControllerというコンポーネントがついていることが確認できます。全ての視点制御はすべてこのAxisControllerのパラメータによって定義されています。

fasdfasdfasdfasd.PNG

入力元の使用する設定はANDの関係です。(一方がNONEであれば片方のみ)

Axis Type

asix.PNG

InputManagerAxisはUnityのInputManagerの定義のことです。

それ以外は定義されたいくつかの設定を選択できるようになっています。

Button Type

button.PNG

上の方のLeft,Right,Middleはマウスのボタンのことです。

平行移動、軸回転ともに軸移動という扱いになっていて、Axis 0 Destinationなどに軸を設定すると、正負の向きに変更ができるようになります。ものによっては複数の軸を持たせることもできます。


ハンドジェスチャの解説

click.gif

ジェスチャの設定はAssets/HoloToolkit/Input/Prefabs/RightHandInputControl.prefab, ~/LeftHandInputControl.prefabによって行われます。再生するとシーンにInstantiateされます。

手の移動は視線制御同様にAxisControllerによって定義されていますが、クリック操作のみ別のコンポーネントが用意されています。ButtonControllerです。

buttt.PNG

使い方は非常にシンプルで、クリックジェスチャに該当する操作をInspectorから選択するだけです。

右手のエディタ操作の場合は、ドラッグ時にSpaceとマウス操作を組み合わせるものになっているので、クリック時もSpaceキーは共通(押しっぱなし)にし、マウスの左クリックをすることでクリックジェスチャの入力ができるように設定されていました。


まとめ

どんな感じで設定できるか分かるといい感じにカスタマイズなどして快適に開発できそうですね!HoloLens開発やっていきましょう!

よかったらTwitter(@nkjzm)でも知見共有しあいましょう!よろしくお願いします!

明日のOculus Rift Advent Calendar 2018 14日目の記事は、@blkcatmanさんによるAframe + Vue を使ってOculusGoでWebVRを(なるべく簡単に)はじめるです。