投稿日更新日

【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】Mapbox SDKでマップ上の任意の緯度経度の座標にオブジェクトを配置する

© 2022 はるとんのブログ