PLATEAU SDKを用いて都市モデルをエクスポートし、他シーン・プロジェクトで利用する

# はじめに

今回は、PLATEAU SDKでインポートした都市モデルを他のシーンやプロジェクトで利用したくなったので、その方法と注意点をまとめました。

#### 開発環境
| 名前 | バージョン |
|:-:|:-:|
| Unity  | 2020.3.40f1  |
| PLATEAU SDK for Unity  | v0.6.0  |

# なぜExport機能を使用するのか

そもそもなぜPLATEAU SDKのExport機能を利用して他シーンや他プロジェクトに都市モデルを移動させなければならないのか疑問に思っている方もいらっしゃるかもしれません。その都市モデルをPrefab化すれば、5秒もあれば他シーンや他プロジェクトで利用できそうです。しかし、残念ながら**PLATEAU SDKを使用してインポートしてきた都市モデルはPrefab化して利用することができません。**

下は実際にPrefab化しようと試みた様子です。Prefab化すると、元々あった方は残っていますが、Prefabから都市モデルを再配置してみると都市モデルがシーンビュー上から消えてしまっているのがわかると思います。これはメッシュファイルやマテリアルの参照が切れてしまっていることが原因で直すことは可能なのかもしれませんが、それよりもExport機能を利用した方が簡単で確実です。

![PLATEAU_Prefab.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/e1daedc9-225d-4255-ca25-1a8691aa34e6.gif)

参考 : [【Unity】PLATEAU SDK for Unityの基本的な利用方法～利用時の注意点](https://qiita.com/OKsaiyowa/items/8dd405a76c5edfb5a64e)


# 都市モデルをエクスポート
メニューバーのPLATEAU→PLATEAU SDKを選択するとインポート画面が出てくると思いますが、ここで<font color="red">**赤**</font>で囲ったエクスポートを選択することでエクスポート画面になります。
![PLATEAU_SDK_ImportToExport.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/afc94f23-e6ff-0cf8-ffdc-f31d2cc030c3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/3d35a3be-d4e0-546f-d365-640d5e4dd61d.png)

:::note

今回は都市モデルをFBX形式でエクスポートする方法を説明します。他のファイル形式では設定が違う場合があるので[こちら](https://synesthesias.github.io/PLATEAU-SDK-for-Unity/manual/ExportCityModels.html)の公式ページで確認してください。

:::

各項目について簡単に説明すると・・・
- **エクスポート対象** : PLATEAU SDKでインポートした都市モデルの中でエクスポートしたいものを選びます。
- **出力形式** : OBJ,GLTF,FBX(FBX形式はv0.6.0からの対応)から選びます。ここではFBXを選びます。
- **Option**
    - **テクスチャ** : LOD2以上に対応している都市においてテクスチャをエクスポートする/しないを決めます。そもそもテクスチャ対応していなければ、チェックしてもしなくても変わりません。
    - **非アクティブオブジェクトを含める** : 非アクティブになっているオブジェクトを含める/含めないを決めます。
    - **座標変換** : Localなら原点付近(インポートしてきた時と同じ位置)に配置されるようにエクスポートされます。 Plane Cartesianなら国土交通省が定める直交座標系のうち、インポート時に選択した直交座標系を原点とするように平行移動されます。
    - **座標軸** : X,Y,Z座標をそれぞれ東西南北上下のどの方向に向けるかを決めます。FBX形式の場合、WUN(West,Up,North)を選択します。
:::note
座標変換について
PLane Cartesianの場合、都市モデルの原点の緯度経度から平面直角座標を調べ、平面直角座標のX,Y座標をそれぞれTransform.positionのZ,X座標に入力するとLocalでエクスポートした時の状態になります。
下に平面直角座標を調べることができるサイトへのリンクを置いておきます。平面直角座標系はインポート時に設定したものと同じものを選んでください。
[平面直角座標への変換ができるサイト](https://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/bl2xyf.html)
:::

- **フォルダパス** : エクスポート先のフォルダを選択します。これを使用中のプロジェクトのフォルダにすると、Prafabとしての利用が可能です。他プロジェクトのフォルダにすれば、他プロジェクトでも同様にPrefabとして利用できます。

これらを全て設定した後、「エクスポート」を押すと指定したファイル形式でエクスポートされます。

# エクスポート先で利用する際の注意

いくつか設定したり調整しないといけないことがあるので説明します。(ここでもファイル形式がFBXである場合の説明となります。)

### モデルの大きさについて
エクスポートされたモデルは配置してみると分かるのですが、非常に小さいサイズになってしまっています。これは、エクスポートされた際にサイズが0.01倍されてしまう設定になっているからです。これはモデルを選択して、Model→Convert Unitsのチェックを外すとエクスポート前と同じサイズに戻ります。

![FBX_ConvertUnits.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/32f9cd03-8971-5005-5dd6-19c9216bf19c.png)

### 現実との位置合わせをする場合について
少し前に[PLATEAU SDKを用いた都市モデルのインポートと現実との位置合わせの方法](https://qiita.com/MR_IdTe/items/93fe776b9be0127e9c47)という記事を投稿したのですが、この手順で現実との位置合わせをしていく際に注意する点があります。

エクスポートする前の都市モデルを真横から見てみると原点の位置の高さからそれぞれの建物は浮いているのが分かると思います。これはPLATEAUが標高をベースに作られているため、その標高分浮いた位置にあるからです。

![PLATEAU_SIDE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/4fd3a59b-65fd-2680-f4be-0f6dc3342c11.png)


参考 : [【Unity】PLATEAU SDK for Unityの基本的な利用方法～利用時の注意点](https://qiita.com/OKsaiyowa/items/8dd405a76c5edfb5a64e)

しかし、エクスポート先で適当な空のオブジェクトを親として原点に置き、都市モデルを配置してみると当たり前ですが、親オブジェクトと同じ高さに配置されます。これは、都市モデルの建物が標高分浮いていないためにこうなります。

![PLATEAU_SIDE_Export.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3111921/c26349d0-6285-4190-2fe3-d63fcd2c3c8a.png)

つまり、この差を是正しないといけないので、結論として、親オブジェクトY座標に標高の値を入力するのは変わらないですが、それに加えて**都市モデル自体にもY座標に標高の値を入力してください。** そうすることでインポートした際と同じ位置関係となり、上記の記事と同じ方法で現実との位置合わせができます。

以上で他シーン・プロジェクトで利用する上での注意点は終了です！

# 参考文献(記事内重複あり)

https://qiita.com/OKsaiyowa/items/8dd405a76c5edfb5a64e

# まとめ

今回はPLATEAU SDKを用いたエクスポートの方法と他シーン・プロジェクトでの利用方法をまとめました。新規プロジェクトごとに毎回インポートの手順を踏むと時間がかかるのでこういったエクスポート機能があるのは楽でありがたいですね。