libplateauはPLATEAUの3D都市モデルを扱うためのC++ライブラリであり、以下の機能を提供しています。
libplateauはロジックの共通化によりPLATEAU SDK for UnityとPLATEAU SDK for Unrealの開発を加速させるために活用されています。
C++によるデスクトップ開発
のインストールが必要です。git lfs install
git clone https://github.com/Synesthesias/libplateau
cd libplateau
git submodule update --init --recursive
ビルドの方法について、全OSで共通の留意点を記したあと、OSごとのビルド方法を記載します。
お手数をおかけして申し訳ございませんが、libplateau をビルドするには別途 fbx_sdk が必要です。
fbx_sdk は Autodesk社が公開するSDKです。これは自由に製品に組み込んで良いものの、オープンソースではなく、再配布は禁止となっております。
そのため、libplateau 自体はオープンソースですが、例外的に fbx_sdk のみ別途ご用意頂く形になっております。
ビルドするためには、Autodesk社が配布しているSDKを指定のディレクトリに配置する必要があります。
3rdparty/fbx_sdk/2020.3.1
以下に配置します。2020.3.1
以下のディレクトリ構成は、別添のテキストファイル file_tree_of_fbxsdk.txt
を参照してください。 CSharpPLATEAU.dll
は使いません。
なお、Visual Studio ではビルドディレクトリの冒頭に ${projectDir}/
を付けてください。CLion では ${projectDir}/
は不要です。
Unity向けRelease (Windows, Mac, Ubuntu共通)
ビルドタイプ(構成の種類,CMAKE_BUILD_TYPE) : RelWithDebInfo
ビルドディレクトリ(ビルドルート) : out/build/x64-Release-Unity
CMakeコマンド引数 : -DBUILD_LIB_TYPE=dynamic -DRUNTIME_LIB_TYPE=MT
Unity向けDebug (Windows, Mac, Ubuntu共通)
ビルドタイプ(構成の種類,CMAKE_BUILD_TYPE) : Debug
ビルドディレクトリ : out/build/x64-Debug-Unity
CMakeコマンド引数 : -DBUILD_LIB_TYPE=dynamic -DRUNTIME_LIB_TYPE=MD
Mac, Ubuntu : Unreal向けRelease
ビルドタイプ(構成の種類,CMAKE_BUILD_TYPE) : RelWithDebInfo
ビルドディレクトリ : out/build/x64-Release-Unreal
CMakeコマンド引数 : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD
Windows : Unreal向けRelease
ビルドタイプ : RelWithDebInfo
ビルドディレクトリ : out/build/x64-Release-Unreal
CMakeコマンド引数(Visual Studio向け) : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD
CMakeオプション(CLion向け) : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo
Mac, Ubuntu : Unreal向けDebug
注意: Debug ライブラリは通常の Unreal Engine では動きません。通常はReleaseを利用してください。
ビルドタイプ(構成の種類,CMAKE_BUILD_TYPE) : Debug
ビルドディレクトリ : out/build/x64-Debug-Unreal
CMakeコマンド引数 : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD
Windows : Unreal向けDebug
注意: Debug ライブラリは通常の Unreal Engine では動きません。通常はReleaseを利用してください。
ビルドタイプ(構成の種類,CMAKE_BUILD_TYPE) : Debug
ビルドディレクトリ : out/build/x64-Debug-Unreal
CMakeコマンド引数(Visual Studio向け) : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD
CMakeオプション(CLion向け) : -DBUILD_LIB_TYPE=static -DRUNTIME_LIB_TYPE=MD -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX="C:/ninja" -DCMAKE_BUILD_TYPE=Debug
トラブルシューティング
- CMakeの構成時に GTest に関するエラーが1件出ますが、無視で大丈夫です。
- IDEは Jetbrains CLion を利用していて、CMake の find_program(MSVC_LIB_TOOL lib.exe) がうまくいかない場合、 CLionのインストール時の設定で Add “bin” folder to the PATH にチェックを入れてください。
out/build/x64-Debug-Unity or x64-Release-Unity
にあるCSharpPLATEAU.Test.csproj
に記載されており、C#のリビルド時に実行されるはずです。Upload Dlls
というワークフローを手動実行すると、out/build/x64-Release(またはDebug)-Unity/bin/plateau.dll
です。out/build/x64-Release-Unreal/src/plateau_combined.lib
がです。plateau_test
を実行することでユニットテストを実行可能です
wrappers/csharp/LibPLATEAU.NET.sln
を開きます。利用する Linux は、Unityの対応OSに合わせて Ubuntu 20.04 とします。
Ubuntu 20 はデフォルトでは git lfs がないので、sudo apt install git-lfs
します。
OpenGL API が必要なので、なければ以下のコマンドでインストールします。
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
glTF-sdk のビルドのために PowerShell が必要なので、このWebページを参考に Ubuntu向け PowerShell をインストールします。
CMake でビルドするために、Linux向けの CLion を利用することもできますが、代わりに次のコマンドからもビルドできます:
Unity向けの場合:
cd (プロジェクトのルートディレクトリ)
cmake -S . -B ./out/build/x64-Release-Unity/ -G "Ninja" -D CMAKE_BUILD_TYPE:STRING="RelWithDebInfo" -D CMAKE_INSTALL_PROGRAM="ninja" -D CMAKE_CXX_FLAGS="-w" -D BUILD_LIB_TYPE=dynamic -D RUNTIME_LIB_TYPE=MT
cmake --build ./out/build/x64-Release-Unity/ --config RelWithDebInfo
ただし Debug ビルドの場合は RUNTIME_LIB_TYPE=MD
Unreal Engine向けの場合:
cmake -S . -B ./out/build/x64-Release-Unreal/ -G "Ninja" -D CMAKE_BUILD_TYPE:STRING="RelWithDebInfo" -D CMAKE_INSTALL_PROGRAM="ninja" -D CMAKE_CXX_FLAGS="-w" -D BUILD_LIB_TYPE=static -D RUNTIME_LIB_TYPE=MD
cmake --build ./out/build/x64-Release-Unreal/ --config RelWithDebInfo
cd (プロジェクトのルートディレクトリ)
cd ./wrappers/csharp/LibPLATEAU.NET
dotnet build -c Release
dotnet test -c Release
out/build/x64-Release(またはDebug)-Unity/src/libplateau.dylib
out/build/x64-Release(またはDebug)-Unreal/src/libplateu_combined.a
PLATEAU SDK for Unityへの導入については、そちらのREADMEを参照してください。
テストデータの詳細については data/README.md
を参照してください。
モックサーバーについては PLATEAU-API-Mock-v3 を参照してください。
Github Actions によるCIを導入しています。
Windows, Mac, Linux でのテストと成果物のダウンロードができます。
all-library
という名前のzipでダウンロードできます。[[nodiscard]]
は書かないget(単数形)Count
*
&
の位置は左寄せ (SomeType *foobar
ではなく SomeType* foobar
)std::filesystem
は利用しない
.cpp
内でauto path = std::filesystem::u8path(path_str)
でpathに直す[i]
ではなく.at(i)
を用いる。
サードパーティソフトの権利表記をThirdPartyNotices.mdに記載してください。
libcitygml
xerces-c
libxml2
cpp-httplib
glTF-SDK
glm
json
openssl-cmake
zlib
pybind11
FBXSDK
libjpeg-turbo
libpng
libtiff