提交 788c7ee2 编写于 作者: D Don McCurdy

GLTFLoader: Revert merging primitives.

上级 ff3911c2
......@@ -2150,9 +2150,6 @@ THREE.GLTFLoader = ( function () {
var primitives = meshDef.primitives;
var typesUsed = new Set();
var drawModesUsed = new Set();
return scope.loadGeometries( primitives ).then( function ( geometries ) {
for ( var i = 0, il = primitives.length; i < il; i ++ ) {
......@@ -2316,63 +2313,21 @@ THREE.GLTFLoader = ( function () {
}
if ( primitives.length === 1 ) return mesh;
mesh.name += '_' + i;
group.add( mesh );
typesUsed.add( mesh.constructor );
drawModesUsed.add( mesh.drawMode );
}
// Merge primitives into a single mesh with multiple buffer geometry
// groups. Merging requires BufferGeometryUtils, and that all primitives
// use the constructor, draw mode, and set of attributes. If any
// requirements are not met, a THREE.Group is returned instead.
if ( THREE.BufferGeometryUtils === undefined ) return group;
if ( typesUsed.size > 1 || drawModesUsed.size > 1 ) return group;
var TypedMesh = Array.from( typesUsed )[ 0 ];
var drawMode = Array.from( drawModesUsed )[ 0 ];
if ( primitives.length > 1 ) {
if ( TypedMesh !== THREE.Mesh && TypedMesh !== THREE.SkinnedMesh ) {
mesh.name += '_' + i;
return group;
group.add( mesh );
}
var groupGeometries = [];
var groupMaterials = [];
for ( var i = 0; i < group.children.length; ++i ) {
var geometry = group.children[ i ].geometry;
var material = group.children[ i ].material;
} else {
// Can't update spec/gloss uniforms on a multi-material mesh,
// so skip this case for now.
if ( material.isGLTFSpecularGlossinessMaterial ) return group;
return mesh;
groupGeometries.push( geometry );
groupMaterials.push( material );
}
}
var mergedGeometry = THREE.BufferGeometryUtils.mergeBufferGeometries( groupGeometries );
if ( !mergedGeometry ) return group;
var mergedMesh = new TypedMesh( mergedGeometry, groupMaterials );
mergedMesh.drawMode = drawMode;
if ( meshDef.name !== undefined ) mergedMesh.name = meshDef.name;
if ( meshDef.extras !== undefined ) mergedMesh.userData = meshDef.extras;
return mergedMesh;
return group;
} );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册