(Unityアセットやコードはこちら)
皆さんこんにちは。
早速ですが、VR(バーチャルリアリティー)は勿論ご存じですよね?
ゴーグルを付けてやる、あれです。
今では、ゴーグルやコントローラーの位置を認識して、自由に動き回れる6DoFという機能があります。
また、最近ではOculus Questがハンドトラッキングに対応した、ということも聞きます。
しかし、このようなVRは、OculusやViveといった、専用のゴーグルが必要で、そのために手軽に試せない、という印象があると思います。
私も実は持っていません。
しかし、スマホをはめるだけで出来る簡易的なゴーグルも存在します。
今では100均でも売っているそうです。
これであれば、安い出費で手軽にVRが体験できる、ということです。
ただ、現状では6DoFやハンドトラッキングに対応したものがほとんどありません。
ということで、実際に作ってみました。
といっても、一から作るのは私には無理なので、既存の技術を流用します。
開発環境はUnityで、現在はAndroidのスマホのみに対応しています。
まず、AndroidスマホにはARCoreという機能があります。
その名の通り、ARに使われるもので、これを使えばスマホのカメラの内容から、ゴーグルの位置を認識することができるようになります。
これによって、6DoFのように、自由に動き回れるようになります。
これは実は過去にやったことがありますが、新しいバージョンのUnityには対応できていなかったので、AR Foundationを使う形で実装し直しました。
次に、ハンドトラッキングを実装するためにMediaPipeというものを使いました。
これは機械学習のモデルを利用するのに使うライブラリだとのことですが、そのサンプルの1つにハンドトラッキングがあるので、それを使いました。
ただ、Unityではそのままでは使えないので、それで実行できるように一部変更しました。
ゴリ押し気味に実装したので、性能が若干落ちたような気もしますが、なんとかなってます。
このように自由に動き回ったり、
手を認識させて動かしたりすることが出来るようになりました。
前述の通り、ARCoreに対応したAndroidスマホと、スマホVR用のゴーグルがあれば、高価なゴーグルが無くとも試すことができます。
ちなみに、このハンドトラッキングで、女の子のおっぱいを触れたり、スカートをめくったりすることが出来るアプリを開発しましたが、見事にリジェクトされました。
公開できればネタとして最高だと思っておりましたが、仕方がないですね。
また、Githubでアセットやコードを公開しているので、6DoFやハンドトラッキングといったこれらの機能を使いたいという方は、ぜひ使ってみてください。
以上です。