こんにちは。GMOグローバルサイン・ホールディングスの城戸(@sutobu000)です。
普段はビジュアルシステムの研究開発やインハウスの映像制作・配信などを担当しています。
マーカーを読み込むとキャラクターがマーカー上に表示されたり、目的地までの経路が示されたり、スマートフォンなどを通じて現実の風景に3DCGを重ねて表示する技術がARです。
今回はこのARで読み取るマーカーを立体物としたオブジェクトトラッキングを試してみたいと思います。
立体物をターゲットにしたARについて
ARマーカーは、ARコンテンツを再生・表示させるための目印を指します。
通常はQRコードのようなマーカーが使用されますが、ARマーカーを使用しないものを「マーカーレスAR」と呼ぶこともあります。
マーカーレスARにはGPSなどからの位置情報を基にARコンテンツを表示させるものや、特定の画像や空間などのオブジェクトを認識して表示させるものがあります。
今回は後者にあたる、立体物をターゲットにしたARマーカーを試してみたいと思います。
試すプロジェクト
今回はUnityを使ったARパッケージである以下のものを試していきます。
Unity向けに提供されているVuforia(PTC社)はUnity4の頃からサポートされているため、SDKやサポートが充実しています。
また、Vuforiaを用いたアプリをストアに申請する際には有料ライセンスが必要なため、留意が必要です。
AR FoundationはUnity製のパッケージですが、Vuforiaのように簡単に設定することはできず、自身で設定を行う必要があります。
今回はこれらAR FoundationとVuforiaを使って、立体物をARマーカーとして試してみたいと思います。
1. AR Foundation
AR Foundationはサンプルが提供されているため、こちらで試してみます。
環境
- Unity 6000.0.10f1
- AR Foundation Samples
- iOS/Android デバイス(今回は、iPhone15 Pro, iOS 18.2)
設定
Unity HubからGitHubのAR Foundationのサンプルを「Add project from disk」で追加することでプロジェクトを開くことができます。
プロジェクトが開かれたら、AssetsにあるScenes > ObjectTrackingから対象のアセットを確認します。
CubeとCylinderのアセットがあり、これは.arobject
というAppleが提供する独自のファイルです。AppleのARKitフレームワークを使用してAR体験を作成するための特定の形式となっています。
既存の.arobjectファイルを使用しますが、自身でスキャンするオブジェクトを設定したい場合は、事前にiOSでスキャンする必要があります。こちらを参照して作成してください。
ReferenceObjectLibrary
にこれらの.arobject
を設定することで、事前にスキャンで作成した立体物をカメラで映すとオブジェクトが反映されます。
また、立体物をARマーカーとして表示させるオブジェクトは、ヒエラルキーのXR Origin
にあるAR Tracked Object Manager内のTracked Object Prefabから設定可能です。
デフォルトでは、TriAxisという三軸が表示されます。
サンプルですので、特に変更せずにビルドしてスマホで確認してみましょう。
ビルド
今回はiOSにビルドして確認します。
UnityのBuild ProfilesからiOSを選択し、Switch Platform
を実行します。
iOSへ切り替えができたら、Build
を実行します。
実行したファイル内にある.xcodeproj
ファイルをXcodeで開きます。
iPhoneを接続してビルドします。
ビルドする際には、XcodeにAppleIDを登録し証明書の作成とチーム設定を行う必要がありますのでご留意ください。
実機で確認する
実際にARマーカーとなる立体物をカメラを通して確認してみましょう。
使用している立体物、つまりCubeやCylinderは印刷物を組み立てて使用しています。
AR Foundation SampleプロジェクトのAssets > Scenes > ObjectTracking > Printable Templates
に印刷用の画像データがあります。これをプリントして組み立てて試してみましょう。
2. Vuforia
次はVuforiaを試していきます。
サンプルではなく提供されているソリューションから試すので、AR Foundationより手順が多くなります。
環境
- Unity 2022.3.50f1
- Vuforia Engine for Unity(Vuforia提供のパッケージ)
- Vuforia Model Target Generator
- モデルターゲット用の3Dモデルを用意
- iOS/Androidデバイス(今回は、iPhone15 Pro, iOS 18.2)
設定
Vuforiaアカウント作成
Vuforiaを利用するにはアカウントを作成する必要があります。
まずはアカウントを作成しましょう。
https://developer.vuforia.com/auth/register
アカウント作成が完了したら、次はライセンスのキーコードを取得します。
「Generate Basic License」から新しく発行しましょう。
https://developer.vuforia.com/develop/licenses
Vuforia Model Target Generatorを用意
Vuforiaで立体マーカーを扱うには、「Vuforia Model Target Generator」というツールでマーカーにするモデルを登録する必要があります。
DownloadsページからModel Target Generatorをダウンロードしてインストールします。
Model Target Generatorを起動させると、次のような画面になります。
Create New Modelから新しいターゲットを作成します。
- CAD Model
- 読み込む3Dモデルを設定します(対応しているフォーマットはこちら)。
- Model Target Name
- モデルターゲットの名前を設定します。
- Location
- 保存場所を設定します。
次に進むと3Dモデルが読み込まれます。
ここではモデルターゲットとなる3Dモデルの設定を行っています。
モデルの向き、モデルのスケーリング単位、色から外観を特定するかなど、トラッキングに必要な情報を設定できます。
今回は以下のような設定を行っています。
- モデルの上向ベクトル: Y
- モデルの単位: デシメートル
- 色分け: 色分けなし
- 複雑度: 高
- トラッキングを最適化: デフォルト
- ガイドビュー: アドバンスビューを作成 → フル360°ガイド設定
設定が完了したら、モデルターゲットがDatabasesに追加されます。
追加されたモデルターゲットのTRAINを選択し、指示に従って進めます。
TRAINのプロセスはやや時間がかかるようです。
TRAINが完了すると、先ほどのTRAINボタンがEXPORTに変わります。
これを選択すると、Unity Packageフォーマットとしてダウンロードできます。
ダウンロードができたら、次はUnityの設定に進みます。
Unityでの設定
DownloadsページからVuforia Engineを選択し、Download for Unityで必要なパッケージをダウンロードします。
UnityのAssets > Import Package > Custom Package
から、先ほどダウンロードしたパッケージをインポートします。
インポート後、ヒエラルキーを右クリックしてVuforia Engineの項目が増えていることを確認します。
ヒエラルキーにある既存のMain Cameraを削除し、Vuforia Engineの項目からAR Cameraを追加します。
AR CameraのVuforia BehaviorというスクリプトコンポーネントにあるOpen Vuforia Engine Configurationというボタンを押すと、ライセンスキーを登録する項目が表示されるので、先に取得していたライセンスキーコードを登録しておきます。
ここまでできたら、Model Target GeneratorからExportしてきたパッケージをAssets > Import Package > Custom Package
からインポートします。
インポートしたモデルターゲットをヒエラルキーに追加するために、Vuforia Engineの項目からModel Targetを選択して追加します。
追加すると先ほどインポートしたモデルターゲットが表示されます。
今回は分かりやすく赤い矢印をヒエラルキーに追加して、iOSにビルドして確認してみます。
実機で確認する
実際に立体物をカメラを通して確認してみます。
トラッキングするとしっかりと追従して表示されるのが確認できます。また、BasicプランのためVuforiaのウォーターマークが付いています。
AR FoundationとVuforiaを比較
見栄えとしてはどちらもUnityを通しているので大きな差はありませんし、処理速度についても特に違いはないように思います。
トラッキングのしやすさについては、Vuforiaの方がAR Foundationよりも良いと感じましたが、AR Foundationで設定する.arobject
をより上手にスキャンしたものを用意すれば、トラッキングがしやすくなる可能性があります。
また、設定のしやすさについては、AR Foundationの方がサンプルがあったため即座に設定できましたが、Vuforiaも提供されるツールなどを用いるものでガイドはしっかりしており非エンジニアでも設定はしやすいものになっている印象でした。
大きな違いとしては、AR Foundationは.arobject
、Vuforiaは3Dモデルデータ
のファイルフォーマットでモデルターゲットを生成するという点です。
.arobject
はiOSによるスキャンデータが必要になり、これが障壁になるかもしれません。
また、Vuforiaについても3Dモデルデータ
を用意する必要があり、これも障壁となることがあります。
しかし近年はスマートフォンを利用したスキャンからobjデータなどをエクスポートできるようになっていますので、それほど大きな障壁にはならないかもしれません。
終わりに
今回は、ARで読み取るマーカーを立体物としたオブジェクトトラッキングを2つ試しました。
画像などのARマーカーとは異なり、手順やマーカーのフォーマットが異なるため、まだ難しい部分がありますが、前述の通りスマホによるスキャンの普及が進んでいるため、これらの設定も簡単にできるようになれば、開発の難易度も大きく下がるのではないかと思います。
現在はQRコードなどのマーカーが主流ですが、これらがマーカーレスに置き換わるようになれば、マーカーを印刷したり探してスキャンする必要もなくなり、よりスムーズなフローになると思います。
今回試した立体物のARマーカーも非常に有用なソリューションだと改めて感じました。同じような技術にVPS(Visual Positioning System)などもあり、この分野が当たり前のものとなるよう、知見を広げていけたらと思います。
同じ分野を学んでいる方々のお役に立てれば幸いです。