2
0
Эх сурвалжийг харах

Geometry.merge(): Check that geometry is instance of THREE.Geometry.

Mr.doob 11 жил өмнө
parent
commit
d1a18e9b2d

+ 8 - 3
examples/js/controls/TransformControls.js

@@ -151,7 +151,8 @@
 			this.traverse(function ( child ) {
 			this.traverse(function ( child ) {
 				if (child instanceof THREE.Mesh) {			
 				if (child instanceof THREE.Mesh) {			
 					var tempGeometry = new THREE.Geometry();
 					var tempGeometry = new THREE.Geometry();
-					// THREE.GeometryUtils.merge( tempGeometry, child );
+					tempGeometry.merge( child );
+
 					child.geometry = tempGeometry;
 					child.geometry = tempGeometry;
 					child.position.set( 0, 0, 0 );
 					child.position.set( 0, 0, 0 );
 					child.rotation.set( 0, 0, 0 );
 					child.rotation.set( 0, 0, 0 );
@@ -215,7 +216,9 @@
 		var arrowGeometry = new THREE.Geometry();
 		var arrowGeometry = new THREE.Geometry();
 		var mesh = new THREE.Mesh( new THREE.CylinderGeometry( 0, 0.05, 0.2, 12, 1, false ) );
 		var mesh = new THREE.Mesh( new THREE.CylinderGeometry( 0, 0.05, 0.2, 12, 1, false ) );
 		mesh.position.y = 0.5;
 		mesh.position.y = 0.5;
-		// THREE.GeometryUtils.merge( arrowGeometry, mesh );
+		mesh.updateMatrix();
+
+		arrowGeometry.merge( mesh.geometry, mesh.matrix );
 		
 		
 		var lineXGeometry = new THREE.Geometry();
 		var lineXGeometry = new THREE.Geometry();
 		lineXGeometry.vertices.push( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ) );
 		lineXGeometry.vertices.push( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ) );
@@ -449,7 +452,9 @@
 		var arrowGeometry = new THREE.Geometry();
 		var arrowGeometry = new THREE.Geometry();
 		var mesh = new THREE.Mesh( new THREE.BoxGeometry( 0.125, 0.125, 0.125 ) );
 		var mesh = new THREE.Mesh( new THREE.BoxGeometry( 0.125, 0.125, 0.125 ) );
 		mesh.position.y = 0.5;
 		mesh.position.y = 0.5;
-		// THREE.GeometryUtils.merge( arrowGeometry, mesh );
+		mesh.updateMatrix();
+
+		arrowGeometry.merge( mesh.geometry, mesh.matrix );
 
 
 		var lineXGeometry = new THREE.Geometry();
 		var lineXGeometry = new THREE.Geometry();
 		lineXGeometry.vertices.push( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ) );
 		lineXGeometry.vertices.push( new THREE.Vector3( 0, 0, 0 ), new THREE.Vector3( 1, 0, 0 ) );

+ 7 - 0
src/core/Geometry.js

@@ -455,6 +455,13 @@ THREE.Geometry.prototype = {
 
 
 	merge: function ( geometry, matrix, materialIndexOffset ) {
 	merge: function ( geometry, matrix, materialIndexOffset ) {
 
 
+		if ( geometry instanceof THREE.Geometry === false ) {
+
+			console.error( 'THREE.Geometry.merge():', 'geometry supplied is not an instance of THREE.Geometry' );
+			return;
+
+		}
+
 		var normalMatrix,
 		var normalMatrix,
 		vertexOffset = this.vertices.length,
 		vertexOffset = this.vertices.length,
 		uvPosition = this.faceVertexUvs[ 0 ].length,
 		uvPosition = this.faceVertexUvs[ 0 ].length,