たるこすの日記

たるこすの日記

リアルからバーチャルへ、バーチャルからリアルへ

HoloLens と Kinect v2 を連携させる -その4- (手でオブジェクトを操作)

HoloLens と Kinect v2 を組み合わせて、手でオブジェクト操作を行ってみました。
片手で移動、両手でサイズの変更ができます。

こちらがその動画です。

実装の仕組み

Kinect のデータの送信と位置合わせについては、上記ブログの内容とほぼ同じです。

簡単に解説すると、Kinect を接続した PC で動作する Unity アプリケーションから HoloLens 上で動作する Unity アプリケーションに UNET を使って Kinect のデータを送信しています。また、HoloLens の位置と Kinect で認識した頭の位置を使って、HoloLens と Kinect の位置合わせをしています。前回からの変更点としては、Kinect から取得できる手の認識結果(グー、チョキ、パー、不明)のデータも HoloLens 側に送信するようにしています。

UNET 以外のデータの伝送方法も今度試してみたいと思っています。Github で公開されている HoloLens と kinect を組み合わせたプロジェクトは HoloToolkit の Sharing を使っているようです。

↓これとか github.com

↓これとか github.com

今回は時間の節約のため以前作った UNET の仕組みを流用しています。

Kinect と HoloLens の位置合わせをすることで、自分の体の位置に kinect で取得した関節位置のデータを重ね合わせることができます。これの手の位置にオブジェクト操作用のオブジェクトを配置します。

操作用オブジェクトが操作対象のオブジェクトに触れたら、オブジェクトの周囲に青い枠を表示させています。さらに、触れている状態で手を握ればオブジェクトを掴み、手の動きに応じてオブジェクトの位置を変更します。

また、両手でオブジェクトを掴んだ場合、両手間の距離に応じてオブジェクトのサイズを変更します。

感想

HoloLens でのオブジェクト操作は、オブジェクトに顔を向けてカーソルを合わせてジェスチャで移動するという方式がほとんどです。今回作ったものは顔でカーソルを合わせる必要がなく、より自然にものを動かす操作ができていると感じました。

ただ、掴むという部分は少しいまいちでした。オブジェクトの表面をつかんでいるというより、オブジェクトの中を握っているという感じになってしまいました。また、手を握るだけでフィードバックが無いので、物をつかんでいるという感覚があまり得られませんでした。

やっぱり、HoloLens 用のコントローラが欲しいですね。