提交 a9dbbcd3 编写于 作者: M Mugen87

ColladaLoader: Added support for polylists with more than four vertices.

上级 a5ad0a93
...@@ -2172,29 +2172,56 @@ THREE.ColladaLoader.prototype = { ...@@ -2172,29 +2172,56 @@ THREE.ColladaLoader.prototype = {
var materialKeys = []; var materialKeys = [];
var start = 0, count = 0; var start = 0;
for ( var p = 0; p < primitives.length; p ++ ) { for ( var p = 0; p < primitives.length; p ++ ) {
var primitive = primitives[ p ]; var primitive = primitives[ p ];
var inputs = primitive.inputs; var inputs = primitive.inputs;
var triangleCount = 1;
if ( primitive.vcount && primitive.vcount[ 0 ] === 4 ) { // groups
triangleCount = 2; // one quad -> two triangles var count = 0;
} for ( var g = 0; g < primitive.count; g ++ ) {
// groups var type = primitive.type;
if ( primitive.type === 'lines' || primitive.type === 'linestrips' ) { switch ( type ) {
count = primitive.count * 2; case 'lines':
case 'linestrips':
count += 2;
break;
} else { case 'triangles':
count += 3;
break;
case 'polylist':
var vc = primitive.vcount[ g ];
count = primitive.count * 3 * triangleCount; switch ( vc ) {
case 3:
count += 3; // single triangle
break;
case 4:
count += 6; // quad, subdivided into two triangles
break;
default:
count += ( vc - 2 ) * 3; // polylist with more than four vertices
break;
}
break;
default:
console.warn( 'THREE.ColladaLoader: Unknow primitive type:', type );
}
} }
...@@ -2334,8 +2361,6 @@ THREE.ColladaLoader.prototype = { ...@@ -2334,8 +2361,6 @@ THREE.ColladaLoader.prototype = {
} }
var maxcount = 0;
var sourceArray = source.array; var sourceArray = source.array;
var sourceStride = source.stride; var sourceStride = source.stride;
...@@ -2365,19 +2390,21 @@ THREE.ColladaLoader.prototype = { ...@@ -2365,19 +2390,21 @@ THREE.ColladaLoader.prototype = {
pushVector( a ); pushVector( b ); pushVector( c ); pushVector( a ); pushVector( b ); pushVector( c );
} else { } else if ( count > 4 ) {
maxcount = Math.max( maxcount, count ); for ( var k = 1, kl = ( count - 2 ); k <= kl; k ++ ) {
} var a = index + stride * 0;
var b = index + stride * k;
var c = index + stride * ( k + 1 );
index += stride * count; pushVector( a ); pushVector( b ); pushVector( c );
} }
if ( maxcount > 0 ) { }
console.log( 'THREE.ColladaLoader: Geometry has faces with more than 4 vertices.' ); index += stride * count;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册