仮想空間上でアバターに触れるVRアプリ

こんにちは。ナルキタです。

現在私はVRとタッチケアを組み合わせた研究に携わっており、調査のためにユーザが仮想空間上のアバターに触れることができるVRアプリを制作しました。

今回はそのVRアプリを実行する様子を軽く紹介したいと思います。

まず使用機器の一覧です。

  • Oculus Quest 2
  • Unityインストール済みのPC
  • Webカメラ
  • マイク
  • マネキン

上記の機器を以下の図のように配置します。

上図の様に、ユーザにOculusを装着してもらい、VRアプリを実行します。

この時に、目の前のマネキンと仮想空間上のアバターの座標が合致するように注意します。

座標調整が済んだらVRアプリを実行します。

アプリ実行後、ユーザの目の前のアバターが椅子に座ります。ユーザは仮想空間上でアバターに触れたり撫でることができます。仮想空間上の手は、Oculusのハンドトラッキングによって表示されています。

またユーザの手の動きを後ろからwebカメラで撮影し、ハンドトラッキング及び手の座表を取得します。

上の動画では手の座標を緑の点で示しており、左下にはリアルタイムでユーザの手の速度を表示しています。

このように、仮想空間上のアバターをユーザが触れたり撫でることができるVRアプリを制作致しました。

手の速度を検出するシステムは少々複座鵜ですが、それ以外は簡単なアセットで構成されているUnityシーンですので、皆さんもぜひお試しくださいませ。

それでは~

手の動きの検出、速度の算出

こんにちは。ナルキタです。

今回はWebカメラで取得した人の手の動きと、その速度を算出するシステムの制作手順について紹介したいと思います。

まず必要なものは以下の通りです。

  • Webカメラ
  • PythonとOpenCVをインストールしたPC

まず初めにmediapipeというモジュールを用いて手を検出します。

動画内の赤い線が手の骨組みを示しています。

このままでは手の座標を抽出できないのでOpenCVを用いて画像処理を施していきます。

まずWebカメラで取得した画像をマスキングして赤い線のみを抽出します。その後二値化して手の骨組みが白線で表されるように処理します。最後に白線の部分のみのピクセルの座標のみを抽出して平均値を取得

自己紹介

こんにちは。現在近畿の国立大学院大学で情報工学を専攻しているナルキタと申します。

初めての投稿ということで軽い自己紹介をさせていただこうと思います。