From d3c7270a56f101d2c184eb7463c3168a3b7ce2b2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 22 Sep 2026 20:20:19 +0200 Subject: [PATCH] Fix uninitialized `ofbx` values when importing materials #4272 --- .../Tools/ModelTool/ModelTool.OpenFBX.cpp | 2 +- Source/ThirdParty/OpenFBX/ofbx.cpp | 27 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp index b9b64c0a9..e69f082a7 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp @@ -246,7 +246,7 @@ struct OpenFbxImporterData if (mat && EnumHasAnyFlags(Options.ImportTypes, ImportDataTypes::Materials)) { - material.Diffuse.Color = ToColor(mat->getDiffuseColor()); + material.Diffuse.Color = ToColor(mat->getDiffuseColor()) * (float)mat->getDiffuseFactor(); material.Emissive.Color = ToColor(mat->getEmissiveColor()) * (float)mat->getEmissiveFactor(); material.Roughness.Value = MaterialSlotEntry::ShininessToRoughness((float)mat->getShininess()); diff --git a/Source/ThirdParty/OpenFBX/ofbx.cpp b/Source/ThirdParty/OpenFBX/ofbx.cpp index 67f34bfeb..27484a372 100644 --- a/Source/ThirdParty/OpenFBX/ofbx.cpp +++ b/Source/ThirdParty/OpenFBX/ofbx.cpp @@ -1396,20 +1396,20 @@ struct MaterialImpl : Material double getEmissiveFactor() const override { return emissive_factor; }; const Texture* textures[Texture::TextureType::COUNT]; - Color diffuse_color; - Color specular_color; - Color reflection_color; - Color ambient_color; - Color emissive_color; + Color diffuse_color = { 1, 1, 1 }; + Color specular_color = { 1, 1, 1 }; + Color reflection_color = { 1, 1, 1 }; + Color ambient_color = { 0, 0, 0 }; + Color emissive_color = { 0, 0, 0 }; - double diffuse_factor; - double specular_factor; - double reflection_factor; - double shininess; - double shininess_exponent; - double ambient_factor; - double bump_factor; - double emissive_factor; + double diffuse_factor = 1; + double specular_factor = 1; + double reflection_factor = 1; + double shininess = 40; + double shininess_exponent = 1; + double ambient_factor = 1; + double bump_factor = 1; + double emissive_factor = 1; }; @@ -2623,7 +2623,6 @@ static OptionalError parseMaterial(const Scene& scene, const Element& e property_offset = 3; prop = findChild(element, "Properties60"); } - material->diffuse_color = {1, 1, 1}; if (prop) prop = prop->child; while (prop) {