投稿日更新日

【Unity】Mapbox Maps SDK for Unityで3D地形マップを召喚する

はじめに

今回は、Mapbox Maps SDK for Unityというパッケージを使って、Unity上に3D地形マップを召喚してみます。 Mapboxは、さまざまなプラットフォームで利用できるマップAPIです。Google Mapsの有料化に伴って、近年勢いを増しているナウなマップAPIです。

そんなMapboxですが、なんとUnityにも対応しています。これは試してみないと!と思いました。

検証環境

  • 機種: MacBook Air(m1)
  • OS: MacOS Monterey(12.3.1)
  • メモリ: 8GB
  • Unity: 2021.2.16f1(SILICON)
  • mapbox-unity-sdk: v2.1.1

事前準備

  1. Mapboxのアカウントを作成
  2. Mapboxのアクセストークンを取得
  3. mapbox-unity-sdkのパッケージをダウンロード
  4. Unityで空の3Dプロジェクトを作成

パッケージをインポートする

ダウンロードしたパッケージのファイルをダブルクリックして開きます。

mapboxパッケージインポート(間違い)

と、このままインポートしたいところですが、エラーになります!

エラー

Assets/GoogleARCore/SDK/InstantPreview/Scripts/InstantPreviewManager.cs(32,23): error CS0234: The type or namespace name 'SpatialTracking' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?) Assets/GoogleARCore/SDK/Scripts/ARCoreBackgroundRenderer.cs(43,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/ARRemote/Scripts/ARRemoteEditorInterface.cs(40,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/Scripts/ARKitInterface.cs(26,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?) Assets/UnityARInterface/Scripts/ARCoreInterface.cs(51,17): error CS0246: The type or namespace name 'ARBackgroundRenderer' could not be found (are you missing a using directive or an assembly reference?)

なんかARうんぬんのエラーが。。。

解決方法

パッケージをインポートするときに、ARっぽいモジュールを全て無効にします。

mapboxパッケージインポート(正解)

MapboxでARしたかった方すみません。根本的な解決方法はまた調査します。。

セットアップ

インポート完了後、セットアップ画面が立ち上がります。 Mapboxのアクセストークンを入力欄に入れてSubmitをクリックしましょう。

設定が終わったらセットアップ画面は閉じてOKです。

マップボックスのセットアップ

普通のマップを召喚する

シーンは、元からあるScenes/SampleSceneを使います。

最初にMapbox/Prefabs/Mapをシーンにドラッグして、プレハブのインスタンスを生成しましょう。

設定

マップの各種設定をしていきます。

General > Location

緯度経度を設定します。フォーマットは緯度,経度です。ここでは、長崎駅の32.750297,129.870348 にしました。

General >Zoom

ズームの度数です。ここでは、13にしました。

General >Extent Options, West, North, East, South

マップの広さです。ここでは、Extent OptionsをデフォルトのRange Around Center、東西南北それぞれを5にしました。

Image > Data Source

マップの見た目を変えられます。ここでは、Mapbox Satelliteにしました。

現状のシーンを確認してみると、こんな感じになってます。

マップボックスの例(平面)

3D地形マップを召喚する

設定

ここから地形を描画するように設定していきます。

Terrain > Elevation Layer Type

Terrain With Elevationに設定します。他にもLow Polyバージョン等も設定できます。

Terrain > Exggeration Factor

地形の標高の縮尺です。1に設定しました。

Terrain > Others > Sample Factor

サンプル数です。大きくする程、精度が高くなります。ここでは、120に設定しました。

下の画像のように、実際の地形を反映した3D地図を表示できました。

mapbox_3dmap

コライダーで当たり判定も追加できる

Terrain > Add Colliderでマップにコライダーを追加できます。

こんな感じで、ボールが当たっているのがわかると思います。

mapboxコライダー

おわりに

今回は、MapboxのUnity SDKを使って3D地形マップを召喚してみました。

コライダーも使えることから、かなり色々な応用ができると思います。 是非ゲーム開発などにご活用ください。

関連記事

に投稿

【Unity】MediaPipeUnityPluginを使って超簡単に指認識をM1 Macで試す

に投稿

【Unity】M1 Macで"The Progressive CPU lightmapper is not supported on Apple silicon, switching to the Progressive GPU lightmapper."と警告が出たときの対処法

に投稿

【DOTS】Unity Physicsで大量のオブジェクトの物理演算を試す

に投稿

【Unity】Mapbox SDKでマップ上の任意の緯度経度の座標にオブジェクトを配置する

に投稿

【DOTS】Unity Physicsの公式デモをさわってみる

© 2022 はるとんのブログ