diff --git a/code/AssetLib/FBX/FBXConverter.cpp b/code/AssetLib/FBX/FBXConverter.cpp index 204d3e6fa..93f19de56 100644 --- a/code/AssetLib/FBX/FBXConverter.cpp +++ b/code/AssetLib/FBX/FBXConverter.cpp @@ -76,6 +76,53 @@ using namespace Util; #define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000LL +static void correctRootTransform(const aiScene *scene) { + if (scene == nullptr) { + return; + } + + if (scene->mMetaData == nullptr) { + return; + } + + int32_t UpAxis = 1, UpAxisSign = 1, FrontAxis = 2, FrontAxisSign = 1, CoordAxis = 0, CoordAxisSign = 1; + double UnitScaleFactor = 1.0; + for (unsigned MetadataIndex = 0; MetadataIndex < scene->mMetaData->mNumProperties; ++MetadataIndex) { + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UpAxis") == 0) { + scene->mMetaData->Get(MetadataIndex, UpAxis); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UpAxisSign") == 0) { + scene->mMetaData->Get(MetadataIndex, UpAxisSign); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "FrontAxis") == 0) { + scene->mMetaData->Get(MetadataIndex, FrontAxis); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "FrontAxisSign") == 0) { + scene->mMetaData->Get(MetadataIndex, FrontAxisSign); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "CoordAxis") == 0) { + scene->mMetaData->Get(MetadataIndex, CoordAxis); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "CoordAxisSign") == 0) { + scene->mMetaData->Get(MetadataIndex, CoordAxisSign); + } + if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UnitScaleFactor") == 0) { + scene->mMetaData->Get(MetadataIndex, UnitScaleFactor); + } + } + + aiVector3D upVec, forwardVec, rightVec; + upVec[UpAxis] = UpAxisSign * static_cast(UnitScaleFactor); + forwardVec[FrontAxis] = FrontAxisSign * static_cast(UnitScaleFactor); + rightVec[CoordAxis] = CoordAxisSign * (float)UnitScaleFactor; + + aiMatrix4x4 mat(rightVec.x, rightVec.y, rightVec.z, 0.0f, + upVec.x, upVec.y, upVec.z, 0.0f, + forwardVec.x, forwardVec.y, forwardVec.z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + scene->mRootNode->mTransformation *= mat; +} + FBXConverter::FBXConverter(aiScene *out, const Document &doc, bool removeEmptyBones) : defaultMaterialIndex(), mMeshes(), @@ -133,6 +180,8 @@ FBXConverter::FBXConverter(aiScene *out, const Document &doc, bool removeEmptyBo // need not contain geometry (i.e. camera animations, raw armatures). if (out->mNumMeshes == 0) { out->mFlags |= AI_SCENE_FLAGS_INCOMPLETE; + } else { + correctRootTransform(mSceneOut); } } diff --git a/packaging/windows-mkzip/bin_readme.txt b/packaging/windows-mkzip/bin_readme.txt deleted file mode 100644 index f4402d6bf..000000000 --- a/packaging/windows-mkzip/bin_readme.txt +++ /dev/null @@ -1,29 +0,0 @@ - ------------------------------------------------------------------------------------- -Open Asset Import Library (Assimp) Tools/Binaries for Windows -Release Notes ------------------------------------------------------------------------------------- - - -Known Bugs & Limitations -======================== - -Viewer - -- For files more than one embedded texture, only the first is loaded. -- Normals appear flipped from time to time when either of the normals-related menu items was hit. -- Alpha-sorting is implemented, but still causes artifacts when models are moved quickly. -- Several important texture file formats (such as GIF) are not supported. -- HUD is blurred on the right side. ATI/AMD hardware only. - -Troubleshooting -=============== - -1. Missing d3dx9_42.dll? -Install the latest DirectX runtime or grab the file from somewhere (that's evil but mostly fine). - -2. Application configuration not correct / missing msv*** DLLs? -(Re)install Microsoft Visual C++ 2005 SP1 Redistributable (x86 or x64, depending on your system) - -3. Crashes immediately -You CPU lacks SSE2 support. Build Assimp from scratch to suit your CPU, sorry. diff --git a/packaging/windows-mkzip/mkfinal.bat b/packaging/windows-mkzip/mkfinal.bat deleted file mode 100644 index b626514c0..000000000 --- a/packaging/windows-mkzip/mkfinal.bat +++ /dev/null @@ -1,169 +0,0 @@ - -rem ----------------------------------------------------- -rem Batch file to build zipped redist packages -rem Two different packages are built: -rem -rem assimp---bin.zip -rem Binaries for x86 and x64 -rem Command line reference -rem -rem assimp---sdk.zip -rem Binaries for x86 and x64, Debug & Release -rem Libs for DLL build, x86 & 64, Debug & Release -rem Full SVN checkout exluding mkutil & port -rem -rem -rem PREREQUISITES: -rem -7za.exe (7zip standalone) -rem Download from http://www.7-zip.org/download.html -rem -rem -svnversion.exe (Subversion revision getter) -rem Download any command line SVN package -rem -rem -doxygen.exe (Doxygen client) -rem Download from www.doxygen.com -rem -rem -svn client -rem -rem NOTES: -rem ./bin must not have any local modifications -rem -rem ----------------------------------------------------- - -@echo off -color 4e -cls - -rem ----------------------------------------------------- -rem Setup file revision for build -rem ----------------------------------------------------- -call mkrev.bat - -rem ----------------------------------------------------- -rem Build output file names -rem ----------------------------------------------------- - -cd ..\..\bin -svnversion > tmpfile.txt -SET /p REVISIONBASE= < tmpfile.txt -DEL /q tmpfile.txt -cd ..\packaging\windows-mkzip - -SET VERSIONBASE=2.0.%REVISIONBASE% - -SET OUT_SDK=assimp--%VERSIONBASE%-sdk -SET OUT_BIN=assimp--%VERSIONBASE%-bin - -SET BINCFG_x86=release-dll_win32 -SET BINCFG_x64=release-dll_x64 - -SET BINCFG_x86_DEBUG=debug-dll_win32 -SET BINCFG_x64_DEBUG=debug-dll_x64 - -rem ----------------------------------------------------- -rem Delete previous output directories -rem ----------------------------------------------------- -RD /S /q final\ - -rem ----------------------------------------------------- -rem Create output directories -rem ----------------------------------------------------- - -mkdir final\%OUT_BIN%\x86 -mkdir final\%OUT_BIN%\x64 - -rem ----------------------------------------------------- -rem Copy all executables to 'final-bin' -rem ----------------------------------------------------- - -copy /Y ..\..\bin\assimpview_%BINCFG_x86%\assimp_view.exe "final\%OUT_BIN%\x86\assimp_view.exe" -copy /Y ..\..\bin\assimpview_%BINCFG_x64%\assimp_view.exe "final\%OUT_BIN%\x64\assimp_view.exe" - -copy /Y ..\..\bin\assimpcmd_%BINCFG_x86%\assimp.exe "final\%OUT_BIN%\x86\assimp.exe" -copy /Y ..\..\bin\assimpcmd_%BINCFG_x64%\assimp.exe "final\%OUT_BIN%\x64\assimp.exe" - -copy /Y ..\..\bin\assimp_%BINCFG_x86%\Assimp32.dll "final\%OUT_BIN%\x86\Assimp32.dll" -copy /Y ..\..\bin\assimp_%BINCFG_x64%\Assimp64.dll "final\%OUT_BIN%\x64\Assimp64.dll" - -copy ..\..\LICENSE final\%OUT_BIN%\LICENSE -copy ..\..\CREDITS final\%OUT_BIN%\CREDITS -copy bin_readme.txt final\%OUT_BIN%\README -copy bin_readme.txt final\%OUT_BIN%\README - -copy ..\..\doc\AssimpCmdDoc_Html\AssimpCmdDoc.chm final\%OUT_BIN%\CommandLine.chm - -rem ----------------------------------------------------- -rem Do a clean export of the repository and build SDK -rem -rem We take the current revision and remove some stuff -rem that is nto yet ready to be published. -rem ----------------------------------------------------- - -svn export .\..\..\ .\final\%OUT_SDK% - -mkdir final\%OUT_SDK%\doc\assimp_html -mkdir final\%OUT_SDK%\doc\assimpcmd_html -copy .\..\..\doc\AssimpDoc_Html\* final\%OUT_SDK%\doc\assimp_html -copy .\..\..\doc\AssimpCmdDoc_Html\* final\%OUT_SDK%\doc\assimpcmd_html -del final\%OUT_SDK%\doc\assimpcmd_html\AssimpCmdDoc.chm -del final\%OUT_SDK%\doc\assimp_html\AssimpDoc.chm - -rem Copy doc to a suitable place -move final\%OUT_SDK%\doc\AssimpDoc_Html\AssimpDoc.chm final\%OUT_SDK%\Documentation.chm -move final\%OUT_SDK%\doc\AssimpCmdDoc_Html\AssimpCmdDoc.chm final\%OUT_SDK%\CommandLine.chm - -rem Cleanup ./doc folder -del /q final\%OUT_SDK%\doc\Preamble.txt -RD /s /q final\%OUT_SDK%\doc\AssimpDoc_Html -RD /s /q final\%OUT_SDK%\doc\AssimpCmdDoc_Html - -rem Insert 'dummy' files into empty folders -echo. > final\%OUT_SDK%\lib\dummy -echo. > final\%OUT_SDK%\obj\dummy - - -RD /s /q final\%OUT_SDK%\port\swig - -rem Also, repackaging is not a must-have feature -RD /s /q final\%OUT_SDK%\packaging - -rem Copy prebuilt libs -mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x86%" -mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x64%" -mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x86_DEBUG%" -mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x64_DEBUG%" - -copy /Y ..\..\lib\assimp_%BINCFG_x86%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x86%" -copy /Y ..\..\lib\assimp_%BINCFG_x64%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x64%\" -copy /Y ..\..\lib\assimp_%BINCFG_x86_DEBUG%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x86_DEBUG%\" -copy /Y ..\..\lib\assimp_%BINCFG_x64_DEBUG%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x64_DEBUG%\" - -rem Copy prebuilt DLLs -mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x86%" -mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x64%" -mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x86_DEBUG%" -mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x64_DEBUG%" - - -copy /Y ..\..\bin\assimp_%BINCFG_x86%\Assimp32.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x86%\" -copy /Y ..\..\bin\assimp_%BINCFG_x64%\Assimp64.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x64%\" -copy /Y ..\..\bin\assimp_%BINCFG_x86_DEBUG%\Assimp32d.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x86_DEBUG%\" -copy /Y ..\..\bin\assimp_%BINCFG_x64_DEBUG%\Assimp64d.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x64_DEBUG%\" - - -rem ----------------------------------------------------- -rem Make final-bin.zip and final-sdk.zip -rem ----------------------------------------------------- - -IF NOT EXIST 7za.exe ( - cls - echo You need to have 7zip standalone installed to - echo build ZIP archives. Download: http://www.7-zip.org/download.html - pause -) else ( -7za.exe a -tzip "final\%OUT_BIN%.zip" ".\final\%OUT_BIN%" -7za.exe a -tzip "final\%OUT_SDK%.zip" ".\final\%OUT_SDK%" -) - -rem OK. We should have the release packages now. - diff --git a/packaging/windows-mkzip/mkrev.bat b/packaging/windows-mkzip/mkrev.bat deleted file mode 100644 index 9d8eec120..000000000 --- a/packaging/windows-mkzip/mkrev.bat +++ /dev/null @@ -1,27 +0,0 @@ -@echo off - -rem ----------------------------------------------------- -rem Tiny batch script to build the input file revision.h -rem revision.h contains the revision number of the wc. -rem It is included by assimp.rc. -rem ----------------------------------------------------- - -rem This is not very elegant, but it works. -rem ./bin shouldn't have any local modifications - -svnversion > tmpfile.txt -set /p addtext= < tmpfile.txt -del /q tmpfile.txt - -echo #define SVNRevision > tmpfile.txt - -if exist ..\..\revision.h del /q ..\..\revision.h -for /f "delims=" %%l in (tmpfile.txt) Do ( - for /f "delims=M:" %%r in ("%addtext%") Do ( - echo %%l %%r >> ..\..\revision.h - ) -) -del /q tmpfile.txt - - - diff --git a/tools/make/build_env_win32.bat b/tools/make/build_env_win32.bat deleted file mode 100644 index 4b8b4674b..000000000 --- a/tools/make/build_env_win32.bat +++ /dev/null @@ -1,57 +0,0 @@ -@echo off -set "initialdir=%cd%" -goto:main - -:exitsucc -cd /d "%initialdir%" -set initialdir= - -set MSBUILD_15="C:\Program Files (x86)\Microsoft Visual Studio\2018\Professional\MSBuild\15.0\Bin\msbuild.exe" -set MSBUILD_14="C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" - -if not "%VS150%"=="" set MSBUILD_15="%VS150%\MSBuild\15.0\Bin\msbuild.exe" - -if /i %VS_VERSION%==2017 ( - set MS_BUILD_EXE=%MSBUILD_15% - set PLATFORM_VER=v141 -) else ( - set MS_BUILD_EXE=%MSBUILD_14% - set PLATFORM_VER=v140 -) - -set MSBUILD=%MS_BUILD_EXE% - -exit /b 0 - -:main -if not defined PLATFORM set "PLATFORM=x64" - -::my work here is done? - -set PATH_VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\ -REM set PATH_STUDIO="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\" - -for /f "usebackq tokens=*" %%i in (`"%PATH_VSWHERE%vswhere" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do ( - set InstallDir=%%i -) - -IF EXIST "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" set VS150=%InstallDir%\ - -set "CMAKE_GENERATOR=Visual Studio 15 2017 Win64" -if not "%VS150%"=="" call "%VS150%\VC\Auxiliary\Build\vcvarsall.bat" %PLATFORM% && echo found VS 2o17 && set PLATFORM_VER=v141 && set VS_VERSION=2017 && goto:exitsucc - -set "CMAKE_GENERATOR=Visual Studio 14 2015 Win64" -if defined VS140COMNTOOLS call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o15 && set PLATFORM_VER=v140 && set VS_VERSION=2015 && goto:exitsucc - -if defined VS130COMNTOOLS echo call ghostbusters... found lost VS version - -set "CMAKE_GENERATOR=Visual Studio 12 2013 Win64" -if defined VS120COMNTOOLS call "%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o13 && set PLATFORM_VER=v120 && set VS_VERSION=2013 && goto:exitsucc - -set "CMAKE_GENERATOR=Visual Studio 11 2012 Win64" -if defined VS110COMNTOOLS call "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o12 && set PLATFORM_VER=v110 && set VS_VERSION=2012 && goto:exitsucc - -set "CMAKE_GENERATOR=Visual Studio 10 2010 Win64" -if defined VS100COMNTOOLS call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o1o && set PLATFORM_VER=v100 && set VS_VERSION=2010 && goto:exitsucc - -goto:exitsucc \ No newline at end of file diff --git a/tools/make/make_all_win32_x64.bat b/tools/make/make_all_win32_x64.bat deleted file mode 100644 index 4a1e663e6..000000000 --- a/tools/make/make_all_win32_x64.bat +++ /dev/null @@ -1,18 +0,0 @@ -rem @echo off -setlocal -call build_env_win32.bat - -set BUILD_CONFIG=release -set PLATFORM_CONFIG=x64 -set MAX_CPU_CONFIG=4 - -set CONFIG_PARAMETER=/p:Configuration="%BUILD_CONFIG%" -set PLATFORM_PARAMETER=/p:Platform="%PLATFORM_CONFIG%" -set CPU_PARAMETER=/maxcpucount:%MAX_CPU_CONFIG% -set PLATFORM_TOOLSET=/p:PlatformToolset=%PLATFORM_VER% - -pushd ..\..\ -cmake CMakeLists.txt -G "Visual Studio 15 2017 Win64" -%MSBUILD% assimp.sln %CONFIG_PARAMETER% %PLATFORM_PARAMETER% %CPU_PARAMETER% %PLATFORM_TOOLSET% -popd -endlocal