UnityでARをやってみよう ~Vuforiaを使って~

Unity

自分はゲーム作成のためにUnityを使うことが多いのですが、ある日、こんな話を聞きました。

「UnityでARも作れるんだってさ!」

つまり、自作した3Dモデルをテーブルの上に登場させる……なんてこともできるみたいです。面白そうなので試してみることにしました。

使うもの:UnityとVuforia

Unityはゲーム開発でよく使われるゲームエンジンです。今回はゲームを作るためではなく、ARモデルを表示するために使います。

Vuforiaは、AR開発のために必要な機能を集めたものです。ARカメラなどが搭載されています。

VuforiaをUnityに導入することで、UnityでARが使えるようになります。次から手順を解説します。

Vuforiaでの操作

まず、Vuforiaでライセンス登録します。公式サイトの「Vuforia Engine Developer Portal」から登録可能です。

登録したら「Target Manager」を開きます。この画面で、右上にある「Add Database」を選択し、データベースを作ります。Databaseの名前は何でも良いです。また、TypeはDeviceで登録しました。

次にARマーカー(ARを表示させる目印)を登録します。

先ほど作成したDatabaseの名前をクリックします。「Add Target」を選択すると、どんな種類のARマーカーを登録するか設定する画面が出てきます。

TypeはImageを選択。また、FileにはARマーカーとして使う画像をアップロードしました。

ちなみに、以下の画像をARマーカーとして使いました。Clip Studioというペイントソフトで作った画像です。

ARマーカーが登録できたら、「Download Database(ALL)」を選択して「Select a development platform」の「Unity Editor」にチェックを入れ、ダウンロードします。

Unityでの操作

ここからはUnityで操作を進めます。

Vuforia Engineをダウンロードして(Vuforiaのダウンロードページからダウンロードできます)、Unityにインポートします。

続けて、先ほどVuforiaでダウンロードしたファイルもUnityのプロジェクトにインポートします。

GameObjectタブにVuforia Engineの欄が追加されていれば成功です。

この「Vuforia Engine」から「AR Camera」を選択します。もとからあったMain Cameraは削除してしまいましょう。

ここでAR CameraのInspectorから「Open Vuforia Engine Configuration」を選択します。「App License」の横にある入力欄には、license key を入力します。

license key はVuforiaから入手する必要があります。一度Vuforiaに戻って、「License Manager」→「ライセンス名」の順にクリックします。ここにあるLicense Key をコピーして、Unityの入力欄にペーストしましょう。

次に、Unity上でARマーカーの設定をします。「GameObject」→「Vuforia Engine」→「Image Target」を選択します。Image TargetのInspector に「Image Target Behavior(Script)」があります。Type を、From Database に変更します。

「Database」の欄に先ほどVuforiaに登録したDatabaseの名前が出てくるため、それに変えます。その下にある「Image Target」も、登録したARマーカーの名前に変えます。

登録したARマーカーが表示されました。

ここで、ARとして表示するモデルの設定をします。今回はBlenderで作った3Dモデルを表示させます。

UnityのHierarchy内にモデルのオブジェクトを追加します。

ARで表示する時にもオブジェクトとARマーカーとの位置関係などがそのまま反映されるため、この段階で大きさなどを調整しておきます。

最後に、ARで表示したいオブジェクトをImage Target の子オブジェクトに設定すれば準備は完了です。

表示してみよう!

後はUnityの画面上部にある再生ボタンを押して、カメラにARマーカーを映すだけです。早速やってみます。

こんな感じになりました! 紙を手で持って、カメラに映しています。

本当はテーブルの上に立たせたかったのですが、カメラの性能上諦めました。いつかは文鳥の3Dモデルを作って、手をARマーカーにして手乗り文鳥をやってみたいです。

ARが表示されない時の対処法

手順通りに進めても、3Dモデルが表示されない時があります。

その場合には、以下の原因が考えられます。

1.認識されにくいARマーカーを使っている

Vuforiaでは、自分でARマーカーを登録することができます。登録した画像は、どれくらいARマーカーとして適しているかによって5段階のRatingで評価されます。5が最高評価です。

自分が始めにARマーカーとして使ったのはタータンチェックの画像でした。星4の画像だったので認識されやすいと思ったのですが、10回くらい試してやっと表示されるくらいの認識精度でした。

星5の画像に変えたところ、カメラにARマーカーを映すとすぐに表示されるようになりました。

可能であれば、星5の画像を使うのがベストだと思います。

「こんな画像だとRatingが高くなるよ!」という例は、Vuforia公式サイトが解説してくれています。参考にしてみてください。

Best Practices for Designing and Developing Image-Based Targets | Vuforia Library

2.ARマーカーからの位置が離れすぎていて、画面に映っていない

ARで表示させるものは、ARマーカーとの位置関係そのままに表示されます。ですので、ARマーカーの上に表示させたいのであれば、マーカーの上に配置する必要があります。

正面からはARマーカーのすぐ上にオブジェクトがあるように見えても、上から見ると位置がとんでもなく離れていた、なんてこともありえます。

この場合、正常にARマーカーが認識されたとしても、表示させたいものが画面に映らなくなってしまう可能性があります。

以下は、実際にトナカイがやってしまった例です。

上の画像のように、正面から見るとARマーカーの近くにあるように見えても……

上から見ると、位置がかなりずれています。

この状態で、Unityを再生しARマーカーをカメラに映すと、画面外に表示されてしまいました。「何か画面の端にちらちら動くものがあるな……あ、これARで映したいモデルだ」となった段階で、ようやく位置のずれに気づきました。

ARマーカーの近くにオブジェクトが配置されているかどうかは、様々な方向から確認しておくとよいです。