Browse Source

Add warning logs to mergeBufferGeometries & attributes.

Marquizzo 5 years ago
parent
commit
fe1cc51960
1 changed files with 62 additions and 11 deletions
  1. 62 11
      examples/js/utils/BufferGeometryUtils.js

+ 62 - 11
examples/js/utils/BufferGeometryUtils.js

@@ -17,7 +17,7 @@ THREE.BufferGeometryUtils = {
 			 attributes.normal === undefined ||
 			 attributes.uv === undefined ) {
 
-			console.warn( 'THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()' );
+			console.warn( 'THREE.BufferGeometryUtils: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
 			return;
 
 		}
@@ -197,13 +197,23 @@ THREE.BufferGeometryUtils = {
 
 			// ensure that all geometries are indexed, or none
 
-			if ( isIndexed !== ( geometry.index !== null ) ) return null;
+			if ( isIndexed !== ( geometry.index !== null ) ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );
+				return null;
+
+			}
 
 			// gather attributes, exit early if they're different
 
 			for ( var name in geometry.attributes ) {
 
-				if ( ! attributesUsed.has( name ) ) return null;
+				if ( ! attributesUsed.has( name ) ) {
+
+					console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed. All geometries must have compatible attributes; make sure ' + name + ' attribute exists among all geometries, or in none of them.' );
+					return null;
+
+				}
 
 				if ( attributes[ name ] === undefined ) attributes[ name ] = [];
 
@@ -213,11 +223,21 @@ THREE.BufferGeometryUtils = {
 
 			// gather morph attributes, exit early if they're different
 
-			if ( morphTargetsRelative !== geometry.morphTargetsRelative ) return null;
+			if ( morphTargetsRelative !== geometry.morphTargetsRelative ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed, .morphTargetsRelative must be consistent throughout all geometries.' );
+				return null;
+
+			}
 
 			for ( var name in geometry.morphAttributes ) {
 
-				if ( ! morphAttributesUsed.has( name ) ) return null;
+				if ( ! morphAttributesUsed.has( name ) ) {
+
+					console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed, .morphAttributes must be consistent throughout all geometries.' );
+					return null;
+
+				}
 
 				if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];
 
@@ -244,6 +264,7 @@ THREE.BufferGeometryUtils = {
 
 				} else {
 
+					console.warn( '??????? Why does this fail ??????' );
 					return null;
 
 				}
@@ -287,7 +308,12 @@ THREE.BufferGeometryUtils = {
 
 			var mergedAttribute = this.mergeBufferAttributes( attributes[ name ] );
 
-			if ( ! mergedAttribute ) return null;
+			if ( ! mergedAttribute ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' attribute.' );
+				return null;
+
+			}
 
 			mergedGeometry.setAttribute( name, mergedAttribute );
 
@@ -316,7 +342,12 @@ THREE.BufferGeometryUtils = {
 
 				var mergedMorphAttribute = this.mergeBufferAttributes( morphAttributesToMerge );
 
-				if ( ! mergedMorphAttribute ) return null;
+				if ( ! mergedMorphAttribute ) {
+
+					console.warn( 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );
+					return null;
+
+				}
 
 				mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );
 
@@ -343,16 +374,36 @@ THREE.BufferGeometryUtils = {
 
 			var attribute = attributes[ i ];
 
-			if ( attribute.isInterleavedBufferAttribute ) return null;
+			if ( attribute.isInterleavedBufferAttribute ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported.' );
+				return null;
+
+			}
 
 			if ( TypedArray === undefined ) TypedArray = attribute.array.constructor;
-			if ( TypedArray !== attribute.array.constructor ) return null;
+			if ( TypedArray !== attribute.array.constructor ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. Property .array must be of consistent array types across matching attributes.' );
+				return null;
+
+			}
 
 			if ( itemSize === undefined ) itemSize = attribute.itemSize;
-			if ( itemSize !== attribute.itemSize ) return null;
+			if ( itemSize !== attribute.itemSize ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. Property .itemSize must be consistent across matching attributes.' );
+				return null;
+
+			}
 
 			if ( normalized === undefined ) normalized = attribute.normalized;
-			if ( normalized !== attribute.normalized ) return null;
+			if ( normalized !== attribute.normalized ) {
+
+				console.warn( 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. Property .normalized must be consistent across matching attributes.' );
+				return null;
+
+			}
 
 			arrayLength += attribute.array.length;