Skip to content

Commit

Permalink
Merge branch 'release/v2.2.0_market_place'
Browse files Browse the repository at this point in the history
  • Loading branch information
linoal committed Feb 8, 2024
2 parents 6929ddb + 4cb3077 commit 8a1a214
Show file tree
Hide file tree
Showing 16 changed files with 82 additions and 28 deletions.
3 changes: 2 additions & 1 deletion Config/FilterPlugin.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
/Documentation/...
/README_Images/...
/Resources/...
/README.md
/README.md
/ThirdPartyNotices.md
4 changes: 2 additions & 2 deletions PLATEAU-SDK-for-Unreal.uplugin
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 3,
"VersionName": "2.0.1-alpha",
"VersionName": "2.2.0",
"FriendlyName": "PLATEAU SDK for Unreal",
"Description": "",
"Category": "Geospatial",
Expand All @@ -14,7 +14,7 @@
"IsBetaVersion": false,
"IsExperimentalVersion": false,
"Installed": false,
"EngineVersion" : ["5.2.0"],
"EngineVersion" : ["5.3.2"],
"Modules": [
{
"Name": "PLATEAURuntime",
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ PLATEAU SDK for Unrealは、[PLATEAU](https://www.mlit.go.jp/plateau/)の3D都

PLATEAU SDK for Unrealを利用することで、実世界を舞台にしたアプリケーションの開発や、PLATEAUの豊富なデータを活用したシミュレーションを簡単に行うことができます。

PLATEAU SDK for Unityは利用者アンケートを実施しています。 今後の開発の参考にするため、ユーザーの皆様の忌憚ないご意見をお聞かせください。
[アンケートはこちら](https://docs.google.com/forms/d/e/1FAIpQLSeICxDJd6eQ311_rDbCudc2c8UUZ8A0oE6LXppKoHgT2mwYQQ/viewform)

# サンプルプロジェクト
本SDKを使用して作成されたサンプルプロジェクトを[こちら](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unreal-Samples)で配布しています。

Expand All @@ -39,7 +42,6 @@ PLATEAU SDK for Unrealを利用することで、実世界を舞台にしたア
# 利用手順
- SDKの最新版は[Releaseページ](https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unreal/releases)からダウンロードしてください。
- 詳しい利用方法については、こちらの [マニュアル](https://Project-PLATEAU.github.io/PLATEAU-SDK-for-Unreal/index.html) をご覧ください。
- PLATEAU公式ウェブサイトでは当SDKの [チュートリアル記事](https://www.mlit.go.jp/plateau/learning/tpc17-2/) も公開しています。

# プロジェクトに貢献する
このプロジェクトでは、バグ報告・プルリクエストなど皆さんの貢献を歓迎しています。
Expand Down
7 changes: 6 additions & 1 deletion Source/PLATEAUEditor/PLATEAUEditor.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,16 @@ public void IncludeLibPlateau()
if (Target.Platform == UnrealTargetPlatform.Win64)
{
libPlateauPath += "/windows/plateau_combined.lib";
PublicAdditionalLibraries.Add(libPlateauPath);
PublicAdditionalLibraries.Add("glu32.lib");
PublicAdditionalLibraries.Add("opengl32.lib");
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
libPlateauPath += "/macos/arm64/libplateau_combined.a";
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/arm64/libplateau_combined.a");
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/x86_64/libplateau_combined.a");


PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/liblzma.tbd");
// PublicAdditionalLibraries.Add("GLU");
Expand All @@ -107,6 +111,7 @@ public void IncludeLibPlateau()
else if (Target.Platform == UnrealTargetPlatform.Linux)
{
libPlateauPath += "linux/libplateau.a";
PublicAdditionalLibraries.Add(libPlateauPath);
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,23 +51,26 @@ public void IncludeLibPlateau() {

if (Target.Platform == UnrealTargetPlatform.Win64) {
libPlateauPath = libPlateauPath + "/windows/plateau_combined.lib";
PublicAdditionalLibraries.Add(libPlateauPath);
PublicAdditionalLibraries.Add("glu32.lib");
PublicAdditionalLibraries.Add("opengl32.lib");
} else if (Target.Platform == UnrealTargetPlatform.Mac) {
libPlateauPath = libPlateauPath + "/macos/arm64/libplateau_combined.a";

PublicAdditionalLibraries.Add(libPlateauPath + "/macos/arm64/libplateau_combined.a");
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/x86_64/libplateau_combined.a");

PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/liblzma.tbd");
PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd");
} else if (Target.Platform == UnrealTargetPlatform.Linux) {
libPlateauPath = libPlateauPath + "/linux/libplateau.a";
PublicAdditionalLibraries.Add(libPlateauPath);
} else {
throw new Exception("Unknown OS.");
}

PublicAdditionalLibraries.Add(libPlateauPath);

//using c++17
CppStandard = CppStandardVersion.Cpp17;
}
Expand Down
9 changes: 5 additions & 4 deletions Source/PLATEAURuntime/PLATEAURuntime.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,28 +81,29 @@ public void IncludeLibPlateau()
if (Target.Platform == UnrealTargetPlatform.Win64)
{
libPlateauPath = libPlateauPath + "/windows/plateau_combined.lib";
PublicAdditionalLibraries.Add(libPlateauPath);
PublicAdditionalLibraries.Add("glu32.lib");
PublicAdditionalLibraries.Add("opengl32.lib");
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
libPlateauPath = libPlateauPath + "/macos/arm64/libplateau_combined.a";
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/arm64/libplateau_combined.a");
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/x86_64/libplateau_combined.a");

PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/liblzma.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd");
}
else if (Target.Platform == UnrealTargetPlatform.Linux)
{
libPlateauPath = libPlateauPath + "/linux/libplateau.a";
PublicAdditionalLibraries.Add(libPlateauPath);
}
else
{
throw new Exception("Unknown OS.");
}

PublicAdditionalLibraries.Add(libPlateauPath);



//using c++17
CppStandard = CppStandardVersion.Cpp17;
Expand Down
19 changes: 18 additions & 1 deletion Source/PLATEAURuntime/Private/PLATEAUCityModelLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,13 @@ class FCityModelLoaderImpl {
ExtractOptions.export_appearance = Settings.bImportTexture;
ExtractOptions.enable_texture_packing = Settings.bEnableTexturePacking;
ExtractOptions.attach_map_tile = Settings.bAttachMapTile;

// strcpyは非推奨という警告が出ますが、共通ライブラリを利用するために必要と思われるので警告を抑制します。
// なお抑制しないとマーケットプレイスの審査で弾かれる可能性が高いです。
#pragma warning(push)
#pragma warning(disable:4996)
std::strcpy(ExtractOptions.map_tile_url, TCHAR_TO_UTF8(*Settings.MapTileUrl));
#pragma warning(pop)
ExtractOptions.map_tile_zoom_level = Settings.ZoomLevel;

switch (Settings.TexturePackingResolution) {
Expand Down Expand Up @@ -470,6 +476,8 @@ void APLATEAUCityModelLoader::LoadAsync(const bool bAutomationTest) {

void APLATEAUCityModelLoader::LoadGmlAsync(const FString& GmlPath) {
#if WITH_EDITOR
Phase = ECityModelLoadingPhase::Start;

// アクター生成
APLATEAUInstancedCityModel* ModelActor = GetWorld()->SpawnActor<APLATEAUInstancedCityModel>();
CreateRootComponent(*ModelActor);
Expand All @@ -489,7 +497,9 @@ void APLATEAUCityModelLoader::LoadGmlAsync(const FString& GmlPath) {
Async(EAsyncExecution::Thread,
[
ModelActor, GmlPath,
GeoReference = GeoReference
GeoReference = GeoReference,
ImportFinishedDelegate = ImportFinishedDelegate,
Phase = &Phase
]() mutable {

const auto CityModel = FCityModelLoaderImpl::ParseCityGml(GmlPath);
Expand All @@ -513,6 +523,13 @@ void APLATEAUCityModelLoader::LoadGmlAsync(const FString& GmlPath) {
TAtomic<bool> Canceled = false;
FPLATEAUMeshLoader(false).LoadModel(ModelActor, GmlRootComponent, Model, InputData, CityModel, &Canceled);

*Phase = ECityModelLoadingPhase::Finished;

FFunctionGraphTask::CreateAndDispatchWhenReady(
[ImportFinishedDelegate] {
ImportFinishedDelegate.Broadcast();
}, TStatId(), nullptr, ENamedThreads::GameThread);

return true;
});
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,23 +45,27 @@ public void IncludeLibPlateau() {

if (Target.Platform == UnrealTargetPlatform.Win64) {
libPlateauPath = libPlateauPath + "/windows/plateau_combined.lib";
PublicAdditionalLibraries.Add(libPlateauPath);
PublicAdditionalLibraries.Add("glu32.lib");
PublicAdditionalLibraries.Add("opengl32.lib");
} else if (Target.Platform == UnrealTargetPlatform.Mac) {
libPlateauPath = libPlateauPath + "/macos/arm64/libplateau_combined.a";

PublicAdditionalLibraries.Add(libPlateauPath + "/macos/arm64/libplateau_combined.a");
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/x86_64/libplateau_combined.a");


PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/liblzma.tbd");
PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd");
} else if (Target.Platform == UnrealTargetPlatform.Linux) {
libPlateauPath = libPlateauPath + "/linux/libplateau.a";
PublicAdditionalLibraries.Add(libPlateauPath);
} else {
throw new Exception("Unknown OS.");
}

PublicAdditionalLibraries.Add(libPlateauPath);

//using c++17
CppStandard = CppStandardVersion.Cpp17;
}
Expand Down
9 changes: 6 additions & 3 deletions Source/PLATEAUTests/PLATEAUTests.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,26 @@ public void IncludeLibPlateau() {

if (Target.Platform == UnrealTargetPlatform.Win64) {
libPlateauPath = libPlateauPath + "/windows/plateau_combined.lib";
PublicAdditionalLibraries.Add(libPlateauPath);
PublicAdditionalLibraries.Add("glu32.lib");
PublicAdditionalLibraries.Add("opengl32.lib");
} else if (Target.Platform == UnrealTargetPlatform.Mac) {
libPlateauPath = libPlateauPath + "/macos/arm64/libplateau_combined.a";

PublicAdditionalLibraries.Add(libPlateauPath + "/macos/arm64/libplateau_combined.a");
PublicAdditionalLibraries.Add(libPlateauPath + "/macos/x86_64/libplateau_combined.a");

PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.tbd");
PublicAdditionalLibraries.Add("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/liblzma.tbd");
PublicAdditionalLibraries.Add(
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL.tbd");
} else if (Target.Platform == UnrealTargetPlatform.Linux) {
libPlateauPath = libPlateauPath + "/linux/libplateau.a";
PublicAdditionalLibraries.Add(libPlateauPath);
} else {
throw new Exception("Unknown OS.");
}

PublicAdditionalLibraries.Add(libPlateauPath);

//using c++17
CppStandard = CppStandardVersion.Cpp17;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,6 @@ namespace plateau::polygonMesh {
* そのため橋梁の関数の戻り地は true です。
*/
static bool shouldContainPrimaryMesh(unsigned lod, const citygml::CityObject& primary_obj);
static bool isTypeToSkip(citygml::CityObject::CityObjectsType type);
};
}
10 changes: 9 additions & 1 deletion Source/ThirdParty/include/plateau/polygon_mesh/node.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,21 @@ namespace plateau::polygonMesh {
/// Node 以下の階層構造を stringstream に書き込みます。
void debugString(std::stringstream& ss, int indent) const;

void setIsPrimary(bool is_primary_); // GranularityConverterでのみ利用します
void setGranularityConvertInfo(bool is_primary, bool is_active); // GranularityConverterの内部でのみ利用する情報を付与します
bool isPrimary() const; // GranularityConverterでのみ利用します。
void setIsActive(bool is_active); // GranularityConverterでのみ利用します。
bool isActive() const; // GranularityConverterでのみ利用します。
void reserveChild(size_t reserve_count);
private:
std::string name_;
std::vector<Node> child_nodes_;
std::unique_ptr<Mesh> mesh_;
bool is_primary_; // GranularityConverterでのみ利用します。

/**
* ゲームエンジン上でNodeに相当するゲームオブジェクトがアクティブかどうかです。
* GranularityConverterでのみ利用します。それ以外の用途では常にtrueになります。
*/
bool is_active_;
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

namespace plateau::texture {

/**
* 指定の地図タイルURLが利用可能かどうか、利用可能な最小と最大のズームレベルが何かを調べた結果です。
*/
struct LIBPLATEAU_EXPORT MapZoomLevelSearchResult {
MapZoomLevelSearchResult(bool is_valid, int available_zoom_level_min, int available_zoom_level_max) :
is_valid_(is_valid), available_zoom_level_min_(available_zoom_level_min),
Expand All @@ -17,8 +20,14 @@ namespace plateau::texture {
int available_zoom_level_max_;
};

/**
* 指定の地図タイルURLが利用可能かどうか、利用可能な最小と最大のズームレベルが何かを調べます。
*/
class LIBPLATEAU_EXPORT MapZoomLevelSearcher {
public:
static MapZoomLevelSearchResult search(const std::string& url_template, geometry::GeoCoordinate geo_coord);
private:
static constexpr int zoom_level_search_range_min = 1;
static constexpr int zoom_level_search_range_max = 20;
};
}
4 changes: 2 additions & 2 deletions Source/ThirdParty/lib/linux/libplateau.a
Git LFS file not shown
4 changes: 2 additions & 2 deletions Source/ThirdParty/lib/macos/arm64/libplateau_combined.a
Git LFS file not shown
4 changes: 2 additions & 2 deletions Source/ThirdParty/lib/macos/x86_64/libplateau_combined.a
Git LFS file not shown
4 changes: 2 additions & 2 deletions Source/ThirdParty/lib/windows/plateau_combined.lib
Git LFS file not shown

0 comments on commit 8a1a214

Please sign in to comment.