未验证 提交 729ac6d0 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #13755 from Mugen87/dev3

ColladaLoader: Added support for polylists with more than four vertices.
......@@ -2172,29 +2172,56 @@ THREE.ColladaLoader.prototype = {
var materialKeys = [];
var start = 0, count = 0;
var start = 0;
for ( var p = 0; p < primitives.length; p ++ ) {
var primitive = primitives[ p ];
var inputs = primitive.inputs;
var triangleCount = 1;
if ( primitive.vcount && primitive.vcount[ 0 ] === 4 ) {
// groups
triangleCount = 2; // one quad -> two triangles
var count = 0;
}
switch ( primitive.type ) {
// groups
case 'lines':
case 'linestrips':
count = primitive.count * 2;
break;
if ( primitive.type === 'lines' || primitive.type === 'linestrips' ) {
case 'triangles':
count = primitive.count * 3;
break;
count = primitive.count * 2;
case 'polylist':
} else {
for ( var g = 0; g < primitive.count; g ++ ) {
var vc = primitive.vcount[ g ];
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;
count = primitive.count * 3 * triangleCount;
}
}
break;
default:
console.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );
}
......@@ -2334,8 +2361,6 @@ THREE.ColladaLoader.prototype = {
}
var maxcount = 0;
var sourceArray = source.array;
var sourceStride = source.stride;
......@@ -2365,19 +2390,21 @@ THREE.ColladaLoader.prototype = {
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.
先完成此消息的编辑!
想要评论请 注册