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
1926git clone https://github.com/Synesthesias/libplateau
2027cd libplateau
21- git lfs install
2228git 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