Unity のメモ with mapbox

Unity で日本地図を表示するにはどうしたらいいのか。ググったら、mapbox というサービスを勧める記事が見つかったので、試してみる。

アカウントを作る

www.mapbox.com

右上の Sign Up からアカウントを作る。メールが届くのでリンクを開くと、アカウントのページが表示される。

https://account.mapbox.com/

f:id:sardine:20210602230409p:plain
mapbox アカウントページ

このページから、SDK をダウンロードしたり、アクセストークンを取得したりできる。

SDK のダウンロード

アカウントページで Unity 用の SDK を選択すると、ダウンロードページが開く。そこからファイルをダウンロード。今日時点だと mapbox-unity-sdk_v2.1.1.unitypackage というファイル名だった。サイズは 50MB ちょっと。これを適当なフォルダに保存する。

インポート

ダウンロードページにはその後の手順も書かれていた。Unity でプロジェクトを開いて、メニューから Assets > Import Package > Custom Package を選択し、先ほどダウンロードしたファイルを選ぶ。パッケージの内容がツリーで表示されるので、そのまま Import ボタンを押す。完了すると、Unity のメニューに mapbox が追加される。

……はずだけど、僕の環境ではメニューに変化がなかった。深く考えずに Unity を再起動したところ、「スクリプトにエラーがあるので、Unity をセーフモードで開いて修正して」という趣旨のメッセージが表示された。そのままセーフモードに入ってみると、見つからないクラスがあるようだ。

ググってみたところ、mapbox SDK for Unity の Issue に、まさに自分と同じメッセージのスクリーンショットが貼られていた。

この Issue の他のコメントによると、インポート時に AR 関係のパッケージを外せばいいようだ。

f:id:sardine:20210602233158p:plain:w250
AR 関係を除外してインポート

これで試してみたところ、無事、メニューに mapbox が追加された。また、Mapbox Setup というウィンドウも開いた状態になっている。

f:id:sardine:20210602233524p:plain
mapbox SDK のインポートに成功

なお、このトラブルの原因については、別の PR でコメントされていた。Unity 2019 で AR 関連のクラスが移動されたためらしい。

アクセストークンの入力

ダウンロードページで Next ボタンを押すと、次にアクセストークンを設定してねとある。

Unity のメニューから mapbox > Setup を選ぶとアクセストークンが入力できるらしい。トークンは先ほどのアカウントページで取得できる。

が、インストール中の今に限っては、ダウンロードページでアクセストークンの説明の下に、実際にトークンが書かれていて、クリップボードアイコンをクリックすれば、コピーまでしてくれる。

また、先ほど Unity 上ですでに "Mapbox Setup" が開いた状態になっているので、ここに貼り付けて Submit ボタンを押せば、Valid と表示されて完了。Mapbox Setup のウィンドウは閉じていい。

サンプルの VoxelMap を開いてみる

ダウンロードページで再度 Next ボタンを押すと、インポートしたアセットの中に Minecraft 風のサンプルがあるから開いてみて、とある。

Unity の Project ウィンドウで、Assets > Mapbox > Examples > 8_VoxelMap フォルダを選択する。フォルダの中身が表示されたら、その中に VoxelMap という scene があるので、ダブルクリックで開く。

f:id:sardine:20210602235755p:plain
VoxelMap サンプル

よくわからないけど、右下の説明によれば、上空から見た地形の画像と、各地点の高度を表す画像データとを取得して、それに応じてボクセルを表示することで、上のような画面が表示できているらしい。

ドキュメンテーションの場所

以上でダウンロードページというかチュートリアルが終わった。

ドキュメンテーションがあるようだ。

docs.mapbox.com

日本地図を出すところまでやりたかったけど、時間が遅いので今日はここまで。