From 1e9c19d535882ec85c52c8d67794c2e1423e5031 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 28 Sep 2015 17:46:48 -0700 Subject: [PATCH] Clean the Material FBX code and how we use the factor components for diffuse and specular --- libraries/fbx/src/FBXReader.cpp | 4 ++-- libraries/fbx/src/FBXReader_Material.cpp | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 1e48a3c011..d6ec59499d 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -957,14 +957,14 @@ FBXGeometry* FBXReader::extractFBXGeometry(const QVariantHash& mapping, const QS } else if (property.properties.at(0) == "Diffuse") { material.diffuseColor = getVec3(property.properties, index); } else if (property.properties.at(0) == "DiffuseFactor") { - // material.diffuseFactor = property.properties.at(index).value(); + material.diffuseFactor = property.properties.at(index).value(); } else if (property.properties.at(0) == "SpecularColor") { material.specularColor = getVec3(property.properties, index); } else if (property.properties.at(0) == "Specular") { material.specularColor = getVec3(property.properties, index); } else if (property.properties.at(0) == "SpecularFactor") { - // material.specularFactor = property.properties.at(index).value(); + material.specularFactor = property.properties.at(index).value(); } else if (property.properties.at(0) == "Emissive") { material.emissiveColor = getVec3(property.properties, index); diff --git a/libraries/fbx/src/FBXReader_Material.cpp b/libraries/fbx/src/FBXReader_Material.cpp index 9c108fdc74..55a61c77fc 100644 --- a/libraries/fbx/src/FBXReader_Material.cpp +++ b/libraries/fbx/src/FBXReader_Material.cpp @@ -136,15 +136,13 @@ void FBXReader::consolidateFBXMaterials() { material._material->setEmissive(material.emissiveColor); auto diffuse = material.diffuseColor; - diffuse *= material.diffuseFactor; - if (glm::all(glm::equal(diffuse, glm::vec3(0.0f)))) { - material._material->setDiffuse(diffuse); - } else { - material._material->setDiffuse(diffuse); - } + // FIXME: Do not use the Diffuse Factor yet as some FBX models have it set to 0 + // diffuse *= material.diffuseFactor; + material._material->setDiffuse(diffuse); float metallic = std::max(material.specularColor.x, std::max(material.specularColor.y, material.specularColor.z)); - metallic *= material.specularFactor; + // FIXME: Do not use the Specular Factor yet as some FBX models have it set to 0 + // metallic *= material.specularFactor; material._material->setMetallic(metallic); material._material->setGloss(material.shininess);