LoginSignup
3
1

More than 5 years have passed since last update.

FirstVRをARで使ってみる

Posted at

概要

今回はFirstVRをARで用いることについて書いてみたいと思います。
VRはARとも相性がいいので(というかニアイコール)、応用できないかなと思ったのが理由です。

モバイルARだとどうしても手のジェスチャなどを取ることができず、HoloLensにあるような体験を作りづらいという難点があります。
しかも、画面タップで処理させようとすると画面を手で覆ってしまってせっかくのコンテンツが見えない、というのも問題のひとつです。

ということで、このあたりをFirstVRを使って解決してみたいと思います。

ちなみに今回のデモはこんな感じ↓

ARKit

今回はUnityのARKit Pluginを使って実装しています。

以前はARKit PluginがAsset Storeでダウンロードできたのですが、どうやら提供されなくなったようで、開発されているリポジトリから直にダウンロードしてくる必要があるようです。

詳細はこちらを以下をご覧ください。

ARKit Pluginの中のシーンを利用する

ARKit Pluginにはいくつものサンプルシーンが存在します。
タップした位置にオブジェクトを移動するタイプのサンプルならなんでもいいですが、今回はUnityAROcclusionシーンを利用しました。

AROcclusionシーン

このシーン内に、FirstVRを利用するためのセットアップを行います。

カスタムジェスチャを登録してARを操作する

今回は、前回書いた「カスタムジェスチャ」の仕組みを使ってARのオブジェクトに干渉することをしています。

カスタムジェスチャ自体については上記記事をご覧ください。

今回は「グー」と「パー」の状態でAR内のキャラクターのポーズを変更するようにしてみました。
本当はつまむようなジェスチャにしたかったのですが、パーの状態との誤認識がそれなりにあったので、安定したグーでデモしています。

複数ジェスチャ登録することで色々な指示が出せるのでARとの相性はとても良さそうに思います。

今回の実装は以下のようにしました。

private void Update()
{
    if (!_isInitialized)
    {
        return;
    }

    bool needsNext1 = _gesture1.held && !_lastHeld1;
    _lastHeld1 = _gesture1.held;

    if (needsNext1)
    {
        _idleChanger.Next();
    }

    bool needsNext2 = _gesture2.held && !_lastHeld2;
    _lastHeld2 = _gesture2.held;

    if (needsNext2)
    {
        _idleChanger.Back();
    }
}

_gesture1.held_gesture2.heldがそれぞれ、登録したジェスチャ状態かを判断するbool型の値です。
つまり、登録したジェスチャの状態になっていたら、AR内キャラのポーズを変更する、という単純なものです。

仕組み自体はシンプルですが、動画を見てもらうと分かるように、比較的安定して認識してくれるので、ARを用いたコンテンツと組み合わせるとだいぶ良さげな感じです。

oculus Goとも連携できるようなので、色々いじってみようと思います。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1