浏览代码

GLTFLoader: Clone geometry for multi-pass geometry by myself

Takahiro 7 年之前
父节点
当前提交
bbf912d1f2
共有 1 个文件被更改,包括 11 次插入2 次删除
  1. 11 2
      examples/js/loaders/GLTFLoader.js

+ 11 - 2
examples/js/loaders/GLTFLoader.js

@@ -2169,8 +2169,17 @@ THREE.GLTFLoader = ( function () {
 
 				if ( isCombinable ) {
 
-					// Cloning geometry because of index override
-					var geometry = geometries[ 0 ].clone();
+					// Cloning geometry because of index override.
+					// Attributes can be reused so cloning by myself here.
+					var source = geometries[ 0 ];
+					var geometry = new THREE.BufferGeometry();
+
+					geometry.name = source.name;
+					geometry.userData = source.userData;
+
+					for ( var key in source.attributes ) geometry.addAttribute( key, source.attributes[ key ] );
+					for ( var key in source.morphAttributes ) geometry.morphAttributes[ key ] = source.morphAttributes[ key ];
+
 					var indices = [];
 					var offset = 0;