Cesium for Unity クイックスタート

:::note info
これは [MIERUNE AdventCalendar 2022](https://qiita.com/advent-calendar/2022/mierune)　１９日目の記事です。
昨日は @satoshi7190 さんによる [MapLibre GL JSで魔法陣を出現させる](https://qiita.com/satoshi7190/items/4503dacac1560d890784) でした。
:::

結構最近Cesium for Unityがリリースされたので

https://github.com/CesiumGS/cesium-unity


Cesium for Unityのクイックスタートをやっていきます

https://cesium.com/learn/unity/unity-quickstart/

英語が読める方は公式の方が詳しいと思いますのでおすすめです

## 前提条件
- Unity2021.3.2f1以降のバージョンがインストールされていること
- Cesium ionのアカウントを持っていること（これは地物のデータを参照するのに必要とのこと）

## プロジェクトを新規作成してCesium for Unityパッケージをインポートする

1. UnityHubを起動して新しいプロジェクトを作ります
1. この時、3D(URP)のテンプレートを選択します
    - HDRPでも動作するようですが、標準の3Dテンプレートではレンダリングが正しく機能しないとのことです
![スクリーンショット 2022-12-19 3.49.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/ebc1756a-eac8-989f-3cd5-e76bbf656355.png)

1. メニューの[Edit] > [Project Settings...]に移動してプロジェクト設定を開きます。
1. Package Manaerを開きます
![スクリーンショット 2022-12-19 3.58.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/5fafd46b-5c58-0677-66af-baa62a1ad72a.png)
1. 以下の設定で新しくスコープレジストリを追加します
- Name:Cesium
- URL: https://unity.pkg.cesium.com
- Scope(s):com.cesium.unity
![スクリーンショット 2022-12-19 4.00.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/0ebb2154-8cca-56ed-694d-b0ec68e42048.png)
1. 次にメニューの[Window] > [Package Manager] でパッケージマネージャーを開きます
1. Package ManagerでPackagesのドロップダウンリストからMy Resistriesを選択します
1. Cesium for Unityが表示されるので、installします
![スクリーンショット 2022-12-19 4.08.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/be68bc86-0dd9-0f26-dffc-76199dc65e7f.png)
1. TextMeshProのインストールを促すダイアログが出る場合はインストールします
1. TextMeshProのインストールについては割愛します

## Cesium ionに接続する
1. メニューにCesiumが増えていますので、[Cesium] →　[Cesium]でCesiumのウインドウを開きます
![スクリーンショット 2022-12-19 4.19.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/acbdd7e0-efbd-6e98-bf1e-72b306b1dbb9.png)
1. Connect to Cesium ionのボタンを押下します
1. ブラウザで認証するURLなどが書かれているので接続すると下記のような画面になります
![スクリーンショット 2022-12-19 4.21.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/eecfc5c8-cd1f-efb5-31c6-810c31774c50.png)
1. Allowボタンを押すと認証され、Cesiumウインドウが以下のようになります
![スクリーンショット 2022-12-19 4.29.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/4f629afd-b5f3-adb3-7d99-cf4a925776cd.png)
1. 次にプロジェクトのアクセストークンを作成します
1. Tokenのボタンを押して、トークンのウインドウを開き、「Create New Project Default Token」のボタンを押すと、新しいトークンが生成され、Cesium ionのアカウントに追加されます

## 地形をシーンに追加する
1. Cesiumウインドウの「Cesium World Terrain + Bing Maps Aerial　imagery」の横にある＋ボタンを押下します
1. するとHierarchyウインドウにCesiumGeoreferenceオブジェクトおよび、Cesium World Terrainが追加されます
![スクリーンショット 2022-12-19 4.50.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/19c00a18-0609-493e-cd19-12725fcef712.png)
![スクリーンショット 2022-12-19 4.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/bef32967-f01d-dfe9-822c-02b087789fba.png)

## メインカメラの設定
1. メインカメラのデフォルトの設定だと、あまり遠くのオブジェクトを見るように設定されていません
1. HierarｃｈyウインドウでMainCameraを選択し、Clipping Planesの値を変更します
1. Nearを1に、Farを1,000,000に設定すると、地平線の方まで地形が見えるようになります
![スクリーンショット 2022-12-19 5.01.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/16846588-4cca-f556-5fd9-35d5e9b550ef.png)
![スクリーンショット 2022-12-19 5.01.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/680ad0be-df04-e567-4be0-b5cee48c6ccd.png)

## 3D建物をシーンに追加する
公式のクイックスタートではシカゴを表示していましたが、今回は東京を表示してみたいと思います
1. HierarchyウインドウのCesiumGeoreferenceを選択して、Inspectorウインドウに表示されている座標を以下に変更します
Latitude：　35.681236
Longitude:　139.767125
Height: 1000
![スクリーンショット 2022-12-19 5.08.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/834f6610-f1ef-a553-b3fa-1edabc83e1fa.png)
1. 座標を入力すると、シーンは東京駅付近を表示します
1. 次にCesiumウインドウで「Cesium OSM Buildings」の右にある＋をクリックします
1. するとOSMの建物データが読み込まれます
![スクリーンショット 2022-12-19 5.18.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/2b7d3c73-801b-267f-67ee-34ea8f2fc49f.png)

## 感想
以上、Cesium for Unityのクイックスタートでした
想像以上に簡単に3DTilesを扱う事が出来て感動しています
Cesium 3D Tilesetというコンポーネントがポイントで、こいつを自在に操ることができるかどうかが鍵です

ちなみにPlateauのテクスチャ付き建物データもサクッと載せれました
開発用のシーンビューはレンダリングが厳しい感じですがゲームビューは全く問題無し、空撮したかのようなショットが撮れました
ある程度Unityのカメラのコントロールの腕は必要ですが、これは便利だなと思いました
![スクリーンショット 2022-12-19 5.29.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/2e0e8ec1-d281-08a6-d4b5-cb65a9d2461b.png)
![スクリーンショット 2022-12-19 5.36.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2788/0c68e4dd-1b98-cac5-b042-e1a8e674008f.png)



:::note info
明日は@kntoshiyaさんです！お楽しみにー
:::