Only assign default material if obj file doesn't call usemtl

This commit is contained in:
Sean Lilley 2018-08-30 23:04:45 -04:00
parent 574d06db2b
commit 0c897a6847
1 changed files with 5 additions and 6 deletions

View File

@ -502,7 +502,7 @@ function loadObj(objPath, options) {
uvs = undefined; uvs = undefined;
// Load materials and textures // Load materials and textures
return finishLoading(nodes, mtlPaths, objPath, options); return finishLoading(nodes, mtlPaths, objPath, defined(activeMaterial), options);
}); });
} }
@ -523,7 +523,7 @@ function getMtlPaths(mtllibLine) {
return mtlPaths; return mtlPaths;
} }
function finishLoading(nodes, mtlPaths, objPath, options) { function finishLoading(nodes, mtlPaths, objPath, usesMaterials, options) {
nodes = cleanNodes(nodes); nodes = cleanNodes(nodes);
if (nodes.length === 0) { if (nodes.length === 0) {
throw new RuntimeError(objPath + ' does not have any geometry data'); throw new RuntimeError(objPath + ' does not have any geometry data');
@ -531,7 +531,9 @@ function finishLoading(nodes, mtlPaths, objPath, options) {
var name = path.basename(objPath, path.extname(objPath)); var name = path.basename(objPath, path.extname(objPath));
return loadMtls(mtlPaths, objPath, options) return loadMtls(mtlPaths, objPath, options)
.then(function(materials) { .then(function(materials) {
assignDefaultMaterial(nodes, materials); if (materials.length > 0 && !usesMaterials) {
assignDefaultMaterial(nodes, materials, usesMaterials);
}
return { return {
nodes : nodes, nodes : nodes,
materials : materials, materials : materials,
@ -591,9 +593,6 @@ function loadMtls(mtlPaths, objPath, options) {
} }
function assignDefaultMaterial(nodes, materials) { function assignDefaultMaterial(nodes, materials) {
if (materials.length === 0) {
return;
}
var defaultMaterial = materials[0].name; var defaultMaterial = materials[0].name;
var nodesLength = nodes.length; var nodesLength = nodes.length;
for (var i = 0; i < nodesLength; ++i) { for (var i = 0; i < nodesLength; ++i) {