Explorar o código

Add userGrouops option to BufferGeometryUtils.mergeBufferGeometries

Takahiro %!s(int64=7) %!d(string=hai) anos
pai
achega
8fe6418631
Modificáronse 1 ficheiros con 27 adicións e 1 borrados
  1. 27 1
      examples/js/BufferGeometryUtils.js

+ 27 - 1
examples/js/BufferGeometryUtils.js

@@ -188,7 +188,7 @@ THREE.BufferGeometryUtils = {
 	 * @param  {Array<THREE.BufferGeometry>} geometries
 	 * @return {THREE.BufferGeometry}
 	 */
-	mergeBufferGeometries: function ( geometries ) {
+	mergeBufferGeometries: function ( geometries, useGroups ) {
 
 		var isIndexed = geometries[ 0 ].index !== null;
 
@@ -200,6 +200,8 @@ THREE.BufferGeometryUtils = {
 
 		var mergedGeometry = new THREE.BufferGeometry();
 
+		var offset = 0;
+
 		for ( var i = 0; i < geometries.length; ++ i ) {
 
 			var geometry = geometries[ i ];
@@ -242,6 +244,30 @@ THREE.BufferGeometryUtils = {
 
 			}
 
+			if ( useGroups ) {
+
+				var count;
+
+				if ( isIndexed ) {
+
+					count = geometry.index.count
+
+				} else if ( geometry.attributes.position !== undefined ) {
+
+					count = geometry.attributes.position.count;
+
+				} else {
+
+					return null;
+
+				}
+
+				mergedGeometry.addGroup( offset, count, i );
+
+				offset += count;
+
+			}
+
 		}
 
 		// merge indices