前回、Android用の ARCore SDK についている、2D画像をマーカーとして ARオブジェクトを表示する Augmented Image の設定の仕方を説明しました。

ARCore のサンプル Augmented Image を試す Part1

今回は、実際にそれを利用して自分の ARアプリを作るための基礎として、マーカー画像の変更方法と、ARオブジェクトとして表示される3Dオブジェクトの変更の方法を説明します。
(以下の画像が3Dオブジェクトまで変えた例です。)
AR_Image_11

【4.マーカー画像を変更】
4.1. マーカー画像の確認

まずは、サンプルとして登録してあるマーカー画像を確認してみましょう。Projectビューから以下のフォルダを開きます。

Assets > GoogleARCore > Example > AugmentedImage > Images

そこに、「Example Database」と言うDatabaseがありますので、クリックします。
AR_Image_12

Inspectorビューに このサンプルの Databaseに登録されている画像が表示されます。前回使用した、地球の画像が1行目に登録されています。
AR_Image_13

サンプルとして、10枚の画像が登録されています。
この Databaseには 1000枚の画像を登録することができます。

4.2. マーカー画像の変更

では自分の新たな画像を、この Databaseに登録してみましょう。新規登録しても良いですが、ここでは最も簡単な方法として、既存の画像を自分の画像に変更してみます。

まず準備として、自分の画像をUnityにコピーします。ファイルエクスプローラーから自分の画像をUnityエディタの Projectビューのサンプル画像が保存してあるフォルダにドラックアンドドロップします。
(私は Lab7からリリースしているゲームアプリ Merlion Adventure のアイコンを選択。ちなみに、現在Merlion Adventure2を開発中です!(宣伝))
AR_Image_14

また、ARCore のサイトによると、このマーカーとして使用する画像は、以下の仕様に沿っている必要があるそうです。

PNG または JPEGファイルフォーマット。(高圧縮されているとパフォーマンスが悪くなる可能性あり)
・カラー画像でも白黒画像でも対応。
・解像度は 300 X 300ピクセル以上にすべき。
・Database 登録時に出るスコアは 75以上であるべき。

そして、Inspectorビュー上の「Example Database」の1行目にある地球のマーカー画像を変更してみます。画像の右下にある「Select」をクリックすると、Unityエディタ上のイメージ画像が選択肢として表示されます。そこから、今 Unity エディタ上にコピーした画像を選択します。
AR_Image_15

AR_Image_16

設定は以上です。では、新しい自分の画像が認識されるか試してみましょう。


4.3. 新しいマーカー画像を試してみる

前回、実機テストでやったように、USBケーブルで Android端末を接続します。「Build And Run」をクリックして、ビルドとアプリのインストールを実行させます。ビルド時に聞かれるファイル名は何でもけっこうです。
 
実機側でアプリが立ち上がります。アプリが「Fit the image you're scanning」と表示してマーカー画像を探し始めます。
また、PCの画面を直接認識させます。あっさり認識してくれました。
AR_Image_02


【5.表示3Dオブジェクトを変更】

5.1. 新規Databaseを登録

次に、マーカー画像を認識時に新たな3Dオブジェクトを表示するように変更してみましょう。ここでも、より簡単な方法をとり、既存のサンプルを極力使うことにします。
しかし、Databaseは新たに登録してみましょう。(既存の Databaseを使う場合は、ここはスキップです。)

Projectビュー上に先ほどコピーした自分のマーカー画像(フォルダ:Assets > GoogleARCore > Example > AugmentedImage > Images)を右クリックします。
そこから、以下のようにたどり、AugmentedImageDatabase をクリックします。

Create > GoogleARCore > AugmentedImageDatabase

AR_Image_17

すると、新たな Databaseができますので、Projectビュー上で名前を変更します。ここでは、「AR Image Test」と変更しました。
AR_Image_18

次に、Projectビュー上の以下のフォルダにある AugmentedImagesSessionConfig をクリックします。

Assets > GoogleARCore > Examples > AugmentedImage > Configurations > AugmentedImagesSessionConfig

そして、Inspetorビュー上の「Augmented Image Database」に、先ほど作成した Databaseをドラックアンドドロップします。
AR_Image_19


5.2. 関連C#スクリプトを確認

今回はより簡単に行う目標があるので、スクリプトをいじることはしません。しかし、Augmented Image に関連する C#スクリプトにどんなものがあるかだけ確認しておきましょう。(もちろんオプションです。)

Projectビュー上のフォルダ:Assets > GoogleARCore > Examples > AugmentedImage > Scripts に2つの C#スクリプトがあります。それぞれ確認してみます。
AR_Image_20


【AugmentedImageExampleController】
Hierarchyビュー上のオブジェクトにアタッチされたスクリプト。Updateメソッド内で状態が Trackableの画像の有無を確認して、3Dオブジェクトを表示させます。
AR_Image_21

【AugmentedImageVisualizer】
3Dオブジェクト Prefabにアタッチされているので、Prefab作成後に毎フレーム 以下の Updateメソッドが呼ばれます。
AR_Image_22


5.3. 新たな3Dオブジェクトを登録

ここでも、より簡単な作業で新たな3Dオブジェクトの表示を実現してみましょう。そのため、スクリプトはいじらず、既存のサンプルを Unityエディタ上で少しいじるだけとします。

まず、現在表示している Prefabを確認します。Projectビュー上の、 Assets > GoogleARCore > Examples > AugmentedImage > Prefabs フォルダに「AugmentedImageVisualizer」と言うPrefabがあります。
この Prefabがサンプルプログラムから呼び出されているので、この Prefabを変更してしまいましょう。
この Prefabを Hierarchyビューにドラックアンドドロップします。
AR_Image_23

Inspectorビューをみると4つのゲームオブジェクトが登録されています。
これらの4つのゲームオブジェクトが認識したマーカー画像の4隅に額縁のように表示されています。
Hierarchyビューをみると、これらは今見ているPrefabの子オブジェクトとしてあります。
それら4つのゲームオブジェクトを右クリックメニューから削除します。
AR_Image_24

そして、他の自分の3Dオブジェクトを同じように Prefab「AugmentedImageVisualizer」の子オブジェクトにします。そして、Inspectorビューからそれらを登録します。
AR_Image_25

この Prefabの名前を変更します。ここでは「AR Image Test」としました。そして、これをHierarchyビューからProjectビューにドラックアンドドロップして、新たなPrefab化を行います。
AR_Image_26

Prefab化したら、Hierarchyビュー上には必要ないので、右クリックメニューから削除を行います。
AR_Image_27

次に、Hierarchyビュー上の「Examplecontroller」をクリックして、Inspectorビュー上に「Augmented Image Example Controller」コンポーネントを表示させます。
そこにある、「Augmented Image Visualizer」項目に、今作成した Prefabを Projectビューからドラックアンドドロップします。
AR_Image_28

これで、設定は終了です。それでは実機で試してみましょう。
USBケーブルで Android端末を接続します。「Build And Run」をクリックして、ビルドとアプリのインストールを実行させます。

先ほどと同じように PC画面上の画像を直接認識させてみます。以下のように自分で登録した3Dオブジェクトが元の額縁に変わって表示されました。
AR_Image_11

このように、Augmented Image はマーカー画像を登録、認識する部分の機能となります。
これで、マーカー画像認識後ただ3Dオブジェクトを表示するアプリは簡単に作れます。そんなものは今更珍しくもないので、これを利用して何が実現できるか考えていく必要がありますね。

Sponsored Link