Skip to content

Commit

Permalink
Merge pull request Synesthesias#177 from Synesthesias/release/v2.1.0-…
Browse files Browse the repository at this point in the history
…alpha

Release/v2.1.0 alpha
  • Loading branch information
linoal authored Oct 16, 2023
2 parents 1e38376 + ee5315b commit f430db6
Show file tree
Hide file tree
Showing 318 changed files with 38,483 additions and 696 deletions.
141 changes: 117 additions & 24 deletions Documentation~/manual/ImportCityModels.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,11 @@
## インポート手順
### インポート元の選択
- Unityのメニューバーから `PLATEAU → PLATEAU SDK` を選択します。
表示されるウィンドウの上部に3つのタブ「インポート、モデル調整、エクスポート」があります。
表示されるウィンドウの上部に4つのタブ「インポート、モデル調整、エクスポート、属性情報」があります。
このうちインポートを選択します。
![](../resources/manual/importCityModels/plateauWindowImport.png)
- インポート先で`ローカル`または`サーバー`を選択します。

> [!NOTE]
> 今のところ、「サーバー」ではなく「ローカル」を推奨します。
> すみませんが、現状ではサーバーで利用できるデータは少ないためです。
> 2023年度中にSDK向けのサーバーデータの範囲を拡充予定です。
#### ローカルからインポートする場合

- 導入したい都市データが自分のコンピュータにある場合はローカルを選択します。
Expand Down Expand Up @@ -56,11 +51,16 @@
- 範囲選択画面の操作方法:
- マウスホイールを上下に回してズームアウト、ズームインします。
- マウスホイールを押し込んだままドラッグしてカメラ移動します。
- オレンジ色の球体をドラッグして範囲を選択します。
- 範囲の選択方法については、画面右下に説明があるとおり、
- クリックで選択/選択解除
- ドラッグで矩形での選択追加
- Shift+ドラッグで矩形での選択除外をします。
- シーンビュー左上の`決定`ボタンを押して範囲を確定します。すると元のシーンに戻ります。
- 画面のみかた:
- 青色の線は利用可能な地域を示します。
- 地域ごとに利用可能なGML種別と対応LODがアイコン形式で表示されます。
- 対応LODは色で表現されます。画面左下の凡例の色と対応します。
- アイコンが多すぎると感じる場合は、画面左下の凡例のチェックを切り替えることでアイコンの表示/非表示をLODごとに切り替えることができます。
- 地図は国土地理院のサイトから自動でダウンロードされて表示されます。インターネットへの接続が必要です。
- 区域に表示される番号は、後述の`indexmap.pdf` に記載の番号と同じです。

Expand All @@ -85,27 +85,23 @@
**設定項目について:**
- `インポートする`
- チェックが付いている地物タイプのみインポートします。
- `Mesh Collider をセットする`
- チェックが付いている場合、各モデルに Mesh Collider が追加されます。
- `テクスチャを含める`
- テクスチャが存在する地物タイプで表示される設定項目です。
チェックが付いていて、かつテクスチャがある場合はそれを含めてインポートします。
都市データによってはテクスチャがない場合があり、
その場合はチェックを外した時と同様に真っ白な3Dモデルが出力されます。
- `テクスチャを結合する`
- テクスチャを含める場合、テクスチャを結合するかしないかを設定します。
- PLATEAUのデータはテクスチャの枚数が多い傾向にあり、結合しないと描画負荷が高くなる傾向にあります。
結合機能を有効にすると、複数のテクスチャを1枚の画像にまとめ、3DモデルのUVも合わせて調整されます。それによって描画負荷を改善できます。
- `テクスチャ解像度`
- テクスチャを結合する場合の、結合後のテクスチャの大きさを指定します。
- `Mesh Collider をセットする`
- チェックが付いている場合、各モデルに Mesh Colliderが追加されます。
- インポート後、クリックで属性情報を表示する機能を利用する場合、Mesh Colliderが必要です。
- `LOD描画設定`
- 複数のLODを利用可能な地物タイプで表示される設定項目です。
バーの左端と右端をドラッグして、インポートするLODの範囲を指定できます。

>[!NOTE]
> **LODとは**
> gmlファイルの中には、都市モデルの形状の細かさを指定したいという需要に対応するため、
> 複数の形状データが格納されている場合があります。
> LOD0がもっとも大雑把な形状で、LOD1, LOD2 と数字が上がるほど細かい形状になります。
> 建築物の場合、LOD0 は平面、LOD1は平面に一定の高さを付けたもの、LOD2はより細かい形状です。
>
> なお、ここでいう LOD とは PLATEAU の仕様上の LOD を指します。
> Unity の機能としての LOD とは異なる概念です。
- `モデル結合`
- `主要地物単位(建築物,道路等)`
- モデルのメッシュは建物ごとに結合されて出力されます。
Expand All @@ -117,6 +113,26 @@
- オブジェクト数を削減して軽量化できますが、建物ごとの地物データは取得不可になります。
- メッシュの結合はある程度の大きさの範囲ごとに行われます。


>[!NOTE]
> **LODとは**
> gmlファイルの中には、都市モデルの形状の細かさを指定したいという需要に対応するため、
> 複数の形状データが格納されている場合があります。
> LOD0がもっとも大雑把な形状で、LOD1, LOD2 と数字が上がるほど細かい形状になります。
> 建築物の場合、LOD0 は平面、LOD1は平面に一定の高さを付けたもの、LOD2はより細かい形状です。
>
> なお、ここでいう LOD とは PLATEAU の仕様上の LOD を指します。
> Unity の機能としての LOD とは異なる概念です。
- `属性情報を含める`
- 有効化すると、地物の属性情報がシーン中にコンポーネントで保存されます。
- 下図のように、PLATEAUCityObjectGroupコンポーネント内で属性情報が保持されます。
![](../resources/manual/importCityModels/plateauCityObjectGroupComponent.png)
- `デフォルトマテリアル`
- PLATEAUの3Dモデルのうち、テクスチャやマテリアル指定がない箇所のマテリアルを指定します。
- デフォルトでは、地物タイプに応じたマテリアルが指定されています。


>[!NOTE]
> **地物の選択について**
> 地物の中にはインポートに時間がかかるものもあるのでご注意ください。
Expand All @@ -126,19 +142,55 @@
>[!NOTE]
> **現実の景観と異なる地物について**
> 地物の種類で「土地利用」と「災害リスク」については、
> 情報の範囲を示す目印として白い板の3Dモデルが表示されます。
> この白い板はリアルな景観のみを求める際には不要になるので、
> 情報の範囲を示す目印として板状の3Dモデルが表示されます。
> 土地利用と災害リスクに関するデータが不要な場合は
> インポートしないか、インポート後オフにすることを推奨します。
> ![](../resources/manual/importCityModels/fldAndLandUse.png)
> 上図は白い板として現れる災害リスク範囲の目印です
> 上図で赤い格子模様になっている板は、災害リスク範囲の目印です
>[!NOTE]
> **道路の高さについて**
> LOD1 の道路は、PLATEAUの仕様上、高さのデータを含みません。
> したがって、インポートするとすべて高さ 0 で表現されます。
> LOD2 以上の道路は高さが反映されます。
### 土地に衛星写真や地図を貼り付ける

土地に衛星写真や地図を貼り付けることができます。

![](../resources/manual/importCityModels/landPhotoSample.png)

#### 設定方法
- 範囲選択画面で土地起伏の3Dモデルが存在する地域を選択すると、インポート設定に「土地起伏」が表示されます。
![](../resources/manual/importCityModels/landConfig.png)
- 土地起伏では、上述の地物別設定に加えて土地起伏専用の設定項目があります。
- `航空写真または地図を貼り付け`
- チェックがONになっていると機能が有効化されます。
- `URL`
- 航空写真または地図の画像をダウンロードするためのURLです。
- デフォルトでは地理院地図の航空写真のURLが入力されています。
- このURLを変更すれば、航空写真だけでなく、国土地理院が提供している多種多様な地図や写真を土地に貼り付けることができます。
利用できる地図については[国土地理院のページ](https://maps.gsi.go.jp/development/ichiran.html)を参照してください。
そのページに記載されているURLを貼り付けることで地図を利用できます。
- 下図は地図を貼り付けた例です。
![](../resources/manual/importCityModels/mapExample.png)
- 下図は陰影起伏図を貼り付けた例です。
![](../resources/manual/importCityModels/mapLatitudeExample.png)
- URLには文字列 `{z}, {x}, {y}`を含めるようにしてください。これは地図タイルのxyz座標に変換されます。
- 地図タイルのxyz座標については[国土地理院のページ](https://maps.gsi.go.jp/development/siyou.html)を参照してください。
- SDKの機能により、土地の座標をもとに文字列`{z}, {x}, {y}`を適切な数値に置き換えて画像をダウンロードします。
- `ズームレベル`
- 地図タイルのズームレベルです。
- 数値が大きいほど高精細な画像になります。
- 数値が1つ下がると、画素数が4分の1になります。
- ズームレベルは、地図タイルxyz座標のzの値に相当します。
- `利用可能なズームレベルの検索`
- ボタンを押すと、現在入力されているURLでどのズームレベルが利用可能なのかを検索します。
- 検索が完了すると、ズームレベルの入力欄がドロップダウンに変化し、利用可能なズームレベルから選択できるようになります。
![](../resources/manual/importCityModels/zoomLevelSelect.png)

この機能でダウンロードされた地図タイルは、自動で1枚の画像に結合され、土地のUVとマテリアルが設定されてインポートされます。

### 基準座標系からのオフセット値の設定
3Dモデルの原点をどこに置くかを指定します。
デフォルト値として、範囲選択画面で選択した範囲の中心が自動入力されるので、
Expand Down Expand Up @@ -178,9 +230,50 @@
このインスペクタから緯度、経度などの情報を確認できます。
![](../resources/manual/importCityModels/InstancedCityModelInspector.png)

### デフォルトマテリアルの見た目を変えたいとき
PLATEAU SDKでは地物タイプごとにデフォルトマテリアルが用意されています。
例えば、下図の建物には建築物のデフォルトマテリアルが適用されています。
![](../resources/manual/importCityModels/defaultBuilding.png)
このマテリアルは独自のPlateauTriplanarシェーダーを利用しているため、UVのない地物にもテクスチャを投影できます。
PLATEAUのモデルにはUVが**ない**場合があります。
そのため、ご自分で見た目をカスタマイズする場合でも、SDK付属のPlateauTriplanarシェーダー、またはそれと同様のTriplanar機能を有したシェーダーを利用することを推奨します。
以下に同シェーダーを使ったマテリアルの作成方法を説明します。
#### SDK付属のシェーダーについて
PLATEAU SDKには以下の3つのシェーダーが付属しています。
どれもUVなしでテクスチャを投影できるのが特徴です。
- `PlateauTriplanarShader(Opaque)`
- 通常のTriplanarシェーダーです。
- `PlateauTriplanarShader(Transparent)`
- 半透明なTriplanarシェーダーです。
- `PlateauTriplanarShader(DualTextures)`
- 上下を向いた面と横を向いた面で異なる見た目を表現するTriplanarシェーダーです。
- 利用例:建築物の上を向いた面をコンクリートの屋根に、側面を窓付きの壁にしたい場合などに利用できます。

このシェーダーを使ってマテリアルを作成する手順は次のとおりです:
- 新しいマテリアルを新規作成し、そのシェーダーを PlateauTriplanarShader/PlateauTriplanarShader(Opaque, Transparent, DualTexturesのいずれか)にします。
- マテリアルにテクスチャを割り当て、設定します。設定項目は次のとおりです:
- `MainTexture` : メインのテクスチャです。
- `NormalMap` : ノーマルマップです。
- `NormalMapStrength` : ノーマルマップの強さです。
- `Tiling` : テクスチャをタイリングさせる大きさです。
- `Blend` : ポリゴンの向きに応じてテクスチャをブレンドさせる程度です。
- `Metallic` : メタリック(金属感の強さ)です。
- `MetallicTexture` : メタリックを表現するテクスチャです。
- `Roughness` : ラフネス(ざらざら感の強さ)です。
- `RoughnessTexture` : ラフネスを表現する強さです。
- `AmbientOcclusion` : アンビエントオクルージョン(環境光の影響を受ける程度)です。
- `AmbientOcclusionTex` : アンビエントオクルージョンを表現するテクスチャです。
- `EmissionColor` : エミッション(発光)の色です。
- `EmissionTexture` : エミッションを表現するテクスチャです。
- `Opacity`(Transparentシェーダーのみ) : 不透明度です。

DualTextureシェーダーでは、上記の設定値がそれぞれ`Top``Side`の2つに分かれます。Topは上下面、Sideは側面の見た目を設定します。

- 自作したマテリアルは、インポート後にドラッグ&ドロップ等で適用できるほか、インポートの設定項目として「デフォルトマテリアル」に指定できます。

### エラーログの確認

インポートの結果、計算状況ウィンドウの内容がすべて「完了」となれば良いですが、
ロードできなかったgmlファイルに関しては「失敗」と表示されます。
そのような場合でも、一部のgmlファイルのロードが成功していれば、そのgmlに関しては正常にインポートされています。
そのような場合でも、他のgmlファイルのロードが成功していれば、そのgmlに関しては正常にインポートされています。
失敗の場合は Unityのコンソールにエラーログが出力されます。
17 changes: 12 additions & 5 deletions Documentation~/manual/Installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@
このページでは PLATEAU SDK for Unity のインストール方法を説明します。

## 対応Unityバージョンのインストール
- PLATEAU SDK for Unity は、Unityバージョン `2021.3` を想定しています
- PLATEAU SDK for Unity で想定するUnityバージョンが[リリースページ](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases)に記載されています
そのバージョンがインストールされていない場合は、次の手順でインストールしてください。
- [Unity Hub をこちらからインストールします](https://unity3d.com/jp/get-unity/download)
- Unity Hub とは、Unityのお好きなバージョンをインストールして起動することのできるソフトウェアです。
- Unity Hubを起動し、左のサイドバーから`インストール` → 右上のボタンから`エディターをインストール` をクリックします。
![](../resources/manual/installation/unityHub.png)
- Unity 2021.3 で始まるバージョンを選択し`インストール`を押します。
- SDK対応のUnityバージョンを選択し`インストール`を押します。
![](../resources/manual/installation/unityHubSelectVersion.png)

## Unityプロジェクトの作成
- Unity Hub の左サイドバーの`プロジェクト` を押し、右上の`新しいプロジェクト`ボタンをクリックします。
![](../resources/manual/installation/unityHubNewProjectVersion.png)
- 新しいプロジェクトの設定画面で、次のように設定します。
- 画面上部の `エディターバージョン` `2021.3` で始まる番号にします
- 画面上部の `エディターバージョン`[リリースページ](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases)に記載のバージョンにします
- 画面中部の`テンプレート``3D` を選択します。
- 画面右下のプロジェクト名をお好みのものに設定します。
- `プロジェクトを作成`ボタンを押します。
Expand All @@ -32,13 +32,16 @@ PLATEAU SDK for Unity の導入方法は2通りあります。

### tgzファイルから導入する方法
- [PLATEAU SDK for Unity のリリースページ](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases) から tgzファイルをダウンロードします。
- ファイルは解凍せず、そのまま利用します。
- Unityのメニューバーから `Window``Package Manager` を選択します。
- Package Manager ウィンドウの左上の+ボタンから `Add pacakge from tarball...` を選択します。
![](../resources/manual/installation/addPackageFromTarball.png)
- ウィンドウのパッケージ一覧に `Plateau Unity SDK` が表示されたら完了です。
![](../resources/manual/installation/packageInstalled.png)

### gitのURL指定で導入する方法
### GitのURL指定で導入する方法
- Gitを用いて導入するには、Git LFSがお使いのコンピュータにインストールされている必要があります。
- Git LFSのインストール方法については[こちら](https://docs.github.com/ja/repositories/working-with-files/managing-large-files/installing-git-large-file-storage)を参照してください。
- 導入したいバージョンを確認するため、 [PLATEAU SDK for Unity のリリースページ](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases) にアクセスします。
- リリースのリンクをクリックし、導入したいバージョンのタグ(画像の箇所)をメモします。
![](../resources/manual/installation/releaseTag.png)
Expand All @@ -53,4 +56,8 @@ PLATEAU SDK for Unity の導入方法は2通りあります。
タグ名を記載することを推奨します。
- `Add` ボタンを押します。
- ウィンドウのパッケージ一覧に `Plateau Unity SDK` が表示されたら完了です。
![](../resources/manual/installation/packageInstalled.png)
![](../resources/manual/installation/packageInstalled.png)

### トラブルシューティング
うまく導入できない場合、次のことをご確認ください。
- お使いのウイルス対策ソフトによっては、SDKに含まれるバイナリファイルが削除されることがあります。ウィルス対策ソフトによってSDKのファイルが削除されないよう設定をお願いします。
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions Editor/CityImport/CityLoadConfigGUI.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using PLATEAU.CityImport.Setting;
using PLATEAU.Editor.CityImport.PackageLodSettingGUIs;
using PLATEAU.Editor.EditorWindow.Common;
using UnityEditor;
using UnityEngine;
Expand Down
Loading

0 comments on commit f430db6

Please sign in to comment.