提交 af06c212 编写于 作者: J Jonne Nauha 提交者: Mr.doob

OBJLoader: Fix bug that produced geom group and multi-material for objects...

OBJLoader: Fix bug that produced geom group and multi-material for objects where the last line is a material change. (#9645)

This was incorrectly used for multi-material even if no faces for the new material were declared.

Fixes #9495
上级 63eeb185
......@@ -89,14 +89,14 @@ THREE.OBJLoader.prototype = {
}
var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined );
if ( this.object && typeof this.object._finalize === 'function' ) {
this.object._finalize();
this.object._finalize( true );
}
var previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined );
this.object = {
name : name || '',
fromDeclaration : ( fromDeclaration !== false ),
......@@ -132,16 +132,18 @@ THREE.OBJLoader.prototype = {
inherited : false,
clone : function( index ) {
return {
var cloned = {
index : ( typeof index === 'number' ? index : this.index ),
name : this.name,
mtllib : this.mtllib,
smooth : this.smooth,
groupStart : this.groupEnd,
groupStart : 0,
groupEnd : -1,
groupCount : -1,
inherited : false
};
cloned.clone = this.clone.bind(cloned);
return cloned;
}
};
......@@ -172,12 +174,25 @@ THREE.OBJLoader.prototype = {
}
// Ignore objects tail materials if no face declarations followed them before a new o/g started.
if ( end && this.materials.length > 1 ) {
for ( var mi = this.materials.length - 1; mi >= 0; mi-- ) {
if ( this.materials[mi].groupCount <= 0 ) {
this.materials.splice( mi, 1 );
}
}
}
// Guarantee at least one empty material, this makes the creation later more straight forward.
if ( end !== false && this.materials.length === 0 ) {
if ( end && this.materials.length === 0 ) {
this.materials.push({
name : '',
smooth : this.smooth
});
}
return lastMultiMaterial;
......@@ -207,7 +222,7 @@ THREE.OBJLoader.prototype = {
if ( this.object && typeof this.object._finalize === 'function' ) {
this.object._finalize();
this.object._finalize( true );
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册