Ver Fonte

GLTFLoader: Try merge geometries with BufferGeometryUtils

Takahiro há 7 anos atrás
pai
commit
3c0eb6dbcf
1 ficheiros alterados com 22 adições e 1 exclusões
  1. 22 1
      examples/js/loaders/GLTFLoader.js

+ 22 - 1
examples/js/loaders/GLTFLoader.js

@@ -2178,7 +2178,28 @@ THREE.GLTFLoader = ( function () {
 
 			}
 
-			return Promise.all( pending );
+			return Promise.all( pending ).then( function ( geometries ) {
+
+				// Try merge geometries with BufferGeometryUtils if possible
+
+				if ( geometries.length > 1 && THREE.BufferGeometryUtils !== undefined ) {
+
+					for ( var i = 1, il = primitives.length; i < il; i ++ ) {
+
+						// can't merge if draw mode is differenct
+						if ( primitives[ 0 ].mode !== primitives[ i ].mode ) return geometries;
+
+					}
+
+					var geometry = THREE.BufferGeometryUtils.mergeBufferGeometries( geometries, true );
+
+					if ( geometry !== null ) return [ geometry ];
+
+				}
+
+				return geometries;
+
+			} );
 
 		} );