更新日時 | 更新内容 |
---|---|
2024/4/5 | AR Treasure Map チュートリアル公開 |
2023/12/25 | AR Treasure Map 初回リリース |
- 本サンプルプロジェクトでは、PLATEAU 3D都市モデルおよびAR機能を活用した観光ARガイドアプリケーションを体験することができます。
- AR空間内に配置された3Dオブジェクトを探しながら目的地を目指すアプリケーションです。
- 本サンプルプロジェクトを改変し、任意のPLATEAU 3D都市モデルを利用することで、予め用意された地域以外でも同様の体験を提供することが可能です。
※このサンプルプロジェクトの主要機能の実装例をチュートリアルで紹介しています。実装方法については、こちらのチュートリアルをご参照ください。
- Unity 2021.3.30f1
- URP (Universal Rendering Pipeline)
- ARコンテンツを空間に配置する機能
- 3D都市モデルをオクルージョン用のモデルとして使用するシェーダー設定
- ランタイムで3D Tiles形式の3D都市モデルをストリーミングする機能
- 自己位置推定機能
- 手動での位置調整機能
以下は本プロジェクトに使用した開発環境です。
- Windows11
- macOS Ventura 13.2
- Android 13
- iOS 16.7.1
- メニューより "File" > "Build Settings" を選択し Build Settings ウィンドウを表示します。
-
プラットフォームがAndroidかiOS以外になっている場合は、アプリケーションを動作させる端末に合わせてプラットフォームを選択し、画面下部にある「Switch Platform」ボタンからプラットフォームを切り替えます。
-
Build Settings ウィンドウの画面下部にある「Build」ボタンを押下し、ビルドの出力先を選択してビルドを開始します。iOSの場合は Xcode プロジェクト、Androidの場合は .apk ファイルもしくはAndroid Gradleプロジェクトを生成します。
ビルドが完了したら、各プラットフォームに合わせて端末へアプリケーションをインストールしてください。
- このアプリケーションはAR空間に表示されるメダルを順序通り集めてゴールを目指すゲームアプリケーションです。
- 表示されるメダルはアプリケーションの自己位置推定により、予め設定された緯度経度上に配置されます。
- プレイヤーはメダルに近づくことでメダルを獲得することができます。
- 開始地点のメダルを獲得するとプレイヤーが次に獲得するメダルまでの道のりがAR空間上に表示されます。
- ゴールに配置されたメダルを獲得するとゴール達成を知らせるダイアログが表示され、アプリケーションが終了します。
サンプルプロジェクトでは東京銀座のGINZA SIX周辺の以下の地点にメダルと目的地を配置しています。
実際に位置合わせを行う際には、こちらのマーカー画像をご利用ください。
- ビルドしたアプリケーションを開くと、オープニング画面が表示されます。「始めましょう」のボタンをタップします。
- PLATEAU 3D都市モデルの表示方法を選択します。
この機能は3D都市モデルの表示方法の実装例を紹介するために用意したものであり、どの方法でも体験できる内容は同じです。
いずれかの表示方法を選択すると、メダル集めのメインシーンへ遷移します。- インポートしたモデル
- Unityエディターで事前にインポートした3D都市モデルを表示します。
- ストリーミングモデル
- PLATEAU 3D都市モデルを実行時にストリーミングで取得して表示します。
- ARマーカーモデル
- Unityエディターで事前にインポートした3D都市モデルにARマーカーによる自己位置推定機能 (
PlateauARMarkerCityModel
) を設定しています。実行時、ARマーカーを読み取って3D都市モデルを表示します。
- Unityエディターで事前にインポートした3D都市モデルにARマーカーによる自己位置推定機能 (
- インポートしたモデル
- それぞれの表示方法に応じた位置合わせの初期化処理が開始されます。位置合わせが完了すると、周囲にメダルなどのARコンテンツが表示されます。
- インポートしたモデル、ストリーミングモデルでは周辺建物にカメラを向けて、自己位置推定を行います。
- 天候などによっては位置合わせ処理が完了しないことがあります。別の角度から建物にカメラをかざしてください。
- ARマーカーモデルでは用意されたARマーカーを読み取り、3D都市モデルを表示させてください。
- ARマーカーはプリントなどを行い、下記の地図上の位置に向きも合わせて配置してください。印刷用のサンプルのARマーカー画像はサンプルフォルダの "ar_marker.pdf" をご利用ください。
- インポートしたモデル、ストリーミングモデルでは周辺建物にカメラを向けて、自己位置推定を行います。
- 開始点に設定されているGINZA SIXの入り口に配置されているメダルを最初に獲得すると次のメダルまでの道筋が表示されるので、目的地までメダル集めを進行してください。メダルは近づくことで獲得することができます。
メダルを獲得すると、次のメダルの位置までの道筋が示されます。
- 最後のメダルを集めると、メダル集め終了ウィンドウが表示されます。
- 「終了」ボタンをタップすると、最初の画面に戻ります。
別の場所で利用したい場合は、利用する場所に合わせてPLATEAU 3D都市モデル変更する必要があります。
事前インポート形式では、シーン上にPLATEAU SDKでインポートした3D都市モデルをコイン集めで利用する3D都市モデルとして配置することができます。配置された3D都市モデルは Google Geospatial API を用いてユーザーの現在位置の緯度経度を基準に位置合わせが行われ、アプリケーション上で正しい位置に3D都市モデルが表示されます。
ストリーミング形式と異なり、アプリケーション利用時のネットワーク速度が遅い場合やダウンロード量を抑えたい場合はこちらの形式をご利用ください。
プロジェクトから "Assets/Scenes/Main" シーンを開きます。
ヒエラルキーから "PreimportedCityModel" の中にある "GinzaImportedCityModel" を削除し、PLATEAU SDK でインポートした別の3D都市モデルを "PreimportedCityModel" 内に配置します(インポートの方法は PLATEAU SDK for Unityの使い方 をご確認ください)。
次に、 "PreimportedCityModel" オブジェクトにアタッチされている Plateau AR Positioning
コンポーネントをインスペクタで開き、インポートした3D都市モデルオブジェクトを Plateau City Model
フィールドに設定してください。
ストリーミング形式では Cesium 3D Tiles を利用します。3D Tiles の緯度・経度情報を設定し、コイン集めで利用する3D都市モデルを構築します。Cesium 3D Tiles はユーザーがアプリケーションを利用する際に、ユーザーの現在位置に合わせて逐次3D都市モデルをダウンロード(ストリーミング)し、アプリケーション内に3D都市モデルを表示します。
ヒエラルキーから "StreamingCityModel" の中にある "CesiumGeoreference" をクリックし、インスペクタを開きます。
Latitude
(緯度) と Longitude
(経度) をアプリケーションを利用する場所のものに変更してください。緯度経度は地図サービスなどを利用して取得することができます。
次に、"CesiumGeoreference" 内の "GinzaCesium3DTiles" をインスペクタで開き、 Cesium 3D Tileset
コンポーネントの URL
に利用する地域のURLを plateau-3D Tiles-streaming から選んで設定してください。
"StreamingCityModel" をアクティブにして、シーン上に設定した場所の3D都市モデルが表示されることを確認してください。
シーン上にPLATEAUSDKモデルをインポートし、またPLATEAUモデルの中にARマーカーも配置することで、 その位置関係の関連付けを行い、ランタイムで位置関係を解決しPLATEAUモデルを表示します。 ARマーカー形式では事前インポート形式と同様に、シーン上にPLATEAU SDKでインポートした3D都市モデルをコイン集めで利用する3D都市モデルとして配置することができます。配置された3D都市モデルに位置合わせ用のARマーカーを設定することで、アプリケーション利用時にARマーカーを読み込むことで位置合わせを行うことができます。
この形式では3D都市モデルは事前にアプリケーションに組み込まれ、位置合わせはARマーカーのみで行われるため、ネットワーク環境がない場合などでも利用することができます。
ヒエラルキーから "ARMarkerBasedCityModel" > "CityModels" > "GinzaImportedCityModel" を削除し、事前インポート形式と同様に任意の3D都市モデルをインポートして削除したオブジェクトと同様に "CityModels" 内に配置します。
次に、自己位置推定に利用するARマーカーの配置場所を変更します。サンプルプロジェクトでは "ARMarkerBasedCityModel" の中にある "ARMarkerPoint" をARマーカーの位置として利用しています。
ARマーカー位置の設定方法はマーカによる3D都市モデルの位置合わせ機能をご確認ください。
本サンプルではAR Extensionsの機能を利用し、複数のマーカーを配置した位置合わせを実施することも可能です。
下記のフローをご確認ください。
1.新しいマーカーを"Referenced Image Library"に追加します。
- 追加したマーカーをヒエラルキー内にある“PlateauARMarkerCityModel”に追加します。
- ヒエラルキー内において"ARMarkerPoint"を追加した数分だけ複製します。
- “PlateauARMarkerCityModel”の中でそれぞれのARMarkerの中にARMarkerPointをアタッチします。
- それぞれのARMakerPointをシーンビューの中でPLATEAU都市モデル中に配置して行きます。
実際に実空間上でスキャンする想定の場所に配置してください。
参考までに、本サンプルプロジェクトでは下記の場所にマーカーを複数配置しています。
新しく設定した3D都市モデルに合わせ、メダル(チェックポイント)の位置を変更します。それぞれの表示方法に対応したゲームオブジェクトの中にある "CheckPoints" の中にメダルの位置を設定するオブジェクトが配置されているので、新しい3D都市モデルの形状に合わせてルートを設定します。チェックポイントは2種類存在します。
集める対象のメダルが表示され、プレイヤーが必ず経由する必要のある地点です。サンプルではメダルにチェックポイントが示す場所にある建物や地名を表示しています。
最後のチェックポイント(最後に獲得したメダルの地点)から次のチェックポイントまでの経路を表示するための地点です。チェックポイントのみの設定でも経路は表示されますが、曲がり角などがあり、経路が直線でない場合に利用します。
チェックポイントおよび経由点は "CheckPointManager" によって管理され、 Check Points
フィールドにチェックポイントを追加・削除することで経由を設定することができます。 "CheckPointManager" では Check Points
に登録されている順序を経路の順序としてチェックポイントを管理します。 Check Points
に登録されている中で最後のチェックポイントにユーザーが到達するとメダル集めが終了したことを示すダイアログが表示されます。
なお、サンプルでは提供している3つの形式ごとに "CheckPointManager" が用意されているため、利用する形式に合わせて "CheckPointManager" を選択してください(それぞれの形式のルートオブジェクトのヒエラルキーに配置されています)。
新しいゲームオブジェクトからチェックポイントを追加するには別途コンポーネントなどの設定が必要になるため、チェックポイントを追加する場合はサンプルで提供しているシーンの中にある "CheckPoint" を複製してご利用ください。
チェックポイントにサンプルで表示しているオブジェクト(メダル)を変更する場合、CheckPointObject
コンポーネントの以下のフィールドを設定することでチェックポイントのデザインを変更することができます。
最後のチェックポイントから次のチェックポイントへの経路に表示されるナビゲーションラインのデザインを変更したい場合は、CheckPointManager
コンポーネントの以下のフィールドに任意のプレハブを設定することでデザインを変更することができます。
参考までに、本サンプルプロジェクトでは以下のプレハブを利用しています( "Assets/Prefabs/PathPoint" )。
本サンプルプロジェクトでは3D都市モデルを別のオブジェクト遮蔽するために活用しています。別の地域の3D都市モデルをインポートした場合は、3D都市モデルのゲームオブジェクトのレイヤーを "Occuluder" に設定することで遮蔽用のオブジェクトとして利用することができます。レイヤーを変更する際はルートのオブジェクトだけでなく子オブジェクトのレイヤーも再帰的に変更してください(ルートオブジェクトのレイヤーを変更すると子オブジェクトのレイヤーも同様に変更するかどうかを確認するダイアログが表示されます)。
なお、オクルージョンおよび PLATEAU AR Extensions を使ったオクルージョン機能の詳細は以下のドキュメントを参照してください。
※このサンプルプロジェクトの主要機能の実装例をチュートリアルで紹介しています。実装方法については、こちらのチュートリアルをご参照ください。
- 本リポジトリはMITライセンスで提供されています。
- 本システムの開発はユニティ・テクノロジーズ・ジャパン株式会社が行っています。
- ソースコードおよび関連ドキュメントの著作権は国土交通省に帰属します。
- 本ツールはベータバージョンです。バグ、動作不安定、予期せぬ挙動等が発生する可能性があり、動作保証はできかねますのでご了承ください。
- パフォーマンスの観点から、3km²の範囲に収まる3D都市モデルをダウンロード・インポートすることを推奨しています。
- インポートする範囲の広さや地物の種類(建物、道路、災害リスクなど)が量に比例して処理負荷が高くなる可能性があります。
- 本リポジトリの内容は予告なく変更・削除される可能性があります。
- 本リポジトリの利用により生じた損失及び損害等について、国土交通省はいかなる責任も負わないものとします。