「Augmented Image」は先に登録しておいた画像が実世界上に現れたときに、そこにアプリで作成した画像を上書きする技術のことです。他のAR SDKでは「マーカー型」と呼ばれているものになります。
これまでの「マーカー型」はサービスとして提供されているために、サービス提供元のサーバにアクセスできないと動作しませんでした。
それに対して、「Augmented Image」はアプリ内に画像DBを保持(※)し、画像認識自体もデバイス内部(恐らくARCoreアプリ内)で実施するので、通信ができない環境でも動作させることが可能となります。
※ 画像DBはアプリ起動時に動的に組み立てることも可能なようです。
認識できる画像としては以下のような制約があります(ARCore SDK for Unity: Version 1.2.1現在)。
  • 15cm × 15cm以上の画像であること
  • 画像は平面状になっていること(しわがあったり、ボトルに巻いてあったりしてはいなけない)

実装手順

画像DBを固定で保持する実装について記載します。

画像DBの作成と登録

  1. Unityプロジェクトを作成し、ARCoreが利用できる状態に設定(詳細はこちら)
  2. 作成したUnityプロジェクトにターゲットにしたい画像ファイルを格納
  3. 追加した画像ファイルを全て選択し、右クリックから「Create」-「GoogleARCore」-「AugmentedImageDatabase」を選択し、画像DBを構築

  4. UnityプロジェクトにSessionConfigを追加

  5. 追加したSessionConfigの「Augmented Image Database」に先ほど作成した画像DBを設定

  6. ARCore Deviceの「AR Core Session」-「Session Config」に先ほど作成したSessionConfigを設定

画像DBへのアクセス

登録した画像DBへアクセスするコードは以下のようになります。
// 以下のAPIで認識したターゲット画像の一覧を取得(引数のListに結果が格納される)
Session.GetTrackables(mAugImageList);
取得した認識しているターゲット画像から位置などの情報を取得するためにAnchorを作成します。
mTargetImageAnchor = mTargetImage.CreateAnchor(mTargetImage.CenterPose);
作成したAnchorはComponentなので、不要になったらDestroyしてあげましょう。

サンプルアプリ

お試しで作成したアプリを以下の場所にアップしておきました。
https://github.com/eq-inc/eq-unity-google-arcore/tree/v0.4.1【2018.06.26修正】
クローンした上で、以下のことを実行してください。
  1. 「git submodule update -i」でサブモジュールを取得
  2. ここで「ARCore SDK for Unity」(実装時はv1.2.1)をダウンロード
  3. クローンした環境をUnityで開き、上記の「ARCore SDK for Unity」をインポート
  4. ビルドして、起動した後、ボタン「Augmented Image」を押下
  5. クローンした環境の以下の画像に反応します。【2018.06.26追記】
  6. 画像は全て「かわいいフリー素材集 いらすとや」様にて公開されているもので、著作権は「かわいいフリー素材集 いらすとや」様が所有されています。
    • Assets/Images/character_cthulhu_shoggoth.png
    • Assets/Images/fantasy_chikyu_heimen.png
    • Assets/Images/fantasy_wolpertinger.png

コメントの投稿