From 8f02ffb76a839adf410bdf4742e2620ac14d96d5 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 28 Sep 2015 15:32:53 -0700 Subject: [PATCH 1/2] git rid of if branch with same code in either branch --- libraries/fbx/src/FBXReader_Material.cpp | 15 +++++---------- libraries/fbx/src/OBJReader.cpp | 8 +++----- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/libraries/fbx/src/FBXReader_Material.cpp b/libraries/fbx/src/FBXReader_Material.cpp index c29c64030e..959a13306a 100644 --- a/libraries/fbx/src/FBXReader_Material.cpp +++ b/libraries/fbx/src/FBXReader_Material.cpp @@ -134,19 +134,14 @@ void FBXReader::consolidateFBXMaterials() { // Finally create the true material representation material._material = std::make_shared(); material._material->setEmissive(material.emissiveColor); - if (glm::all(glm::equal(material.diffuseColor, glm::vec3(0.0f)))) { - material._material->setDiffuse(material.diffuseColor); - } else { - material._material->setDiffuse(material.diffuseColor); - } - material._material->setMetallic(glm::length(material.specularColor)); - material._material->setGloss(material.shininess); + material._material->setDiffuse(material.diffuseColor); + material._material->setMetallic(glm::length(material.specularColor)); + material._material->setGloss(material.shininess); if (material.opacity <= 0.0f) { - material._material->setOpacity(1.0f); + material._material->setOpacity(1.0f); } else { - material._material->setOpacity(material.opacity); + material._material->setOpacity(material.opacity); } } } - diff --git a/libraries/fbx/src/OBJReader.cpp b/libraries/fbx/src/OBJReader.cpp index ad30a38550..7147888d6b 100644 --- a/libraries/fbx/src/OBJReader.cpp +++ b/libraries/fbx/src/OBJReader.cpp @@ -537,8 +537,10 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping, qCDebug(modelformat) << "OBJ reader fail: " << e.what(); } + qDebug() << "---------------------- -------------------------"; foreach (QString materialID, materials.keys()) { OBJMaterial& objMaterial = materials[materialID]; + qDebug() << "materialID =" << materialID << "diffuseColor =" << objMaterial.diffuseColor; geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor, // glm::vec3(1.0f, 1.0f, 1.0f) objMaterial.specularColor, // glm::vec3(1.0f) glm::vec3(), // glm::vec3() @@ -555,11 +557,7 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping, } material._material->setEmissive(material.emissiveColor); - if (glm::all(glm::equal(material.diffuseColor, glm::vec3(0.0f)))) { - material._material->setDiffuse(material.diffuseColor); - } else { - material._material->setDiffuse(material.diffuseColor); - } + material._material->setDiffuse(material.diffuseColor); material._material->setMetallic(glm::length(material.specularColor)); material._material->setGloss(material.shininess); From a8b135b5ca03e53900c2bd34fb332cb0362d5cef Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 28 Sep 2015 17:02:00 -0700 Subject: [PATCH 2/2] fix material colors for OBJ models --- libraries/fbx/src/OBJReader.cpp | 35 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/libraries/fbx/src/OBJReader.cpp b/libraries/fbx/src/OBJReader.cpp index 7147888d6b..a9275e2d4a 100644 --- a/libraries/fbx/src/OBJReader.cpp +++ b/libraries/fbx/src/OBJReader.cpp @@ -537,18 +537,18 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping, qCDebug(modelformat) << "OBJ reader fail: " << e.what(); } - qDebug() << "---------------------- -------------------------"; foreach (QString materialID, materials.keys()) { OBJMaterial& objMaterial = materials[materialID]; - qDebug() << "materialID =" << materialID << "diffuseColor =" << objMaterial.diffuseColor; - geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor, // glm::vec3(1.0f, 1.0f, 1.0f) - objMaterial.specularColor, // glm::vec3(1.0f) - glm::vec3(), // glm::vec3() - glm::vec2(0.f, 1.0f), // glm::vec2(0.f, 1.0f) - objMaterial.shininess, // 96.0f - objMaterial.opacity); // 1.0f - FBXMaterial& material = geometry.materials[materialID]; - material._material = std::make_shared(); + geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor, + objMaterial.specularColor, + glm::vec3(0.0f), + glm::vec2(0.0f, 1.0f), + objMaterial.shininess, + objMaterial.opacity); + FBXMaterial& fbxMaterial = geometry.materials[materialID]; + fbxMaterial.materialID = materialID; + fbxMaterial._material = std::make_shared(); + model::MaterialPointer modelMaterial = fbxMaterial._material; if (!objMaterial.diffuseTextureFilename.isEmpty()) { FBXTexture texture; @@ -556,17 +556,16 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping, // TODO -- something to get textures working again } - material._material->setEmissive(material.emissiveColor); - material._material->setDiffuse(material.diffuseColor); - material._material->setMetallic(glm::length(material.specularColor)); - material._material->setGloss(material.shininess); + modelMaterial->setEmissive(fbxMaterial.emissiveColor); + modelMaterial->setDiffuse(fbxMaterial.diffuseColor); + modelMaterial->setMetallic(glm::length(fbxMaterial.specularColor)); + modelMaterial->setGloss(fbxMaterial.shininess); - if (material.opacity <= 0.0f) { - material._material->setOpacity(1.0f); + if (fbxMaterial.opacity <= 0.0f) { + modelMaterial->setOpacity(1.0f); } else { - material._material->setOpacity(material.opacity); + modelMaterial->setOpacity(fbxMaterial.opacity); } - } return geometryPtr;