はじめに
ArcGIS Runtime SDK では バージョン 100.6 から AR (拡張現実)アプリの開発を実現するために AR ツールキットを提供しています。AR ツールキットは、オープンソースのツールキットとして、「Android/iOS/.NET (Xamarin)」 の3つのプラットフォームをサポートし、GitHub で公開されています。ArcGIS Runtime SDK の SceneView と AR ツールキットを使用することで AR アプリを開発することができます。
※ オープンソースのツールキットは、AR だけではなく、地図アプリによく使用されるスケールバー、凡例、レイヤー リスト、属性テーブル、計測ツールなどの機能が UI 込みで提供されているため、地図アプリ開発を簡素化できます。ツールキットはサポート対象外ではありますが、オープンソースのためコードをダウンロード・改修してご使用することが可能です。
AR ツールキットで対応している端末は、iOS と Android になります。iOS は、ARKit を使用しているため、ARKit に対応している端末が必要になります。また、対応している iOS のバージョンも iOS 12 以上になります。詳細については、システム要件をご参照ください。
Android では、AR Core を使用しており、端末は ARCore をサポートしている必要があります。詳細については、Google の ARCore supported devices をご参照ください。また、対応している Android のバージョンについては、システム要件をご参照ください。
今回は、AR が提供するユースケースと AR ツールキットを使用したサンプルアプリケーションのビルドとデプロイまでの手順をご紹介していきたいと思います。ビルドとデプロイについて、開発環境には Visual Studio for Mac を使用し、SDK には ArcGIS Runtime SDK for .NET (Xamarin.Forms) を使用した例をご紹介します。
AR が提供するユースケース
ArcGIS Runtime SDK の AR では、Flyover、Tabletop、World-scale の 3 つのユースケースを実現することができます。
Flyover:
仮想世界の窓としてデバイスにシーンを表示し、表示したシーン内を移動することができます。表示されるシーンの範囲はデバイスの位置と向きに応じて変わります。また、Flyover では、対象のエリア上に起動時の座標を設定することができます。ユーザーは画面をタッチしてシーンの表示範囲を変更したり、デバイスを移動・回転させて仮想世界を移動することができます。
Tabletop:
テーブルの上など、現実世界の面に3次元模型のような比較的小さなスケールのシーンを可視化します。シーンのコンテンツは現実世界のカメラの映像に重ね合わせられます。そのため、ユーザーはテーブルの周りを移動して、さまざまな角度からシーンを見ることができます。この機能は遠隔地を三次元で参照したり、現場の立地計画、場所選定、リモートでのアセスメントに役立ちます。
World-scale:
現実世界の座標にシーン内の仮想的なデータとカメラが映す現実のデータがシーン内に表示されます。シーンが認識する3次元のデータの位置関係とカメラの被写体の位置関係をマッチさせることによって、現実世界の位置関係にマッチしたシーンを投影することができます。この機能はオフィスや現場など、現実世界であればどこでもリアルな地理データを可視化するのに最適です。また、固定資産管理、資源管理、ロケーションインテリジェンスの活用にも当該機能が役に立ちます。
AR ツールキットのサンプルアプリケーションのビルドとデプロイ
AR ツールキットのサンプルアプリケーションでは、Flyover、Tabletop、World-scale の3つのユースケースのサンプルが提供されています。AR アプリの場合はカメラを使用するため、シミュレーターでは確認することができないため、実機で確認する必要があります。今回は、iOS、Android で実機を使用したサンプルアプリケーショのビルドとデプロイまでの手順についてご紹介していきます。
今回使用した開発環境や SDK のバージョンは以下のとおりです。
1. Visual Studio for Mac によるプロジェクトの起動
GitHub からソースファイルを任意の場所にクローンして、Visual Studio for Mac で「arcgis-toolkit-dotnet/src/Esri.ArcGISRuntime.ARToolkit.sln」を選択して開きます。
起動後、パッケージの復元が始まります。必要に応じてパッケージのインストールが求められます。
2. iOS 実機でのビルドとデプロイ(事前準備)
iOS で iPhone や iPad の実機にデプロイする場合は、プロビジョニングプロファイルというものが必要になってきます。これは、Visual Studio for Mac では作成できないため、Xcode を使って作成する必要があります。まず、Mac 本体にデプロイ対象の端末を接続しておきます。そして、Xcode を起動し、Create a new Xcode project を選択して新規プロジェクトを立ち上げます。Single View Application を選択して、Product Name には任意の名前 (ここでは、ARToolkitSampleApp と入力)を入力して、プロジェクトを作成します。
次に Xcode と Visual Studio for Mac で作成したバンドル識別子を合わせます。Xcode のバンドル識別子に対応するプロビジョニングプロファイルを実機に配置しますので、Visual Studio for Mac で異なるバンドル識別子を設定している状態ですと信頼されている状態にならず実機でデバックすることができません。Visual Studio for Mac のバンドル識別子 (com.esri.ARToolkit.Forms) を Xcode の Bundle Identifier に入力します。
Visual Studio for Mac (バンドル識別子)
Xcode (Bundle Identifier)
Xcode でのプロジェクトを選択して Signing & Capabilities のカテゴリで、プロビジョニングプロファイルが作成されているか確認することができます。プロビジョニングプロファイルが正常に作成された状態で端末に対してビルドが成功すれば問題はありません。
3. iOS 実機でのビルドとデプロイ(本番)
事前準備が完了したらVisual Studio for Mac から実機 (iPhone 11) に対してビルドとデプロイを行います。
AR ツールキットでは、ソリューションとして Xamarin.Forms、Xamarin.iOS、Xamain.Andorid が提供されています。今回は、Xamarin.Forms を使用して、iOS と Android のビルドとデプロイを行います。はじめに iOS をターゲットとするため、ARToolkit.Samples.Forms.iOS を選択します。そして、Debug | iPhone を選択して、接続している端末を選択します。
そして、次に Visual Studio for Mac で iOS バンドル署名を設定します。ARToolkit.Samples.Forms.iOS を選択して、左クリックボタンを押下し、メニューからオプションを選択します。
プロジェクト オプションが表示されますので、iOS バンドル署名を選択します。iOS バンドル署名において、署名とプロビジョニング プロファイルは Xcode で設定した内容を選択して、OK をクリックします。
ここまで準備が完了したら端末に対してビルドを開始します。▶ボタンをクリックすることでビルドが始まります。
アプリの配置が終了すると、以下のような画面が立ち上がります。これでデプロイは完了です。
4. Android 実機でのビルドとデプロイ(本番)
次に Android に対してビルドとデプロイを行います。Mac 本体に Android 端末を接続します。そして、ソリューションの ARToolkit.Samples.Forms.Android を選択します。そして、Debug を選択して、接続している端末を選択します。Android では端末が対応しているバージョンであれば接続することでビルドからデプロイまですぐに行うことができます。
▶ボタンをクリックすることでビルドが始まります。
iOS と同様にビルドに成功すると端末に対しての配置が始まります。
アプリの配置が終了すると、以下のような画面が立ち上がります。これでデプロイは完了です。
AR ツールキットのサンプルアプリケーション
サンプルアプリケーションでは、以下の 4 つの機能を提供しており、該当のソースファイルは、ARToolkit.Samples.Forms の Samles にそれぞれございます。
Continuous GPS Full-scale AR:背景地図とフィーチャ サービスを表示し、デバイスの GPS を使用して、継続的に現在地に原点をスナップするサンプルです。 AR で表示されるデータは、非常に高精度の GPS と優れたコンパスの位置合わせで実現することができます。以下の動画は、こちらのサンプルを使用した例になります。
※上記は ArcGIS Runtime SDK for .NET ツールキットを利用して、Xamarin.Forms で開発されたアプリケーションを iOS をターゲットにビルドしたものを使用しております。
※動画は iOS 端末にて撮影されたものです。
Earth:地球全体を端末上に浮かび上がらせ、操作することができるサンプルです。
Camera Tracking Disabled:ARCore/ARKit に依存せず、デバイスのモーションセンサーに基づいて3D 地形を見るための機能のみを備えたサンプルです。
Tap-to-place 3D Model:端末の画面をダブルタップして、そのタップした画面にシーンを配置することができる Tabletop の体験を実現しているサンプルです。
データは、Esri が用意しているものを使用していますが、例えば、Continuous GPS Full-scale AR では、フィーチャ サービスを目的のデータに置き換えることで、そのデータは AR アプリで参照することができます。各サンプルアプリケーションで使用されている API などの詳細については、ArcGIS Runtime SDK for .NET の Display scenes in augmented reality や GitHub の Augmented Reality View をご参照ください。
まとめ
今回は、AR ツールキットの紹介と ArcGIS Runtime SDK for .NET (Xamarin.Forms) を使用して AR ツールキットでサンプルアプリケーションのビルドとデプロイまでの手順をご紹介しました。Xamarin.Forms を利用することで、共通のソースファイルで、Android と iOS 版の AR アプリを開発することが可能です。また、AR ツールキットで紹介されているサンプルアプリケーションは、Android と iOS 版でもそれぞれ同じものが提供されていますので、ご利用することが可能です。詳細については、ArcGIS Runtime SDK for Android と ArcGIS Runtime SDK for iOS の Display scenes in augmented reality をご参照ください。
ぜひ、これを機会に AR アプリの開発をはじめるきっかけとなれば幸いです。
関連リンク