Mapboxを用いた簡易ドローンシュミレーションソフトの開発

(1) Plateau？ Cecium (GoogleMapAPI?)？ Mapbox?

以前、Plateauを用いて、簡易ドローンシュミレーションシステムの開発に取り組み一応の形にした。　

https://qiita.com/tkoji3744/items/7dc9e53a2f9f443b6b9e

ここで、①日本の多くの場所が、建物が白い壁の箱（LOD1：Level of Detail=1）のものしかないこと②そもそも位置情報のファイルのダウンロードがやっかい、という印象をもった。そして、数少ないLOD2のファイルは、例えばこんな風。少し物足りなさを感じた。　

![LOD2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/59461049-d642-49ae-a964-04ffdafc9d4e.jpeg)

次に、Ceciumというサイトで同じことにとりくもうとした。GoogleMap APIをつかった方法が2025年現在サポートされなくなっていて、唯一このCeciumからGoogleMapAPIは利用できる、との情報があったからだ（どこまで正しいかは？ただGoogleMAP for Unityがあったと思われる、次のサイトには、今は何もない：　https://developers.google.com/maps/documentation/gaming/install_sdk)。　

https://cesium.com/platform/cesium-for-unity/

導入は意外に簡単だった。Cecium for Unityを使う。HPの説明は丁寧でかつ簡明。それに沿ってやれば、そう時間がかからず下記の風に表示された。しかし、建物は、白い箱情報とGoogleMap情報が混在したような奇妙なかんじでこれもピンとこなかった。また、発展性についてもHPをみただけではすぐにはわからなかった。ちなみに、（時間をかけてないので自信ないが）自分でGoogleMap API（Application Programming Interface）のアクセスキーをとってきてCeciumで作った画像と、Ceciumが独自で作ってくれる画像は、Cecium上でとても似ていた。現状、Ceciumは、無料でGoogle情報をつかわせてくれるのだろうか？

![Cecium.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/b6f4e450-8d94-432f-8f08-a14bb47045ce.jpeg)

 3つ目にとりくんだのは、Mapboxというサイトだった。HPの説明は少なく、また最近、記事の更新も少なかった。ちなみに、一度、HPの連絡先に「質問」メールをだしたこともあったが「法人の方とだけやりとりをして個人の方とはやりとりしていません」というそっけない回答だった。

https://docs.mapbox.com/unity/maps/guides/

https://www.mapbox.jp/maps 

結局、今回、このMapboxを通じて別の簡易ドローンシュミレーションシステムの開発をおこないある程度の成果をだすことができた。これは、HPやほかの人からの数多くの報告に助けられた結果ではない（どちらかといえばMapbox関連の活動は他の２つと比べると地味な印象）。だが、そんな中、下記のリンクの情報が大きな手がかりとなったことに感謝する。　

https://www.youtube.com/watch?v=23XogRQCKxI&t=2s 

(2)越えなくてはいけなかった３つの壁

だが上記の動画で説明された2020年当時と2025年の今ではMapboxの会社が提供する情報が変わってしまったためだろう、上記の動画どおりやってもいろいろうまくいかなかった。主に3つの壁があった。 

①  まず、そもそもUnityにMapbox SDK (Softwear Developping Kit)for Unity導入が困難だった。Mapbox SDK for Unityをサイトからダウンロード後、 Unityにとりこむために、画面でAssets > Import Package > Custom PackageでMapbox SDK for Unityを選択しインストールするも、その後メニューに、Mapbox > Setupが現れずインストール失敗。
  試行錯誤の末 、最終的にAssets/UnityARInterface、GoogleARCore、MapboxARの各フォルダを削除したら、ようやくメニューにMapbox > Setupが現れた！（Unity Consoleのエラー表示がヒントになった） 

②  Mapbox SDK for Unity のcolliderのバグ（colliderをセットしても、Playerが建物をすりぬける）の修正。これは上記の動画情報のおかげでクリアできた。情報のまま、
Assets/Mapbox/Unity/Meshgeneration/data/UnityTile.cs
Assets/Mapbox/Unity/Meshgeneration/Factories/TerraiStrategy/FlatTerrainStrategy.cs　の変更を、

https://github.com/mapbox/mapbox-unity-sdk/tree/develop/sdkproject/Assets　からコピペしておこなった。

 ③  上記動画情報とちがい、Map Inspector内のPOI（Points of Interest) 表示の 「Select a visualizer to see property」 の横にドロップダウンがなかった。

→自前のCustomPOImanager.csを作成しMapに追加(Add Conponent)。このスクリプト内に、外部の３Dオブジェクトを配置したい緯度経度を記載。その場所にAssets内に外部からもってきていれた城の３Dオブジェクトが配置できた。 

![Street.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/d5871347-ba3b-4522-a021-03e15036553a.jpeg)

城は、ぼくがもちこんだもの。他はMapboxが生成。

![Satellite2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/71e2a255-b387-42ae-9584-32e548c7233d.jpeg)

衛星写真モードでも、城はきれいに表示された。
 

![Street1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/ce9475c8-f09b-4693-8e92-252fad9f54c1.jpeg)

視点を変えて見る。

（３）Mapboxによる地図表示

Mapboxから得られる画像は、現状では総合的にPlareauやCeciumよりいいようにぼくには思われた。

また、Mapboxにある潜在的機能は優秀で、下記のMapboxのInspectorの写真の上部にあるよう、「衛星写真（Satellite）か？地図由来か？（地名も一部はいる）」選べ、また写真下部にあるよう、「緯度、経度入力」を入力すれば、世界中の場所が表示できる。 

![Inspector.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/c3698314-f631-4664-8914-324af485c26e.jpeg)

地図由来モードで生成される建物にぶつからないように進むのも楽しいし、衛星写真由来モードでのんびり景色をながめながらただ飛んでいるだけでも、意外に楽しいものだ。　

もう１枚、MapboxのInspectorの写真をのせる。上部にあるよう、「自動延長： ExtentOptions：Range Around Center → Range Around Transform」が簡単に選べる。すなわち、Range Around Transformにすれば、Playerの位置を中心にした地図が順次表示＝Playerがすすむほどに、地図は自動延長される（世界の果てまで飛んでいける！）。

![Inspector2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/95e0a267-edcb-4eb5-9537-ec84fe6823c9.jpeg)

この機能を使う。わかりにくいが、Player(今回Player目線なので画面に表示されず)が進むほどに下記１枚目に上部のところに、下記２枚目では追加の景色が現れている。

![Satellite3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/9eebe022-3cb5-4504-bc36-589cb1a233af.jpeg)



![Satellite4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676736/68a098fb-3916-47b4-8981-374d8766052a.jpeg)


その他、Inspectorで容易に、Playerの速度をかえたりもできる。　 

（４）課題

　もちろん「Playしてちょっと動くと、衝突して画面がひっくりかえることがあることの修正」など、いろいろ小まめな追加調整は必要である。だが、コントローラーとして、PCキーボードのキー入力、ゲームコントローラーのスチック入力（UnityのInputSystemを介して）は実装できた。そうすると、ずいぶんゲームらしくなった。 

　だだ、①  最初ドローンオブジェに設定した、Cubeを黄色い平たいCylinderに変える②  EyeCameraの向く方向を、常に、Playerの進行方向にむくようにする（カメラの回転もプレイヤーの回転に追従させる）、の二つについては、とりくんでみたが、現状、実現できていない（いろいろかまうと初期設定が壊れてしまう）。この２つの技術的問題点は今後の課題である。

 そして、もう一つの大きな課題。ここまで、Mapboxのキーさえ無料登録すれば（クレジットカードの登録はなく）くりかえしの情報ダウンロードも今のところ無料だった。（おそらく）個人で勝手に利用した分は、許してもらえる？だが、これを公の場に公開しようとするとき、利用料や著作権はどうなる？

　　　　　　　　　　　　　　＊

 いずれにせよ、いつか時間がたったら、またこのプロジェクトに取り組んでみようかと思わせるような、手ごたえのある今回のプロジェクトとなった。