Skip to content

Commit

Permalink
Merge pull request Synesthesias#196 from Synesthesias/release/v2.2.0
Browse files Browse the repository at this point in the history
Release/v2.2.0
  • Loading branch information
linoal authored Nov 15, 2023
2 parents a29929c + 24fc1e9 commit 42abe06
Show file tree
Hide file tree
Showing 718 changed files with 4,063 additions and 44,631 deletions.
15 changes: 15 additions & 0 deletions Documentation~/manual/ChangeColorByAttrs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 属性情報によって色分けする
![](../resources/manual/changeColorByAttrs/screenShot.png)
このサンプルでは、土地計画決定情報に関する属性情報を読み取り、それに応じてランタイムで色を変えます。

このサンプルは次の場所にあります:
```(PLATEAU SDKのサンプルディレクトリ)/AttributesColorSample/AttributesSample.unity```
サンプルシーンを開き、Unityの再生ボタンを押すと地域ごとに色が付きます。
なお、実行には時間がかかる場合があります。

属性情報を読み取り、色を変えるスクリプトは次の場所にあります:
```(PLATEAU SDKのサンプルディレクトリ)/AttributesColorSample/AttributesColorSample.cs```

このスクリプトでは、都市の各ゲームオブジェクトに付与されているコンポーネントである`PLATEAUCityObjectGroup`から情報を読み取ります。
同コンポーネントから`CityObject`を取得し、そこから属性情報である`AttributesMap`にアクセスできます。
詳しくはスクリプトを参照してください。
16 changes: 16 additions & 0 deletions Documentation~/manual/DisplayAttrs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 属性情報を表示する
![](../resources/manual/displayAttrs/screenShot.png)
このサンプルを再生して地物をクリックすると、その属性情報が画面に表示されます。

このサンプルは次の場所にあります:
```(PLATEAU SDKのサンプルディレクトリ)/AttributesDisplaySample/AttributesDisplaySample.unity```

サンプルスクリプトは次の場所にあります:
```(PLATEAU SDKのサンプルディレクトリ)/AttributesDisplaySample/Scripts```
- ClickToShowAttributes.cs
- クリックされた地物の情報を取得し、UIに送ります。
- クリックされた地物に付与されている`PLATEAUCityObjectGroup`から`CityObject`を取得し、`cityObj.DebugString()`で文字列にします。
- AttributesDisplay.cs
- 情報表示のUIを制御します。

詳しくはスクリプトを参照してください。
20 changes: 16 additions & 4 deletions Documentation~/manual/ImportCityModels.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,26 @@
![](../resources/manual/importCityModels/sceneSaveDialogue.png)
- シーンビューの表示が切り替わり、範囲選択画面になります。
![](../resources/manual/importCityModels/areaSelectWindow.png)
- 範囲選択画面の操作方法
- 範囲選択画面の操作方法
- マウスホイールを上下に回してズームアウト、ズームインします。
- マウスホイールを押し込んだままドラッグしてカメラ移動します。
- 範囲の選択方法については、画面右下に説明があるとおり、
- クリックで選択/選択解除
- ドラッグで矩形での選択追加
- Shift+ドラッグで矩形での選択除外をします。
- シーンビュー左上の`決定`ボタンを押して範囲を確定します。すると元のシーンに戻ります。
- 画面のみかた
- 画面のみかた
- 青色の線は利用可能な地域を示します。
- 地域ごとに利用可能なGML種別と対応LODがアイコン形式で表示されます。
- 対応LODは色で表現されます。画面左下の凡例の色と対応します。
- アイコンが多すぎると感じる場合は、画面左下の凡例のチェックを切り替えることでアイコンの表示/非表示をLODごとに切り替えることができます。
- 地図は国土地理院のサイトから自動でダウンロードされて表示されます。インターネットへの接続が必要です。
- 区域に表示される番号は、後述の`indexmap.pdf` に記載の番号と同じです。
- メッシュコード検索機能
- シーンビュー左上の`メッシュコード検索`ボタンを押すと、メッシュコードの番号(地図上で青色で表示される数字)で検索できます。
- 番号を入力してOKボタンを押すと、その範囲に視界が移動します。

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

> [!NOTE]
> 範囲選択画面では、通常はガイド線が格子状に並び、地図は隙間無く表示されます。
Expand All @@ -82,14 +87,21 @@
### 地物別設定
地物の種類ごとにインポートに関する設定を行います。
![](../resources/manual/importCityModels/importPerPackageConfig.png)
**設定項目について:**

#### 設定項目について:

- `一括設定`
- 複数の地物タイプをまとめて設定したい場合に編集してください。
- 地物タイプごとの設定で「一括設定と同じ」を選択したときに、この設定が適用されます。
- 「一括設定と同じ」のチェックを外したときは、一括設定にかかわらず、個別に設定を上書きするためのメニューが表示されます。
- 各設定の意味については後述します。
- `インポートする`
- チェックが付いている地物タイプのみインポートします。
- `テクスチャを含める`
- テクスチャが存在する地物タイプで表示される設定項目です。
チェックが付いていて、かつテクスチャがある場合はそれを含めてインポートします。
都市データによってはテクスチャがない場合があり、
その場合はチェックを外した時と同様に真っ白な3Dモデルが出力されます
その場合はチェックを外した時と同様にデフォルトマテリアルが適用されます
- `テクスチャを結合する`
- テクスチャを含める場合、テクスチャを結合するかしないかを設定します。
- PLATEAUのデータはテクスチャの枚数が多い傾向にあり、結合しないと描画負荷が高くなる傾向にあります。
Expand Down
47 changes: 41 additions & 6 deletions Documentation~/manual/ModelAdjust.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
# モデル調整
インポートした都市オブジェクトに対して、条件指定で一括でアクティブ化・非アクティブ化する機能について説明します。
## モデル調整タブ
# モデル修正

## 概要

PLATEAUウィンドウの`モデル修正`では、インポートした都市モデルを編集できます。
次の機能があります。
- ゲームオブジェクトON/OFF
- 条件指定で一括でアクティブ化・非アクティブ化します。
- 結合・分離
- モデルを結合・分離し、ゲームオブジェクトの粒度を変更します。

### 操作画面の開き方

- Unityのメニューバーから `PLATEAU``PLATEAU SDK` を選択します。
- ウィンドウ上部のタブのうち `モデル調整` を選択します。
![](../resources/manual/cityAdjust/cityAdjustTab.png)
- この画面で条件指定をしてフィルタリングできます。
- その下のタブで`ゲームオブジェクトON/OFF``結合/分離`を切り替えて表示します。


## ゲームオブジェクトON/OFF機能
![](../resources/manual/cityAdjust/gameObjOnOff.png)
- 条件指定をしてフィルタリングできます。
- ここでいうフィルタリングとは、条件に合致するゲームオブジェクトをアクティブにし、そうでないものを非アクティブにすることを指します。
- 「重複する地物を表示」にチェックを入れた場合、フィルタリング後に重複している地物について、
もっともLODが高いもののみを残してそれ以外を非表示にします。
Expand All @@ -19,4 +33,25 @@
> 例えば、インポート時に建物を「最小地物単位」に指定した場合、「窓」「屋根面」などでゲームオブジェクトが分かれているので、細かい分類のチェックマークが動作します。
> しかし、建物を「主要地物単位」にした場合、建物ごとにゲームオブジェクトが結合されているので、細かい「窓」「屋根面」といった分類は動作しません。
> 分類指定のチェックマークは入れ子構造になっていますが、第1階層の「建築物」「道路」といった分類は結合単位によらず必ず動作し、
> 第2階層の「窓」「屋根面」といった細かい分類はインポート時に「最小値物単位」にした場合のみ動作します。
> 第2階層の「窓」「屋根面」といった細かい分類はインポート時に「最小値物単位」にした場合のみ動作します。

## 結合/分離機能
![](../resources/manual/cityAdjust/splitCombineWindow.png)

### できること

- 選択されたゲームオブジェクトの粒度を変更します。
- 例えば、主要地物単位でインポートされたものを結合して地域単位にまとめたり、分解して最小地物単位にしたりできます。
- 属性情報も合わせて分割・結合されます。

### 操作方法

- `選択オブジェクト`には、現在選択中のゲームオブジェクトが表示されます。これが変換対象になります。
- 選び方は、変換したいゲームオブジェクトの親を1つ選択しても良いですし、変換したい地物を複数選択しても良いです。
- `単位`では変換後の結合粒度を指定します。
- `地域単位`: 3Dモデルが1つのゲームオブジェクトにまとまります。
- `主要地物単位`: 例えば建築物の場合、建物1つごとに1つのゲームオブジェクトになります。
- `最小地物単位`: 例えば建築物の場合、窓、屋根などのパーツごとに1つのゲームオブジェクトになります。
- `実行`ボタンで変換を実行します。
- 実行後、ダイアログが表示され、変換前のゲームオブジェクトを削除するか残すかを選択できます。
10 changes: 8 additions & 2 deletions Documentation~/manual/toc.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
- name: PLATEAU SDK for Unity
href: ../index.md
- name: 利用を開始する
- name: SDKの使い方
items:
- name: インストール
href: Installation.md
- name: 都市モデルのインポート
href: ImportCityModels.md
- name: 都市モデルのエクスポート
href: ExportCityModels.md
- name: モデル調整
- name: モデル修正
href: ModelAdjust.md
- name: 都市情報へのアクセス
href: AccessCityObject.md
- name: サンプル
items:
- name: 属性情報によって色分けする
href: ChangeColorByAttrs.md
- name: 属性情報を表示する
href: DisplayAttrs.md
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
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.
9 changes: 7 additions & 2 deletions Editor/CityExport/UnityModelExporter.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using System.IO;
using PLATEAU.CityExport.ModelConvert;
using PLATEAU.CityInfo;
using PLATEAU.Editor.CityExport.ModelConvert;
using PLATEAU.Native;
using UnityEngine;

Expand Down Expand Up @@ -61,7 +61,12 @@ public static void Export(string destDir, PLATEAUInstancedCityModel instancedCit
};

// Unity のメッシュを中間データ構造(Model)に変換します。
using var model = UnityMeshToDllModelConverter.Convert(childTrans.gameObject, options.ExportTextures, options.ExportHiddenObjects, false, options.MeshAxis, vertexConvertFunc);
var convertTargets = new GameObject[childTrans.childCount];
for (int j = 0; j < childTrans.childCount; j++)
{
convertTargets[j] = childTrans.GetChild(j).gameObject;
}
using var model = UnityMeshToDllModelConverter.Convert(convertTargets, options.ExportTextures, options.ExportHiddenObjects, vertexConvertFunc);

// Model をファイルにして出力します。
// options.PlateauModelExporter は、ファイルフォーマットに応じて FbxModelExporter, GltfModelExporter, ObjModelExporter のいずれかです。
Expand Down
4 changes: 2 additions & 2 deletions Editor/CityImport/AreaSelector/AreaSelectorStarter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ public static void Start(DatasetSourceConfig datasetSourceConfig, IAreaSelectRes

if (AreaSelectorBehaviour.IsAreaSelectEnabled)
{
EditorUtility.DisplayDialog("PLATEAU SDK", "範囲選択画面がすでに開いています。\nシーンビュー左上の決定ボタンを押して選択を確定してください。", "OK");
Dialogue.Display( "範囲選択画面がすでに開いています。\nシーンビュー左上の決定ボタンを押して選択を確定してください。", "OK");
return;
}

string prevScenePath = SceneManager.GetActiveScene().path;
if (string.IsNullOrEmpty(prevScenePath))
{
EditorUtility.DisplayDialog("PLATEAU SDK", "シーンが未保存です。\n保存してから再度実行してください。", "OK");
Dialogue.Display("シーンが未保存です。\n保存してから再度実行してください。", "OK");
return;
}

Expand Down
48 changes: 6 additions & 42 deletions Editor/CityImport/CityLoadConfigGUI.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System;
using PLATEAU.CityImport.Setting;
using PLATEAU.Editor.CityImport.PackageLodSettingGUIs;
using PLATEAU.CityImport.Config;
using PLATEAU.CityImport.Config.PackageLoadConfigs;
using PLATEAU.Editor.CityImport.PackageLoadConfigGUIs;
using PLATEAU.Editor.CityImport.PackageLoadConfigGUIs.Components;
using PLATEAU.Editor.EditorWindow.Common;
using UnityEditor;
using UnityEngine;

namespace PLATEAU.Editor.CityImport
{
Expand All @@ -20,7 +20,7 @@ public CityLoadConfigGUI(CityLoadConfig cityLoadConf, PackageToLodDict available
// パッケージ種ごとの設定GUI、その下に基準座標設定GUIが表示されるようにGUIコンポーネントを置きます。
guiComponents = new IEditorDrawable[]
{
new PackageLoadSettingGUIList(availablePackageLodsArg, cityLoadConf),
new PackageLoadConfigGUIList(availablePackageLodsArg, cityLoadConf),
new PositionConfGUI(cityLoadConf)
};
}
Expand All @@ -36,42 +36,6 @@ public void Draw()
}
}

/// <summary>
/// インポートの基準座標を選択するGUIです。
/// </summary>
private class PositionConfGUI : IEditorDrawable
{
private CityLoadConfig conf;
public PositionConfGUI(CityLoadConfig conf)
{
this.conf = conf;
}

public void Draw()
{
using (PlateauEditorStyle.VerticalScopeLevel1())
{
PlateauEditorStyle.Heading("基準座標系からのオフセット値(メートル)", null);

using (PlateauEditorStyle.VerticalScopeLevel1())
{
var refPoint = conf.ReferencePoint;
PlateauEditorStyle.CenterAlignHorizontal(() =>
{
if (PlateauEditorStyle.MiniButton("範囲の中心点を入力", 140))
{
GUI.FocusControl("");
refPoint = conf.SetReferencePointToExtentCenter();
}
});

refPoint.X = EditorGUILayout.DoubleField("X (東が正方向)", refPoint.X);
refPoint.Y = EditorGUILayout.DoubleField("Y (高さ)", refPoint.Y);
refPoint.Z = EditorGUILayout.DoubleField("Z (北が正方向)", refPoint.Z);
conf.ReferencePoint = refPoint;
}
}
}
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using PLATEAU.CityImport.Config.PackageLoadConfigs;
using UnityEditor;
using UnityEngine;

namespace PLATEAU.Editor.CityImport.PackageLoadConfigGUIs.Components
{
/// <summary>
/// デフォルトマテリアルの設定GUIです。
/// </summary>
internal class FallbackMaterialGUI : PackageLoadConfigGUIComponent
{
public FallbackMaterialGUI(PackageLoadConfig conf) : base(conf)
{
}

public override void Draw()
{
Conf.FallbackMaterial = (Material)EditorGUILayout.ObjectField("デフォルトマテリアル",
Conf.FallbackMaterial, typeof(Material), false);
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions Editor/CityImport/PackageLoadConfigGUIs/Components/LodGUI.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using PLATEAU.CityImport.Config.PackageLoadConfigs;
using PLATEAU.Dataset;
using PLATEAU.Editor.EditorWindow.Common;

namespace PLATEAU.Editor.CityImport.PackageLoadConfigGUIs.Components
{
/// <summary>
/// LOD範囲の設定GUIです。
/// </summary>
internal class LodGUI : PackageLoadConfigGUIComponent
{
public LodGUI(PackageLoadConfig conf) : base(conf)
{
}

public override void Draw()
{
var predefined = CityModelPackageInfo.GetPredefined(Conf.Package);
int minLOD = Conf.LODRange.MinLOD;
int maxLOD = Conf.LODRange.MaxLOD;
int availableMaxLOD = Conf.LODRange.AvailableMaxLOD;
PlateauEditorStyle.LODSlider("LOD描画設定", ref minLOD, ref maxLOD,
Math.Min(predefined.minLOD, availableMaxLOD), availableMaxLOD);
Conf.LODRange = new LODRange(minLOD, maxLOD, availableMaxLOD);
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 42abe06

Please sign in to comment.