|
@@ -25,7 +25,7 @@
|
|
|
var camera, scene, renderer;
|
|
|
var projector, plane;
|
|
|
var mouse2D, mouse3D, ray,
|
|
|
- rollOveredFace, isShiftDown = false,
|
|
|
+ isShiftDown = false,
|
|
|
theta = 45, isCtrlDown = false,
|
|
|
target = new THREE.Vector3( 0, 200, 0 );
|
|
|
|
|
@@ -73,8 +73,9 @@
|
|
|
|
|
|
projector = new THREE.Projector();
|
|
|
|
|
|
- plane = new THREE.Mesh( new THREE.PlaneGeometry( 1000, 1000 ), new THREE.MeshFaceMaterial() );
|
|
|
+ plane = new THREE.Mesh( new THREE.PlaneGeometry( 1000, 1000 ), new THREE.MeshBasicMaterial() );
|
|
|
plane.rotation.x = - Math.PI / 2;
|
|
|
+ plane.visible = false;
|
|
|
scene.add( plane );
|
|
|
|
|
|
mouse2D = new THREE.Vector3( 0, 10000, 0.5 );
|
|
@@ -142,6 +143,9 @@
|
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
+ mouse3D = projector.unprojectVector( mouse2D.clone(), camera );
|
|
|
+ ray.direction = mouse3D.subSelf( camera.position ).normalize();
|
|
|
+
|
|
|
var intersects = ray.intersectObjects( scene.children );
|
|
|
|
|
|
if ( intersects.length > 0 ) {
|
|
@@ -221,27 +225,6 @@
|
|
|
camera.position.z = 1400 * Math.cos( theta * Math.PI / 360 );
|
|
|
camera.lookAt( target );
|
|
|
|
|
|
- mouse3D = projector.unprojectVector( mouse2D.clone(), camera );
|
|
|
- ray.direction = mouse3D.subSelf( camera.position ).normalize();
|
|
|
-
|
|
|
- var intersects = ray.intersectObjects( scene.children );
|
|
|
-
|
|
|
- if ( intersects.length > 0 ) {
|
|
|
-
|
|
|
- if ( intersects[ 0 ].face != rollOveredFace ) {
|
|
|
-
|
|
|
- if ( rollOveredFace ) rollOveredFace.materials = [];
|
|
|
- rollOveredFace = intersects[ 0 ].face;
|
|
|
- rollOveredFace.materials = [ new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5 } ) ];
|
|
|
- }
|
|
|
-
|
|
|
- } else if ( rollOveredFace ) {
|
|
|
-
|
|
|
- rollOveredFace.materials = [];
|
|
|
- rollOveredFace = null;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
renderer.render( scene, camera );
|
|
|
|
|
|
}
|