From 90a24440db656b0ef1b499ac3575d79e034fec9a Mon Sep 17 00:00:00 2001 From: Carlos Martinez Perez Date: Fri, 18 Mar 2022 17:00:57 +0100 Subject: [PATCH 01/11] - Adapted bat file to new NDK and toolchain - Able to build x86, x86_64, armv8, armv7 for android - Automatically detects latest ndk on your system --- scripts/android_crosscompile/.gitignore | 1 + scripts/android_crosscompile/make_android.bat | 82 +++++++++++++++---- 2 files changed, 66 insertions(+), 17 deletions(-) create mode 100644 scripts/android_crosscompile/.gitignore diff --git a/scripts/android_crosscompile/.gitignore b/scripts/android_crosscompile/.gitignore new file mode 100644 index 000000000..6caf68aff --- /dev/null +++ b/scripts/android_crosscompile/.gitignore @@ -0,0 +1 @@ +output \ No newline at end of file diff --git a/scripts/android_crosscompile/make_android.bat b/scripts/android_crosscompile/make_android.bat index a50695e16..945a9f199 100644 --- a/scripts/android_crosscompile/make_android.bat +++ b/scripts/android_crosscompile/make_android.bat @@ -1,28 +1,76 @@ @echo off -set ASSIMP_PATH=D:\projects\asset-importer-lib\assimp -set CMAKE_PATH="C:\Program Files\CMake\bin\cmake.exe" -set ANDROID_NDK_PATH=C:\Users\kimkulling\AppData\Local\Android\Sdk\ndk-bundle -set ANDROID_CMAKE_PATH=contrib\android-cmake +set ANDROID_PLATFORM=21 +set /p ANDROID_PLATFORM="Enter Android platform - Enter to use %ANDROID_PLATFORM%: " -pushd %ASSIMP_PATH% +set ANDROID_ABI=armeabi-v7a +set /p ANDROID_ABI="Enter Android ABI ( armeabi-v7a, arm64-v8a , x86 , x86_64 ) - Enter to use %ANDROID_ABI% : " -rmdir /s /q build -mkdir build -cd build +set COMMON_CXX_FLAGS=-DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions -frtti -stdlib=libc++ +set COMMON_C_FLAGS=-DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions -%CMAKE_PATH% .. ^ - -G"MinGW Makefiles" ^ +if %ANDROID_ABI% == armeabi-v7a ( + set CXX_FLAGS="%COMMON_CXX_FLAGS% -march=armv7-a -mthumb --target=armv7-none-linux-androideabi%ANDROID_PLATFORM%" + set C_FLAGS="%COMMON_C_FLAGS% -march=armv7-a -mthumb --target=armv7-none-linux-androideabi%ANDROID_PLATFORM%" +) +if %ANDROID_ABI% == arm64-v8a ( + set CXX_FLAGS="%COMMON_CXX_FLAGS% -march=armv8-a --target=aarch64-none-linux-android%ANDROID_PLATFORM%" + set C_FLAGS="%COMMON_C_FLAGS% -march=armv8-a --target=aarch64-none-linux-android%ANDROID_PLATFORM%" +) +if %ANDROID_ABI% == x86 ( + set CXX_FLAGS="%COMMON_CXX_FLAGS% --target=i686-none-linux-android%ANDROID_PLATFORM%" + set C_FLAGS="%COMMON_C_FLAGS% --target=i686-none-linux-android%ANDROID_PLATFORM%" +) +if %ANDROID_ABI% == x86_64 ( + set CXX_FLAGS="%COMMON_CXX_FLAGS%" + set C_FLAGS="%COMMON_C_FLAGS%" +) + +set CMAKE_PATH="%ProgramFiles%\CMake\bin\cmake.exe" +if exist %CMAKE_PATH% ( + echo Found cmake at %CMAKE_PATH% +) else ( + set /p CMAKE_PATH="Enter cmake.exe path: " +) + +set ANDROID_NDK_PATH="" +FOR /F "tokens=* USEBACKQ" %%F IN (`dir "%LocalAppData%\Android\Sdk\ndk" /b /o:n /a:d`) DO ( + SET ANDROID_NDK_PATH="%LocalAppData%\Android\Sdk\ndk\%%F" +) +if exist %ANDROID_NDK_PATH% ( + echo Found NDK at %ANDROID_NDK_PATH% +) else ( + set /p ANDROID_NDK_PATH="Enter ndk path: " +) + +set BUILD_FOLDER=build +rmdir /s /q %BUILD_FOLDER% +mkdir %BUILD_FOLDER% + +%CMAKE_PATH% ^ + -G"Unix Makefiles" ^ -DCMAKE_BUILD_TYPE=Release ^ - -DCMAKE_TOOLCHAIN_FILE=%ANDROID_CMAKE_PATH%\android.toolchain.cmake ^ + -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK_PATH%\build\cmake\android.toolchain.cmake ^ -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_PATH%\prebuilt\windows-x86_64\bin\make.exe ^ -DANDROID_NDK=%ANDROID_NDK_PATH% ^ - -DANDROID_NATIVE_API_LEVEL=android-9 ^ + -DOPERATING_SYSTEM="Android" ^ + -DANDROID_PLATFORM=%ANDROID_PLATFORM% ^ + -DANDROID_ABI=%ANDROID_ABI% ^ -DASSIMP_ANDROID_JNIIOSYSTEM=ON ^ - -DANDROID_ABI=arm64-v8a ^ - -DASSIMP_BUILD_ZLIB=ON ^ - -DASSIMP_BUILD_TESTS=OFF + -DASSIMP_BUILD_TESTS=OFF ^ + -DCMAKE_CXX_FLAGS=%CXX_FLAGS% ^ + -DMAKE_C_FLAGS=%C_FLAGS% ^ + -S "..\.." ^ + -B ".\%BUILD_FOLDER%\" -%CMAKE_PATH% --build . +%CMAKE_PATH% --build ".\%BUILD_FOLDER%\"" -- -j 4" -popd \ No newline at end of file +set OUTPUT_FOLDER=.\output\ +mkdir %OUTPUT_FOLDER% +mkdir "%OUTPUT_FOLDER%\lib\%ANDROID_ABI%" + +copy "%BUILD_FOLDER%\bin\libassimp.so" "%OUTPUT_FOLDER%\lib\%ANDROID_ABI%\" +xcopy %BUILD_FOLDER%\include\assimp\ %OUTPUT_FOLDER%\include\assimp\ /y /s /e +xcopy ..\..\include\assimp\ %OUTPUT_FOLDER%\include\assimp\ /y /s /e + +rmdir /s /q %BUILD_FOLDER% \ No newline at end of file From 0a56065962e3e2f4732445505fcff7c44935b843 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 24 Mar 2022 00:41:07 +0100 Subject: [PATCH 02/11] Use static runtime only on option is selected --- CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f48391edf..ab4d45e88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -164,12 +164,6 @@ IF (WIN32) $<$:/MTd> $<$:/MT> ) - else() - add_compile_options( - $<$:/MD> - $<$:/MDd> - $<$:/MD> - ) endif() ENDIF() ENDIF() From 4175198d045674b6f5a62600a0e7d188403cebfa Mon Sep 17 00:00:00 2001 From: Filip Lundgren <45687559+ifiddynine@users.noreply.github.com> Date: Sat, 26 Mar 2022 22:33:10 +0100 Subject: [PATCH 03/11] Detect Roughness factor exported by Blender Matches the logic used by Blender's own FBX exporter / importer. --- code/AssetLib/FBX/FBXConverter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/AssetLib/FBX/FBXConverter.cpp b/code/AssetLib/FBX/FBXConverter.cpp index 32872108b..d446fd2e9 100644 --- a/code/AssetLib/FBX/FBXConverter.cpp +++ b/code/AssetLib/FBX/FBXConverter.cpp @@ -2161,6 +2161,9 @@ void FBXConverter::SetShadingPropertiesCommon(aiMaterial *out_mat, const Propert const float ShininessExponent = PropertyGet(props, "ShininessExponent", ok); if (ok) { out_mat->AddProperty(&ShininessExponent, 1, AI_MATKEY_SHININESS); + // Match Blender behavior to extract roughness when only shininess is present + const float roughness = 1.0 - (sqrt(ShininessExponent) / 10.0); + out_mat->AddProperty(&roughness, 1, AI_MATKEY_ROUGHNESS_FACTOR); } // TransparentColor / TransparencyFactor... gee thanks FBX :rolleyes: From f985fe12ccf7dc0a6a7ed61bab741207d0b79cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danny=E8=AE=B8?= Date: Thu, 31 Mar 2022 11:20:18 +0800 Subject: [PATCH 04/11] Fix compile error When enable macro ASSIMP_DOUBLE_PRECISION --- include/assimp/material.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/assimp/material.inl b/include/assimp/material.inl index 0b30a6839..cdf272201 100644 --- a/include/assimp/material.inl +++ b/include/assimp/material.inl @@ -157,7 +157,7 @@ AI_FORCE_INLINE case aiPTI_Float: case aiPTI_Double: { // Read as float and cast to bool - float value = 0.0f; + ai_real value = 0.0f; if (AI_SUCCESS == ::aiGetMaterialFloat(this, pKey, type, idx, &value)) { pOut = static_cast(value); return AI_SUCCESS; From 18c4ebaa130d2b9bc9fe3b5ba4941c96dbddc949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danny=E8=AE=B8?= Date: Thu, 31 Mar 2022 14:28:35 +0800 Subject: [PATCH 05/11] Fix compile in VC140 --- code/AssetLib/Obj/ObjFileParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/AssetLib/Obj/ObjFileParser.cpp b/code/AssetLib/Obj/ObjFileParser.cpp index 1786c0d9f..fb2ce78ea 100644 --- a/code/AssetLib/Obj/ObjFileParser.cpp +++ b/code/AssetLib/Obj/ObjFileParser.cpp @@ -55,7 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { -constexpr char ObjFileParser::DEFAULT_MATERIAL[]; +constexpr char ObjFileParser::DEFAULT_MATERIAL[] = AI_DEFAULT_MATERIAL_NAME; ObjFileParser::ObjFileParser() : m_DataIt(), From 8e075ce7133bf1ebc9727925356f3840a9807b89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danny=E8=AE=B8?= Date: Thu, 31 Mar 2022 14:53:33 +0800 Subject: [PATCH 06/11] Update ObjFileParser.cpp --- code/AssetLib/Obj/ObjFileParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/AssetLib/Obj/ObjFileParser.cpp b/code/AssetLib/Obj/ObjFileParser.cpp index fb2ce78ea..1786c0d9f 100644 --- a/code/AssetLib/Obj/ObjFileParser.cpp +++ b/code/AssetLib/Obj/ObjFileParser.cpp @@ -55,7 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { -constexpr char ObjFileParser::DEFAULT_MATERIAL[] = AI_DEFAULT_MATERIAL_NAME; +constexpr char ObjFileParser::DEFAULT_MATERIAL[]; ObjFileParser::ObjFileParser() : m_DataIt(), From cc515746f73d43ba5dabe0af5227200e0f5939aa Mon Sep 17 00:00:00 2001 From: xiaohunqupo Date: Thu, 31 Mar 2022 14:58:31 +0800 Subject: [PATCH 07/11] Fix v140 compile errror --- code/AssetLib/Obj/ObjFileParser.cpp | 2 +- code/AssetLib/Obj/ObjFileParser.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/AssetLib/Obj/ObjFileParser.cpp b/code/AssetLib/Obj/ObjFileParser.cpp index 1786c0d9f..4e50d5dae 100644 --- a/code/AssetLib/Obj/ObjFileParser.cpp +++ b/code/AssetLib/Obj/ObjFileParser.cpp @@ -55,7 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { -constexpr char ObjFileParser::DEFAULT_MATERIAL[]; +constexpr const char ObjFileParser::DEFAULT_MATERIAL[]; ObjFileParser::ObjFileParser() : m_DataIt(), diff --git a/code/AssetLib/Obj/ObjFileParser.h b/code/AssetLib/Obj/ObjFileParser.h index fbd2f2c89..1bf11a0c8 100644 --- a/code/AssetLib/Obj/ObjFileParser.h +++ b/code/AssetLib/Obj/ObjFileParser.h @@ -141,7 +141,7 @@ private: // because the class contains pointer to allocated memory /// Default material name - static constexpr char DEFAULT_MATERIAL[] = AI_DEFAULT_MATERIAL_NAME; + static constexpr const char DEFAULT_MATERIAL[] = AI_DEFAULT_MATERIAL_NAME; //! Iterator to current position in buffer DataArrayIt m_DataIt; //! Iterator to end position of buffer From b08c04b87a13c737ad7decd1a760129d6d161956 Mon Sep 17 00:00:00 2001 From: xiaohunqupo Date: Thu, 31 Mar 2022 15:08:12 +0800 Subject: [PATCH 08/11] Fix compile errro in VC140 --- include/assimp/Bitmap.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/include/assimp/Bitmap.h b/include/assimp/Bitmap.h index 6a614f7cf..94dd0b81b 100644 --- a/include/assimp/Bitmap.h +++ b/include/assimp/Bitmap.h @@ -78,11 +78,11 @@ protected: // We define the struct size because sizeof(Header) might return a wrong result because of structure padding. static constexpr std::size_t header_size = - sizeof(type) + - sizeof(size) + - sizeof(reserved1) + - sizeof(reserved2) + - sizeof(offset); + sizeof(uint16_t) + + sizeof(uint32_t) + + sizeof(uint16_t) + + sizeof(uint16_t) + + sizeof(uint32_t); }; struct DIB { @@ -100,17 +100,17 @@ protected: // We define the struct size because sizeof(DIB) might return a wrong result because of structure padding. static constexpr std::size_t dib_size = - sizeof(size) + - sizeof(width) + - sizeof(height) + - sizeof(planes) + - sizeof(bits_per_pixel) + - sizeof(compression) + - sizeof(image_size) + - sizeof(x_resolution) + - sizeof(y_resolution) + - sizeof(nb_colors) + - sizeof(nb_important_colors); + sizeof(uint32_t) + + sizeof(int32_t) + + sizeof(int32_t) + + sizeof(uint16_t) + + sizeof(uint16_t) + + sizeof(uint32_t) + + sizeof(uint32_t) + + sizeof(int32_t) + + sizeof(int32_t) + + sizeof(uint32_t) + + sizeof(uint32_t); }; static constexpr std::size_t mBytesPerPixel = 4; From 2152aae2a3a95e0ce65ea35e9c9ac0b73fdb66fe Mon Sep 17 00:00:00 2001 From: xiaohunqupo Date: Thu, 31 Mar 2022 15:34:49 +0800 Subject: [PATCH 09/11] Fix compile error due to namespace conflicts in VC140. --- code/AssetLib/glTF/glTFAsset.inl | 2 +- code/AssetLib/glTF2/glTF2Asset.inl | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/code/AssetLib/glTF/glTFAsset.inl b/code/AssetLib/glTF/glTFAsset.inl index 2b76a30ab..1f4544156 100644 --- a/code/AssetLib/glTF/glTFAsset.inl +++ b/code/AssetLib/glTF/glTFAsset.inl @@ -53,9 +53,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif using namespace Assimp; -using namespace glTFCommon; namespace glTF { +using namespace glTFCommon; #if _MSC_VER #pragma warning(push) diff --git a/code/AssetLib/glTF2/glTF2Asset.inl b/code/AssetLib/glTF2/glTF2Asset.inl index a74866e6c..e9108a5da 100644 --- a/code/AssetLib/glTF2/glTF2Asset.inl +++ b/code/AssetLib/glTF2/glTF2Asset.inl @@ -82,7 +82,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // clang-format on using namespace Assimp; -using namespace glTFCommon; +using glTFCommon::FindStringInContext; +using glTFCommon::FindNumberInContext; +using glTFCommon::FindUIntInContext; +using glTFCommon::FindArrayInContext; +using glTFCommon::FindObjectInContext; +using glTFCommon::FindExtensionInContext; +using glTFCommon::MemberOrDefault; +using glTFCommon::ReadMember; +using glTFCommon::FindMember; +using glTFCommon::FindObject; +using glTFCommon::FindUInt; +using glTFCommon::FindArray; +using glTFCommon::FindArray; namespace glTF2 { From de6e90a657ba46ed8672518bbf249e193465f227 Mon Sep 17 00:00:00 2001 From: xiaohunqupo Date: Thu, 31 Mar 2022 15:36:57 +0800 Subject: [PATCH 10/11] Fix commit error --- code/AssetLib/glTF2/glTF2Asset.inl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/AssetLib/glTF2/glTF2Asset.inl b/code/AssetLib/glTF2/glTF2Asset.inl index e9108a5da..db47915d6 100644 --- a/code/AssetLib/glTF2/glTF2Asset.inl +++ b/code/AssetLib/glTF2/glTF2Asset.inl @@ -82,6 +82,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // clang-format on using namespace Assimp; + +namespace glTF2 { using glTFCommon::FindStringInContext; using glTFCommon::FindNumberInContext; using glTFCommon::FindUIntInContext; @@ -96,8 +98,6 @@ using glTFCommon::FindUInt; using glTFCommon::FindArray; using glTFCommon::FindArray; -namespace glTF2 { - namespace { // From a050dee09689292ad36df095e4a0cbff07dccded Mon Sep 17 00:00:00 2001 From: xiaohunqupo Date: Thu, 31 Mar 2022 16:08:39 +0800 Subject: [PATCH 11/11] Fix compile error:When enable macro ASSIMP_DOUBLE_PRECISION --- code/AssetLib/IFC/IFCOpenings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/AssetLib/IFC/IFCOpenings.cpp b/code/AssetLib/IFC/IFCOpenings.cpp index 74200195b..6b8b565c2 100644 --- a/code/AssetLib/IFC/IFCOpenings.cpp +++ b/code/AssetLib/IFC/IFCOpenings.cpp @@ -1476,7 +1476,7 @@ std::vector GetContourInPlane2D(std::shared_ptr mesh,IfcMa return contour; } -const float close{ ai_epsilon }; +const ai_real close{ ai_epsilon }; static bool isClose(IfcVector2 first,IfcVector2 second) { auto diff = (second - first);