追記:ArcGIS Maps SDK for Unity 及び ArcGIS Maps SDK for Unreal Engine は、それぞれ2022年6月/7月に米国Esri社からリリースされました。詳細はこちらの記事をご覧ください。
以前、「Unreal Engine・Unity の中で地球をハンドリング !?」のブログ記事でゲームエンジン用の SDK である ArcGIS Maps SDK for Unity/Unreal Engine の概要について紹介しました。
この記事では、実際に SDK の使い方を説明しながら、ArcGIS Maps SDK でできることを紹介していきます。
セットアップ
まず専用のプラグインをインストールします。この記事では Unity での手順を紹介します。Unreal Engine での手順は下記のドキュメント(英語)をご覧ください。
ArcGIS Maps SDK for Unreal Engine: Add the plugin to a new project:
https://developers.arcgis.com/unreal-engine-sdk/install-and-set-up/add-the-plugin-to-a-new-project/
・プラグインのダウンロード
現在、ArcGIS Maps SDK はベータ版が公開されており、誰でもアカウントを作成(無償)して ArcGIS Maps SDK のベータ プログラムに参加することで入手できます。
ベータ プログラムに参加すると Unity と Unreal Engine 用のプラグインをそれぞれダウンロードできます。Zip ファイルをダウンロードできるので、任意の場所に解凍しておきます。
・プラグインのインストール
Unity で High Definition Render Pipeline または Universal Render Pipeline のプロジェクトを作成します。ここでは High Definition Render Pipeline を使用します。
プロジェクトを作成したら、Unity のメニューから [Assets] -> [Import package] -> [Custom package] を選択し、ダウンロードした ArcGISMapsSDK.unitypackage をインポートします。
続いて、[File] -> [Open Scene] を選択して「<プロジェクト フォルダ\Assets\ArcGISMapsSDK\Samples\HDRP\PrefabScene」にある PrefabScene.unity を開きます。
※ Universal Render Pipeline プロジェクトを使用している場合は、「<プロジェクト フォルダ\Assets\ArcGISMapsSDK\Samples\URP\PrefabScene」にあるファイルを使用します。
[Play] ボタンで再生すると、デフォルトで設定されているニューヨークの地図と建物データが表示されます。
SDK の設定
Hierarchy ウィンドウで PrefabScene_NY を選択し、Inspector ウィンドウで表示する地図データ等の設定をします。
・カメラ位置の設定
[CAMERA LOCATION] で初期表示位置を設定できます。緯度(Latitude)、経度(Longitude)、高度(Altitude)を指定します。
・背景地図の設定
[BASE MAP] で表示する地図を選択できます。道路地図(Streets)や衛星画像(Imagery)等、いくつかの種類が用意されています。また、[Terrain Elevation] を選択すると標高データを読み込んで、地形を表現することもできます。
ここでは [CAMERA LOCATION] で富士山が表示されるように緯度・経度・高度(Latitude: 35.300626、Longitude : 138.627363、Altitude: 5000)と、背景地図に衛星画像(Select Base Map: Imagery)、[Terrain Elevation] を有効に設定して再生した状態です。
[VIEW MODE] では Global Scene と Local Scene のいずれかを選択できます。Global Scene を選択すると地球が球体で表示され、Local Scene を選択すると地球が平面で表示されます。
左が Global Scene、右が Local Scene
・3D データの表示
Web 上の URL またはローカルファイルを指定して、位置情報を持った独自の 3D データを表示できます。これには ArcGIS Online や ArcGIS Pro 等のソフトウェアが別途必要になります。サンプルの PrefabScene にはデフォルトで ArcGIS Online で公開されているサンプルのニューヨークの建物の 3D データが表示されています。
3D データを追加するには、[ADD DATA] で URL を指定するか、ローカルにあるファイルを参照します。
下記は、国土交通省が進める 3D 都市モデル整備・活用・オープンデータ化のプロジェクトである PLATEAU で整備されている 3D 都市モデル(東京都23区)を ArcGIS Online で公開し、その Web サービスを表示している状態です。
実際に試す場合は、[ADD DATA] の URL にWeb サービスのレイヤーの URL を設定します。
Tips:
PLATEAU の 3D都市モデルは CityGML の形式で公開されていますが、ArcGIS で利用可能な形式(ファイル ジオデータベース)へ変換するツールが GitHub で公開されています。変換したファイル ジオデータベースは ArcGIS Pro のツールを使用してArcGIS Online 上に Web サービスとして公開できます。Web サービスは 3D データを高速に表示可能なシーンレイヤーという形式で公開されます。Web サービスとして表示するため、OBJ や FBX 形式等に変換してローカルデータを表示するのに比べて管理も容易です。
・Unity の 3D オブジェクトを地図上に表示
次に Unity の 3D オブジェクトを地図上に追加してみます。
ファイル メニューで、[GameObject] → [3D Object] → [Cube] を選択します。Inspectorウィンドウで [Add Component] → [Scripts] → [ArcGISMapsSDK.Components] →[ArcGIS Location Component] を選択します。
ここでカメラの初期表示位置の時と同様に、3D オブジェクトを表示する位置(緯度、経度、高度)を設定します。下記は新宿駅付近に Cube オブジェクトを表示した状態です。
本記事で設定した項目は API を使用しても設定できます。SDK は現在ベータ版で機能も限られていますが、今後のリリースでは、ArcGIS で管理する位置情報を持った地物にアクセスして属性情報を取得するような機能もサポートされる予定です。
SDK の詳細は下記ドキュメントで紹介されています。
プレリリースは夏頃、正式リリースは 2021 年内に予定されています。2021 年 9 月にプレリリース版(Unity/Unreal Engine)がリリースされています。正式リリースは 2022 年 Q1 に予定されています。新しいリリース情報は、またブログ記事で紹介していきたいと思います。2022年6月(Unity)/7月(Unreal Engine)に正式リリースされました。詳細はこちらの記事をご覧ください。
※ ArcGIS Maps SDK for Unity/Unreal Engine はベータ プログラムとして米国Esri社が提供しているものであり、ESRIジャパンにおける製品保守サポート等の対象外です。ご質問やご不明点はベータ プログラム ページの User Forums から直接お問い合わせをお願いいたします。
■関連リンク
ダウンロードしたZIPファイルがUnityパッケージになリません。なぜでしょうか?
追記:自己解決 MacOS標準のアーカイブユーティリティの不具合でした。アプリを変更し無事パッケージファイルとして解凍できました。
@RyotaIto さん