Skip to content

Commit feb5bb6

Browse files
authored
Update README.md
1 parent 2f3bc77 commit feb5bb6

File tree

1 file changed

+33
-47
lines changed

1 file changed

+33
-47
lines changed

README.md

Lines changed: 33 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,35 @@
11

22
[![Build and Test](https://github.com/Synesthesias/libplateau/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/Synesthesias/libplateau/actions/workflows/build-and-test.yml)
33

4-
# LibPLATEAU
4+
# libplateau
5+
libplateauはPLATEAUの3D都市モデルを扱うためのC++ライブラリであり、以下の機能を提供しています。
6+
- CityGMLのパース
7+
- CityGMLのジオメトリのポリゴンメッシュへの変換
8+
- 緯度経度座標の直交座標系への変換
9+
- XYZタイル形式のベースマップへのアクセス
10+
- 3Dファイル形式へのエクスポート
11+
- REST APIを使用したPLATEAUのサーバーへのアクセス
512

6-
- クロスプラットフォーム(iOS, android, windows, ubuntu)
7-
- C++, C# 向けapiの提供
13+
libplateauはロジックの共通化により[PLATEAU SDK for Unity](https://github.com/Synesthesias/PLATEAU-SDK-for-Unity)[PLATEAU SDK for Unreal](https://github.com/Synesthesias/PLATEAU-SDK-for-Unreal)の開発を加速させるために活用されています。
814

915
## 開発環境
1016
- CMake 3.8以降
1117

1218
### Windows
1319
- Visual Studio 2022
14-
- cmake使うためVisual Studio Installerから`C++によるデスクトップ開発`のインストールが必要
20+
- cmakeを使うためVisual Studio Installerから`C++によるデスクトップ開発`のインストールが必要です。
1521

1622
## セットアップ
1723
### リポジトリクローン
1824
```
25+
git lfs install
1926
git clone https://github.com/Synesthesias/libplateau
2027
cd libplateau
21-
git lfs install
2228
git submodule update --init --recursive
2329
```
2430

2531
## ビルド
26-
ビルドの方法について、全OSで共通の留意点を記したあと、
27-
OSごとのビルド方法を記載します。
32+
ビルドの方法について、全OSで共通の留意点を記したあと、OSごとのビルド方法を記載します。
2833

2934
### 共通
3035

@@ -107,36 +112,26 @@ dotnet test -c Release
107112
- dotnet Core 3.1 を利用します。
108113
- IDEにRiderを利用している場合、デフォルトで dotnet core 7 になっているので 3.1 をインストールしてそちらを利用するように設定を変えます。
109114

110-
## サンプル
111-
### log_skipped_elements
112-
パース出来なかった要素をすべて列挙します。
113-
Visual Studioの実行ターゲットを`log_skipped_elements.exe`にして実行します。
114-
115-
### export_obj
116-
.obj, .mtlをエクスポートします。
117-
118115
## デプロイ
119116
### Unity
120-
PlateauUnitySDKへの導入については、そちらのREADMEを参照してください。
117+
PLATEAU SDK for Unityへの導入については、そちらのREADMEを参照してください。
121118

122119
## ディレクトリ構成
123120
- 3rdparty
124121
- 外部ライブラリはすべてここにsubmoduleで追加します。(fbx_sdkは例外です。)
125122
- 利用ライブラリについては後述の「ライセンス管理」を参照してください。
126123
- data
127-
- テスト用のデータを置きます。ビルド時に出力先ディレクトリにコピーされます。
128-
- examples
129-
- サンプルです。
124+
- テスト用のデータを配置します。ビルド時に出力先ディレクトリにコピーされます。
130125
- include
131-
- ヘッダファイル一式です
126+
- ヘッダファイル一式を配置します
132127
- src
133-
- 内部実装のソースコードです
128+
- 内部実装のソースコードを配置します
134129
- test
135-
- ユニットテストです
130+
- ユニットテストを配置します
136131
- wrappers
137-
- 他言語向けのwrapper実装です
132+
- 他言語向けのwrapper実装を配置します
138133
- .github/workflows
139-
- Github Actions で自動テストを行うためのファイルです
134+
- Github Actionsのワークフロー設定を配置します
140135

141136
## テストデータ
142137
テストデータの詳細については ```data/README.md``` を参照してください。
@@ -164,15 +159,16 @@ Windows, Mac, Linux でのテストと成果物のダウンロードができま
164159
# コード規約
165160
- 変数名は snake_case , 関数名は lowerCamel
166161
- private static メソッドはヘッダファイルに書かず、.cppの無名名前空間に書く
167-
- 外に見せる必要の無いクラス (C#でいう internal クラス) のヘッダーファイルの配置ディレクトリは include ではなく src
162+
- 外に見せる必要の無いクラス (C#でいうinternalクラス) のヘッダーファイルの配置ディレクトリはincludeではなくsrc
168163
- `[[nodiscard]]` は書かない
169164
- ファイルの末尾は改行
170165
- 何かの個数を取得する関数名は `get(単数形)Count`
171166
- `*` `&` の位置は左寄せ (`SomeType *foobar` ではなく `SomeType* foobar`)
172167
- Unreal Engine で利用する都合上、ヘッダーファイルで `std::filesystem` は利用しない
173168
- .cppファイル内での利用は可
174-
- パスの受け渡しは string(中身はutf8形式) で行い、`.cpp`内で `auto path = std::filesystem::u8path(path_str)` で path に直すのが良い
175-
- コンテナ要素へのアクセスは `[i]` ではなく `.at(i)` を用いる。Unityからの利用で範囲外アクセスになったとき、前者は例外も出さずに問答無用でUnityが落ちる。後者は例外として補足できる。
169+
- パスの受け渡しは string(中身はutf8形式) で行い、`.cpp`内で`auto path = std::filesystem::u8path(path_str)`でpathに直す
170+
- コンテナ要素へのアクセスは`[i]`ではなく`.at(i)`を用いる。
171+
- Unityから利用する際範囲外アクセスでクラッシュしてしまうため。後者は例外として捕捉できる。
176172

177173
# トラブルシューティング
178174
- **Q.** 手元のマシンではユニットテストが通るのに、CIサーバーの自動テストが通りません。
@@ -182,28 +178,24 @@ Windows, Mac, Linux でのテストと成果物のダウンロードができま
182178
パスの文字列をUTF8で扱えていれば、システムロケールが英語でも日本語でも日本語を含むパス文字列に対応します。
183179
しかし、パス文字列をUTF8で扱えていなければ、システムロケールが英語のとき、日本語名を含むパス文字列は文字化けします。
184180

185-
186181
# ライセンス
187182
## ライセンス制約
188-
libcitygml は LGPL ライセンスのため、libcitygml と静的リンクする libplateau にも LGPLライセンスが伝播します。
189-
したがって、このリポジトリはLGPLライセンスで公開しなければなりません。
190-
なお、libplateauと動的リンクする PLATEAU SDK for Unity には LGPLライセンスは伝播しません
183+
- libcitygmlはLGPLライセンスのため、libplateauにもLGPLライセンスが伝播します。
184+
- 上記により、このリポジトリはLGPLライセンスで公開しなければなりません。
185+
- libplateauと動的リンクするPLATEAU SDK for Unity、PLATEAU SDK for UnrealにはLGPLライセンスは伝播しません
191186

192187
## ライセンス管理
193-
サードパーティソフトの権利表記を ThirdPartyNotices.md に記載してください。
194-
195-
- libplateau本体
196-
- 未定
188+
サードパーティソフトの権利表記をThirdPartyNotices.mdに記載してください。
197189

198190
- libcitygml
199191
- [https://github.com/Synesthesias/libcitygml.git](https://github.com/Synesthesias/libcitygml.git)
200-
- 用途: gmlファイルのパースに利用
192+
- 用途: CityGMLのパース
201193
- ライセンス: GNU Lesser General Public License v2.1
202194

203195
- xerces-c
204196
- [https://github.com/Synesthesias/xerces-c.git](https://github.com/Synesthesias/xerces-c.git)
205197
- 用途: libcitygmlの依存ライブラリ
206-
- ライセンス: Apache-2.0 , 要 著作権表示 , 要 改変したことの告知
198+
- ライセンス: Apache-2.0要 著作権表示要 改変したことの告知
207199

208200
- libxml2
209201
- [https://github.com/GNOME/libxml2](https://github.com/GNOME/libxml2)
@@ -212,20 +204,19 @@ libcitygml は LGPL ライセンスのため、libcitygml と静的リンクす
212204

213205
- cpp-httplib
214206
- [https://github.com/yhirose/cpp-httplib.git](https://github.com/yhirose/cpp-httplib.git)
215-
- 用途: APIサーバーへのアクセスに利用
207+
- 用途: APIサーバーへのアクセス
216208
- ライセンス: MIT
217209

218210
- glTF-SDK
219211
- [https://github.com/microsoft/glTF-SDK](https://github.com/microsoft/glTF-SDK)
220-
- 用途: glTF形式でのエクスポートに利用
212+
- 用途: glTF形式でのエクスポート
221213
- ライセンス: MIT
222214

223215
- json
224216
- [https://github.com/nlohmann/json.git](https://github.com/nlohmann/json.git)
225-
- 用途: APIサーバーから受け取るjsonのパースに利用
217+
- 用途: APIサーバーから受け取るjsonのパース
226218
- ライセンス: MIT
227219

228-
229220
- openssl-cmake
230221
- [https://github.com/janbar/openssl-cmake](https://github.com/janbar/openssl-cmake)
231222
- ライセンス: dual-license (the OpenSSL license plus the SSLeay license)
@@ -234,17 +225,12 @@ libcitygml は LGPL ライセンスのため、libcitygml と静的リンクす
234225
- [https://github.com/madler/zlib](https://github.com/madler/zlib)
235226
- ライセンス: 独自(再配布可)
236227

237-
- gtest
238-
- [https://github.com/google/googletest](https://github.com/google/googletest)
239-
- 用途: C++のユニットテスト
240-
- ライセンス: [BSD-3-Clause license](https://github.com/google/googletest/blob/main/LICENSE)
241-
242228
- pybind11
243229
- [https://github.com/pybind/pybind11.git](https://github.com/pybind/pybind11.git)
244230
- 用途: SDKのpython対応(開発停止中)
245231
- ライセンス: BSD-style license
246232

247233
- FBXSDK
248234
- [https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2020-3-1](https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2020-3-1)
249-
- 用途: fbx形式でのエクスポート機能
235+
- 用途: fbx形式でのエクスポート
250236
- ライセンス: 独自

0 commit comments

Comments
 (0)