たるこすの日記

たるこすの日記

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

HoloLens で Vuforia の2Dマーカ認識を使ってみる

こんにちは、たるこすです。
今回は AR ライブラリの Vuforia を HoloLens (Unity アプリケーション) で使ってみます。

Vuforia を使えば、2D/3D マーカの認識を簡単に行うことができます。 いつの間にか HoloLens の公式ページのツール一覧にも追加されていました。

Vuforia のセッティング

Vuforia ライセンスキーの取得

まずは、以下のページで vuforia のアカウント登録が必要です。

アカウント作成後、以下のページの「Get License Key」をクリックし、アプリ名を入力します。

開発用アプリケーションに使う場合には、無料で利用できます。

入力したアプリ名をクリックすると、ライセンスキーが表示されます。

ARマーカ画像の設定

Develop > Target Manager のタブを開きます。 ここで、マーカとなる画像やモデルの設定を行います。

まず、「Add Database」から Database を追加します。 追加した Database を選択すると以下のようなページが表示されます。

「Add Target」ボタンを押すと、マーカを追加することができます。

マーカに何を使うかが悩みどころなのですが、家の中にちょうどいいものがありました。

それがこちら、カルカソンヌというボードゲームのタイルです。

ほどよい大きさ、認識しやすそうな模様で枚数もたくさんあってばっちりです。 実物をスキャンし、画像をアップロードします。 2D マーカなので、Type は "Single Image" を選択します。

登録がうまくいくと、以下のような画面が表示されます。

同様にして、1枚だけあるスタートパネルも登録しておきました。

登録が終わったら、「Download Database(All)」のボタンから、unitypackage をダウンロードします。

Unity でのアプリケーション作成

まずは、PC に接続した USB カメラを使って Vuforia の動作確認をしてみます。

以下のページの「Download for Unity」をクリックし、UnityPackageをダウンロードします。 2017/5/21 時点では、バージョンは 6.2.10 でした。

ダウンロードした Vuforia SDK の Unitypackage と、先ほどダウンロードしたマーカ用の unitypackage を Unity プロジェクトにインポートします。

インポートしたら、
Editor > QCAR > ImageTargetTextures > [DataBase名] > [Marker名]_scaled
を Inspector で表示し Texture Shape を 2D に変更します。

シーンに存在している Main Camera を削除し、Asset\Vuforia\Prefabs\ARCamera と Asset\Vuforia\Prefabs\ImageTarget を追加します。

Hierarchy の ARCamera を選択し、Inspector に表示される 「Open Vuforia configuration」をクリックすると、設定メニューが表示されます。 上の方の Add License Key の欄に、Vuforia のライセンスキーを入力します。 また、Datasets 欄の 「Load <インポートしたDatabase名> Database」 にチェックを入れ、その下のActivate にもチェックを入れます。

Image Target を Inspector で表示し、 Image Target Behaviourt の Database, ImageTarget を設定します。また、詳しくは調べていないのですが、Enable Extended Tracking のチェックを入れておくとマーカを認識できなくなってもある程度子オブジェクトを表示し続けてくれるので、HoloLens の場合はチェックを入れておくと使いやすいです。

Image Target の子オブジェクトとして、マーカを認識したら表示させたいオブジェクトを作成します。 今回は Sphere を作成しました。

実行すると、以下のような画面が表示されます。

HoloLens での利用

Unity プロジェクトに HoloToolkit-Unity をインポートします。
2017/5/21 時点で最新であるバージョン 1.5.7 のものを使いました。

HoloLens 用のビルド設定や HoloLensCamera の追加を行います。

また、ARCamera の「Open Vuforia Configuration」をクリックし、Digital Eyewear の欄に Optical See-Through, HoloLens を設定します。

再度 ARCamera の Inspector を表示し、World Center Mode に CAMERA, Center Anchor Point に HoloLensCamera を設定します。

これでアプリは完成です。

HoloLens で実行すると以下のようになります。

Vuforia の利用用途について

HoloLens でのマーカ認識は以下のような用途で使うことができそうです。

物体認識

現実の物体に対して、その物体に応じた追加の情報やエフェクトを表示することができます。また、部屋ごとやエリアごとにマーカを置いておけば、今どの場所にいるのかという認識にも使えそうです。

現実と Virtual World の位置合わせ

現実の物体とバーチャルな物体を重ね合わせたい場合、現実の物体の位置を検出しそれに合うようにバーチャルな物体を表示させる必要があります。この位置検出にマーカを利用できます。

例えば、以下のように机の隅にマーカを配置します。

マーカ相対でおしゃれなテクスチャを机のサイズに合わせて表示することで、バーチャルなテーブルクロスを表示できます。

ユーザインタフェース

HoloLens は入力インタフェースがジェスチャしかなく、バーチャルな物体の配置を何度も行うのは大変です。そこで、現実の物体で配置を行い、それをバーチャル側に反映させるという使い方は便利そうです。

例として、ミニチュア家具を配置してみました。

Vuforia と HoloLens はとても相性がよさそうなので、今後も積極的に使っていきたいと思います。