diff --git a/src/ObjCommon/XModel/Gltf/JsonGltf.h b/src/ObjCommon/XModel/Gltf/JsonGltf.h index f7b18b12..2f3a15d4 100644 --- a/src/ObjCommon/XModel/Gltf/JsonGltf.h +++ b/src/ObjCommon/XModel/Gltf/JsonGltf.h @@ -206,9 +206,10 @@ namespace gltf { public: std::optional baseColorTexture; + std::optional metallicFactor; }; - NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPbrMetallicRoughness, baseColorTexture); + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPbrMetallicRoughness, baseColorTexture, metallicFactor); class JsonNormalTextureInfo { diff --git a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp index ed640ba9..3feeada7 100644 --- a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp +++ b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp @@ -127,7 +127,13 @@ namespace material.name = modelMaterial.name; if (!modelMaterial.colorMapName.empty()) - material.pbrMetallicRoughness.emplace().baseColorTexture.emplace().index = CreateTexture(gltf, modelMaterial.colorMapName); + { + material.pbrMetallicRoughness.emplace(); + material.pbrMetallicRoughness->baseColorTexture.emplace(); + + material.pbrMetallicRoughness->baseColorTexture->index = CreateTexture(gltf, modelMaterial.colorMapName); + material.pbrMetallicRoughness->metallicFactor = 0.0f; + } if (!modelMaterial.normalMapName.empty()) material.normalTexture.emplace().index = CreateTexture(gltf, modelMaterial.colorMapName);