fix a bug that caused obj models with no material to randomly use the materials of other things in the view

This commit is contained in:
Seth Alves 2017-03-18 14:34:19 -07:00
parent e1a0984fed
commit b945d9c4cb
2 changed files with 4 additions and 3 deletions

View file

@ -546,6 +546,7 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping,
QString queryPart = _url.query(); QString queryPart = _url.query();
bool suppressMaterialsHack = queryPart.contains("hifiusemat"); // If this appears in query string, don't fetch mtl even if used. bool suppressMaterialsHack = queryPart.contains("hifiusemat"); // If this appears in query string, don't fetch mtl even if used.
OBJMaterial& preDefinedMaterial = materials[SMART_DEFAULT_MATERIAL_NAME]; OBJMaterial& preDefinedMaterial = materials[SMART_DEFAULT_MATERIAL_NAME];
preDefinedMaterial.used = true;
if (suppressMaterialsHack) { if (suppressMaterialsHack) {
needsMaterialLibrary = preDefinedMaterial.userSpecifiesUV = false; // I said it was a hack... needsMaterialLibrary = preDefinedMaterial.userSpecifiesUV = false; // I said it was a hack...
} }
@ -594,8 +595,8 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping,
} }
foreach (QString materialID, materials.keys()) { foreach (QString materialID, materials.keys()) {
OBJMaterial& objMaterial = materials[materialID]; OBJMaterial& objMaterial = materials[materialID];
if (!objMaterial.used) { if (!objMaterial.used) {
continue; continue;
} }
geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor, geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor,

View file

@ -58,7 +58,7 @@ public:
QByteArray specularTextureFilename; QByteArray specularTextureFilename;
bool used { false }; bool used { false };
bool userSpecifiesUV { false }; bool userSpecifiesUV { false };
OBJMaterial() : shininess(96.0f), opacity(1.0f), diffuseColor(1.0f), specularColor(1.0f) {} OBJMaterial() : shininess(0.0f), opacity(1.0f), diffuseColor(0.9f), specularColor(0.9f) {}
}; };
class OBJReader: public QObject { // QObject so we can make network requests. class OBJReader: public QObject { // QObject so we can make network requests.