Tentone 6 anni fa
parent
commit
8a7d976c33
1 ha cambiato i file con 12 aggiunte e 6 eliminazioni
  1. 12 6
      examples/js/exporters/DracoExporter.js

+ 12 - 6
examples/js/exporters/DracoExporter.js

@@ -61,6 +61,12 @@ THREE.DRACOExporter.prototype = {
 
 		}
 
+		if ( geometry.isBufferGeometry !== true ) {
+
+			throw new Error( 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.Geometry or THREE.BufferGeometry instance.' );
+
+		}
+
 		var vertices = geometry.getAttribute( 'position' );
 		builder.AddFloatAttributeToMesh( mesh, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array );
 
@@ -72,17 +78,17 @@ THREE.DRACOExporter.prototype = {
 
 		} else {
 
-			var faces = new Uint32Array( ( vertices.array.length - 2 ) * 3 );
+			var faces = new ( vertices.count > 65535 ? Uint32Array : Uint16Array ) ( vertices.count );
 
-			for ( var i = 0, f = 0; i < vertices.array.length - 2; i += 3, f ++ ) {
+			for ( var i = 0, f = 0; i < faces.length; i += 3, f ++ ) {
 
-				faces[ i ] = f;
-				faces[ i + 1 ] = f + 1;
-				faces[ i + 2 ] = f + 2;
+				faces[ i ] = i;
+				faces[ i + 1 ] = i + 1;
+				faces[ i + 2 ] = i + 2;
 
 			}
 
-			builder.AddFacesToMesh( mesh, vertices.array.length, faces );
+			builder.AddFacesToMesh( mesh, vertices.count, faces );
 
 		}