Browse Source

Random improvements.

Mr.doob 11 năm trước cách đây
mục cha
commit
1382be562d

+ 0 - 2
editor/js/Viewport.js

@@ -579,8 +579,6 @@ var Viewport = function ( editor ) {
 		renderer.render( scene, camera );
 		renderer.render( sceneHelpers, camera );
 
-		//console.trace();
-
 	}
 
 	return container;

+ 12 - 4
examples/canvas_interactive_voxelpainter.html

@@ -33,6 +33,8 @@
 			var cubeGeometry = new THREE.BoxGeometry( 50, 50, 50 );
 			var cubeMaterial = new THREE.MeshLambertMaterial( { color: 0x00ff80, overdraw: 0.5 } );
 
+			var objects = [];
+
 			init();
 			animate();
 
@@ -46,7 +48,7 @@
 				info.style.top = '10px';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> - voxel painter<br><strong>click</strong>: add voxel, <strong>control + click</strong>: remove voxel, <strong>shift</strong>: rotate, <a href="javascript:save()">save .png</a>';
+				info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> - voxel painter<br><strong>click</strong>: add voxel, <strong>shift + click</strong>: remove voxel, <strong>control</strong>: rotate, <a href="javascript:save()">save .png</a>';
 				container.appendChild( info );
 
 				camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
@@ -85,6 +87,8 @@
 				plane.visible = false;
 				scene.add( plane );
 
+				objects.push( plane );
+
 				var material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
 
 				mouse2D = new THREE.Vector3( 0, 10000, 0.5 );
@@ -159,18 +163,20 @@
 
 				event.preventDefault();
 
-				var intersects = raycaster.intersectObjects( scene.children );
+				var intersects = raycaster.intersectObjects( objects );
 
 				if ( intersects.length > 0 ) {
 
 					var intersect = intersects[ 0 ];
 
-					if ( isCtrlDown ) {
+					if ( isShiftDown ) {
 
 						if ( intersect.object != plane ) {
 
 							scene.remove( intersect.object );
 
+							objects.splice( objects.indexOf( intersect.object ), 1 );
+
 						}
 
 					} else {
@@ -185,6 +191,8 @@
 						voxel.position.divideScalar( 50 ).floor().multiplyScalar( 50 ).addScalar( 25 );
 						scene.add( voxel );
 
+						objects.push( voxel );
+
 					}
 
 				}
@@ -231,7 +239,7 @@
 
 			function render() {
 
-				if ( isShiftDown ) {
+				if ( isCtrlDown ) {
 
 					theta += mouse2D.x * 3;
 

+ 19 - 5
examples/webgl_interactive_voxelpainter.html

@@ -38,6 +38,8 @@
 			var cubeGeo, cubeMaterial;
 			var i, intersector;
 
+			var objects = [];
+
 			init();
 			animate();
 
@@ -51,7 +53,7 @@
 				info.style.top = '10px';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> - voxel painter - webgl<br><strong>click</strong>: add voxel, <strong>control + click</strong>: remove voxel, <strong>shift + click</strong>: rotate';
+				info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> - voxel painter - webgl<br><strong>click</strong>: add voxel, <strong>shift + click</strong>: remove voxel, <strong>control</strong>: rotate';
 				container.appendChild( info );
 
 				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
@@ -103,6 +105,8 @@
 				plane.visible = false;
 				scene.add( plane );
 
+				objects.push( plane );
+
 				mouse2D = new THREE.Vector3( 0, 10000, 0.5 );
 
 				// Lights
@@ -165,6 +169,12 @@
 
 			function setVoxelPosition( intersector ) {
 
+				if ( intersector.face === null ) {
+
+					console.log( intersector )
+
+				}
+
 				normalMatrix.getNormalMatrix( intersector.object.matrixWorld );
 
 				tmpVec.copy( intersector.face.normal );
@@ -188,7 +198,7 @@
 
 				event.preventDefault();
 
-				var intersects = raycaster.intersectObjects( scene.children );
+				var intersects = raycaster.intersectObjects( objects );
 
 				if ( intersects.length > 0 ) {
 
@@ -196,12 +206,14 @@
 
 					// delete cube
 
-					if ( isCtrlDown ) {
+					if ( isShiftDown ) {
 
 						if ( intersector.object != plane ) {
 
 							scene.remove( intersector.object );
 
+							objects.splice( objects.indexOf( intersector.object ), 1 );
+
 						}
 
 					// create cube
@@ -217,6 +229,8 @@
 						voxel.updateMatrix();
 						scene.add( voxel );
 
+						objects.push( voxel );
+
 					}
 
 				}
@@ -257,7 +271,7 @@
 
 			function render() {
 
-				if ( isShiftDown ) {
+				if ( isCtrlDown ) {
 
 					theta += mouse2D.x * 1.5;
 
@@ -265,7 +279,7 @@
 
 				raycaster = projector.pickingRay( mouse2D.clone(), camera );
 
-				var intersects = raycaster.intersectObjects( scene.children );
+				var intersects = raycaster.intersectObjects( objects );
 
 				if ( intersects.length > 0 ) {