MRが楽しい

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

HoloToolKitのHandDraggableを利用してオブジェクトを移動する

本日は Unity(hololens) の技術調査枠です。
前回、InteractionManager を利用して手の位置検出すると共にオブジェクトのドラッグを試しました。
bluebirdofoz.hatenablog.com

……が、改めて調べてみると「オブジェクトを掴んでドラッグ」は既に HoloToolKit で提供されているという情報がありました。
matatabi-ux.hateblo.jp
izmiz.hateblo.jp

折角なので試してみます。前回利用したプロジェクトを再利用します。
f:id:bluebirdofoz:20170830012843j:plain
前回作成した HandPosition.cs は Sphere オブジェクトから外してしまいます。

利用するのは HoloToolKit/Input/Script/Interactions 配下にある HandDraggable.cs です。
これを動かしたいオブジェクト、今回は Sphere オブジェクトに適用します。
f:id:bluebirdofoz:20170830012853j:plain
HostTransform 変数にオブジェクト自身の Transform を適用します。

そしてビルドして hololens で動かしてみると……あれ?ドラッグできません。

HandDraggble.cs のコードをよく見てみます。すると GazeManager.cs を参照していました。
試しに HoloToolKit/Input/Script/Gaze 配下にある GazeManager.cs も適用してみます。
f:id:bluebirdofoz:20170830012903j:plain

そしてビルドして hololens で動かしてみるが……やっぱり動きません。
そもそも GazeManager.cs は単なる Singleton クラスなので適用しているかどうかは問題ではないですね。
HandDraggble.cs を適用する としか書いていないため、何か根本的な設定がおかしい?
色々やってみましたが、動かないので一旦諦めます。


追記

さらに調べてみたら情報ありました。
zuq9nn.blogspot.jp
noshipu.hateblo.jp

HoloToolKit/Input/Prefabs 配下の InputManger.prefab を Hierarchy に追加。これが前提条件となります。
f:id:bluebirdofoz:20170830012935j:plain
そもそも最初に参照した記事も InputManager に関する記事なので prefab は適用している前提でした。

Hololens 上で正常に動作することを確認できました。
f:id:bluebirdofoz:20170830013000j:plain

因みに InputManager を適用していると Unity での実行時、Shift を押すと青い指マークが現れます。
このとき、HandDraggble.cs を適用したオブジェクトをドラッグできます。
f:id:bluebirdofoz:20170830013015j:plain