Skip to content

Commit cc773f9

Browse files
committed
Merge branch 'v4_alpha'
# Conflicts: # Editor/Window/Main/PlateauWindow.cs
2 parents 539e38f + b3acdf1 commit cc773f9

File tree

960 files changed

+316836
-1659
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

960 files changed

+316836
-1659
lines changed

.coderabbit.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# AIレビューCodeRabbitの設定
2+
language: "ja"
3+
4+
reviews:
5+
profile: "chill"
6+
path_filters:
7+
- "!Tests/TestData/**"

.github/pull_request_template.md

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
## 関連リンク
2-
<!-- libplateauのPR等、関連するPRがあれば書く-->
1+
## 🔗 関連リンク
2+
<!-- 関連するPR、仕様書のリンク(社外の方を除く)、Jiraチケットのリンク(社外の方を除く)等を書いてください-->
33

4-
## 実装内容
5-
<!-- 実装した内容、背景について書く。妥協点があれば書いておく。 -->
4+
## ✅ レビュー前確認項目
5+
- [ ] ユニットテストが通ること
6+
- [ ] ビルドが通ること
67

7-
## マージ前確認項目
8-
- [ ] Squash and Mergeが選択されていること
9-
- [ ] UI、挙動に変更ある場合、ユーザーマニュアルが更新されていること
8+
<!-- 社内の人向け: 以下の項目は、開発当初のストーリー設計書通りであれば省略可能です。
9+
設計に変更があった場合のみ、変更点を周知するために記載してください。 -->
1010

11-
## 動作確認
11+
## 🚀 実装内容
12+
<!-- GUIに関する実装がある場合はスクリーンショットを貼ってください。実装した内容について書いてください。 -->
13+
## 🌐 影響範囲
14+
<!-- 既存の実装に対して行った変更や、影響がある部分があれば書いてください(特に同時並行している他の作業に影響する時、今後必要な変更を書く)。また社内の人は、影響先の担当者に対して周知をお願いします。 -->
15+
## 🛠️ 動作確認
1216
<!-- レビュアーが動作確認するのに必要な手順と結果を書く。 -->
13-
14-
## その他
17+
## ⚠️ 懸念点
1518
<!-- 気になる点、特にレビューしてほしい点等があれば書く。 -->

Documentation~/manual/ImportCityModels.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,17 @@
3939
- `データセットの選択``都道府県`を選択します。
4040
- するとその都道府県に対応する `データセット`が選択肢に出てくるので選びます。
4141

42+
### インポート形式の選択
43+
44+
インポート形式を次から選択します。
45+
46+
- `シーンに配置`
47+
- インポートした都市モデルを現在のシーンに直接配置します。
48+
- `動的タイル(Addressables出力)`
49+
- 広大な範囲を表示したいとき、描画負荷を抑えつつ表示できる機能です。
50+
- 広範囲の描画に耐えるよう、3D都市モデルを最適化しながらタイル状に出力し、カメラの距離に応じて読み込む機能です。
51+
- 詳しくは[動的タイル機能について](./dynamicTile.md)をご覧ください。
52+
4253
### 基準座標系の選択
4354
リストのうち、都市が属する場所として近いものを選択します。
4455
![](../resources/manual/importCityModels/coordinateSystemSelect.png)
@@ -257,14 +268,9 @@
257268
再度`モデルをインポート`ボタンが表示されたらキャンセル完了です。
258269

259270
>[!NOTE]
260-
> インポート元となる都市データは `Assets/StreamingAssets/.PLATEAU` にコピーされます。
261-
> .PLATEAU は隠しフォルダである点にご注意ください。Unityのインポート処理を削減する目的でこうなっています。
262-
> なお、インポート対象として選択したものに関連するもののみがコピーされます。
263-
264-
>[!NOTE]
265-
> インポートされた都市モデルは、プレハブ化するとメッシュとテクスチャが missing になってしまいます。
266-
> データはシーンに埋め込まれているためです。
267-
> プレハブ化またはモデルとテクスチャを別ファイルに分けたい場合は、エクスポート機能を利用して別ファイルに書き出してください。
271+
> インポートされた都市モデルは、このままプレハブ化するとメッシュとテクスチャが missing になってしまいます。
272+
> データはシーンに埋め込まれているためです。
273+
> 「Assetsに保存」機能またはエクスポート機能を使ってテクスチャ等をファイルに書き出すことでプレハブ化できるようになります。
268274
269275
配置されたゲームオブジェクト階層のトップには、コンポーネント`PLATEAUInstancedCityModel` がアタッチされます。
270276
このインスペクタから緯度、経度などの情報を確認できます。
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# 【試験的機能】動的タイル機能について
2+
3+
4+
## 概要
5+
広大な範囲を表示したいとき、描画負荷を抑えつつ表示できる機能です。
6+
例えば、下図のように範囲選択画面で新宿区のすべての建物をインポートしたいとします。
7+
8+
![新宿区全域を範囲選択した例](../resources/manual/dynamicTile/areaSelectShinjukuAll.png)
9+
10+
通常のシーンへのインポートであれば、描画負荷が問題となり実用の難しさが課題でした。
11+
そこで動的タイル機能を使えば、下図のとおりすべて表示できます。
12+
ただしPCのスペックによります。
13+
14+
![動的タイルで新宿区の全建物を表示した例](../resources/manual/dynamicTile/dynamicTileShinjuku.png)
15+
16+
## 描画負荷が軽減される仕組み
17+
本機能は次の処理からなります。
18+
- 3D都市モデルをタイル状に分けます。
19+
- Addressableの機能を使って3D都市モデルを出力します。
20+
- 出力時、各タイルが最適化されます(後述)。
21+
- 読込時、カメラの距離に応じてタイルを読み込みます。
22+
23+
### 都市のタイルの最適化手法
24+
本機能は試験的機能であり、今後も新たな最適化を追加していく予定です。
25+
- 【実装済】テクスチャサイズの変更
26+
- 各タイルで利用されるテクスチャの大きさについて、縦と横でそれぞれ等倍のタイル、2分の1のタイル、そして4分の1にしたタイルを出力します。
27+
- カメラに近いタイルは解像度の高いテクスチャ版を読み込み、遠いタイルは解像度の低いテクスチャ版を読み込みます。
28+
- PLATEAUデータはテクスチャが大きい傾向にあるため、これにより描画負荷が減ります。
29+
- 【実装済】遠いタイルを消す
30+
- カメラからかなり遠いタイルは読み込まず、シーンから消去します。
31+
- 【今後実装予定】タイルのサイズを変更する
32+
- 各タイルの大きさについて、3次メッシュコードを基準とし、それを2×2に結合したサイズと2×2に分割したサイズを作ります。
33+
- カメラから遠いタイルは結合した版を読み込むことで、オブジェクト数とディスク読込回数を減らします。
34+
- 【今後実装予定】ポリゴン数の低いLOD1の建物に、LOD2のテクスチャを投影することでポリゴン数を下げます。
35+
36+
## 動的タイル形式でのインポート方法
37+
38+
![動的タイルのインポート画面設定](../resources/manual/dynamicTile/tileImportConfig.png)
39+
40+
- インポートの設定画面で、インポート形式を`動的タイル(Addressable出力)`にします。
41+
- 出力先を指定します。プロジェクト外でも動作しますが、ビルドに含めたい場合はAssetsフォルダ内のお好みのフォルダを選びます。
42+
- 範囲選択など、他のインポート設定をしてインポートボタンを押します。
43+
- インポート設定については[こちら(3D都市モデルのインポート)](./ImportCityModels.md)とおおむね同じです。
44+
- ただし、モデル結合の粒度については地域単位に固定されます。
45+
- インポートおよびAddressableのビルドが行われ、完了すると3D都市モデルがタイル形式で読み込まれ表示されます。
46+
47+
## 動的タイルの動作
48+
49+
- シーンビューでは、タイルと視点の距離に応じたタイルが読み込まれます。
50+
- プレイ中は、タイルとメインカメラの距離に応じたタイルが読み込まれます。
51+
- タイルの管理は、シーンに配置された`DynamicTileManager`が行います。
52+
53+
### 生成されるアセット
54+
- 出力先フォルダをAssetsフォルダ内に設定した場合
55+
- 出力先にタイルのプレハブが生成されます。
56+
- Assets/StreamingAssets/PLATEAUBundles/(出力先フォルダ名)にアセットバンドルがビルドされます。
57+
- 出力先フォルダをプロジェクト外に設定した場合
58+
- 出力先にアセットバンドルがビルドされます。
59+
- Assets/PLATEAUBundles/(出力フォルダ名)にプレハブが生成されます。
60+
- プロジェクト外への出力のケースでプレハブ非依存にする機能は今後実装予定です。
61+
62+
## DynamicTileManagerの操作
63+
![ズームレベルを表示した例](../resources/manual/dynamicTile/showZoomLevel.png)
64+
65+
シーンに配置された`DynamicTileManager`を選択すると、インスペクターから次の操作ができます。
66+
- `Addressableカタログパス(json)`の指定
67+
- 参照ボタンからAddressableのカタログ(json)を指定することで、読み込む動的タイルのセットを変更できます。
68+
- カタログファイルとはAddressableの仕様上、アセットバンドルのビルド時に生成されるものです。
69+
カタログの場所は上記「生成されるアセット」に記載のアセットバンドルのビルド先に生成されます。
70+
- `シーンビューで都市にフォーカス`ボタンを押すと、シーンビューの視点が都市を映す位置に移動します。
71+
- `SDKデバッグ用情報を表示`のチェックを入れると、インスペクタにデバッグ用の詳細情報が表示されます。詳しくは後述します。
72+
73+
74+
## デバッグ情報
75+
DynamicTileManagerのインスペクタから「SDKデバッグ用情報」にチェックを入れると次のボタンと情報がインスペクタに表示されます。
76+
- `Clear Tile Assets`: 読み込んだタイルをシーンから消去します。
77+
- `Clear Tile List`: 保持しているタイル情報を消去します。元に戻すには「参照」からカタログを指定します。
78+
- `Load Tile Scriptable Objects`: タイルの情報を読み直します。
79+
- `Show Tile Bounds`: 各タイルのBounds(範囲)を線で表示します。
80+
- `Show Zoom Level`: タイルのズームレベル(詳細度)を数字で表示します。
81+
- ズームレベル11番: もっとも詳細で、テクスチャ解像度は等倍です。
82+
- ズームレベル10番: 2番目に詳細で、テクスチャ解像度は縦と横が2分の1倍です。
83+
- ズームレベル9番: もっとも粗く、テクスチャ解像度は縦と横が4分の1倍です。
84+
- `Cancel Load Task`: ロードに異様に時間がかかっているタイルがある場合、進行中の読み込みを取り消します。
85+
- `Disable Realtime Load On Editor`: エディタでの視点位置に応じたタイルの読み込みを停止します。
86+
- `Update Assets On Camera Position`: カメラ位置に応じたタイルの読み込みをやり直します。
87+
- `Zoom Level & Load Distance`: 各ズームレベルがカメラからのどの距離で読み込まれるかを設定します。Load DistanceのXが最小距離、Yが最大距離です。
88+
- `各タイルの情報`: 各タイルのAddressableのアドレス、位置、ズームレベル、ゲームオブジェクト、カメラからの距離、読み込み状態が表示されます。
89+
- `Use Job System`: タイルとカメラの距離判定にJob Systemを利用します。
90+
- `Show Debug Log`: チェックを入れると詳細なログを表示します。

Documentation~/manual/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
href: Installation.md
77
- name: 3D都市モデルのインポート
88
href: ImportCityModels.md
9+
- name: 動的タイル機能について
10+
href: dynamicTile.md
911
- name: 3D都市モデルのエクスポート
1012
href: ExportCityModels.md
1113
- name: 3D都市モデルの調整

Documentation~/resources/manual/dynamicTile.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
891 KB
Loading
3.26 MB
Loading
1.59 MB
Loading
23.7 KB
Loading

0 commit comments

Comments
 (0)