diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cb1fbb..d622e30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ find_package(Boost REQUIRED COMPONENTS filesystem) find_package(LibXml2 MODULE REQUIRED) find_package(ZLIB MODULE REQUIRED) find_package(fmt MODULE REQUIRED) -find_package(libiconv MODULE REQUIRED) +find_package(Iconv MODULE REQUIRED) # create a compilation database for e.g. clang-tidy set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/build/FBX2glTF b/build/FBX2glTF index 6438272..fbb9882 100755 Binary files a/build/FBX2glTF and b/build/FBX2glTF differ diff --git a/conanfile.py b/conanfile.py index 956b402..52fd841 100644 --- a/conanfile.py +++ b/conanfile.py @@ -9,7 +9,7 @@ from conans import ConanFile, CMake class FBX2glTFConan(ConanFile): settings = "os", "compiler", "build_type", "arch" requires = ( - ("boost/1.81.0"), + ("boost/1.69.0"), ("libiconv/1.15"), ("zlib/1.2.13"), ("libxml2/2.9.9"), diff --git a/src/fbx/Fbx2Raw.cpp b/src/fbx/Fbx2Raw.cpp index 9c363ae..f7a8026 100644 --- a/src/fbx/Fbx2Raw.cpp +++ b/src/fbx/Fbx2Raw.cpp @@ -848,11 +848,6 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o const FbxVector4 localScale = computeLocalScale(pNode, pTime); - if (!optAnimation) { - hasTranslation = true; - hasRotation = true; - hasScale = true; - } else { hasTranslation |= (fabs(localTranslation[0] - baseTranslation[0]) > epsilon || fabs(localTranslation[1] - baseTranslation[1]) > epsilon || @@ -866,7 +861,7 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o (fabs(localScale[0] - baseScaling[0]) > epsilon || fabs(localScale[1] - baseScaling[1]) > epsilon || fabs(localScale[2] - baseScaling[2]) > epsilon); - } + channel.translations.push_back(toVec3f(localTranslation) * scaleFactor); channel.rotations.push_back(toQuatf(localRotation)); channel.scales.push_back(toVec3f(localScale)); @@ -943,19 +938,20 @@ static void ReadAnimations(RawModel& raw, FbxScene* pScene, const GltfOptions& o } if (hasTranslation || hasRotation || hasScale || hasMorphs) { - if (!hasTranslation) { - channel.translations.clear(); + if (optAnimation) { + if (!hasTranslation) { + channel.translations.clear(); + } + if (!hasRotation) { + channel.rotations.clear(); + } + if (!hasScale) { + channel.scales.clear(); + } + if (!hasMorphs) { + channel.weights.clear(); + } } - if (!hasRotation) { - channel.rotations.clear(); - } - if (!hasScale) { - channel.scales.clear(); - } - if (!hasMorphs) { - channel.weights.clear(); - } - animation.channels.emplace_back(channel); totalSizeInBytes += channel.translations.size() * sizeof(channel.translations[0]) +