raycaster:pick
by realhunts
HTML
<div id="info">Picking Demo</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/OrbitControls.js">
</script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
JavaScript
var camera, scene, renderer, light, controls;
var cube1, cube2, sphere;
var raycaster;
var mouse = new THREE.Vector2();
var pickables = [];
init();
animate();
function init() {
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 500;
scene.add(camera);
var geometry = new THREE.BoxGeometry(20, 20, 20);
// clone wont work ... seems to retain the same material
var cube1 = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({
color: 0xffffff,
vertexColors:THREE.FaceColors
}));
cube1.position.x = -60;
var geometry2 = new THREE.BoxGeometry(20, 20, 20);
var cube2 = new THREE.Mesh(geometry2, new THREE.MeshBasicMaterial({
color: 0xffffff,
vertexColors:THREE.FaceColors
}));
cube2.position.x = 60;
sphere = new THREE.Mesh(new THREE.SphereGeometry(20), new THREE.MeshBasicMaterial({
color: 0xffffff,
vertexColors:THREE.FaceColors
}));
scene.add(cube1);
scene.add(cube2);
scene.add(sphere);
pickables = [cube1, cube2, sphere];
cube1.name = "cube1";
cube2.name = "cube2";
light = new THREE.PointLight(0xffffff);
light.position.set(100, 300, 200);
scene.add(light);
var gridXZ = new THREE.GridHelper(100, 10);
scene.add(gridXZ);
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
//controls = new THREE.OrbitControls(camera, renderer.domElement);
document.body.appendChild(renderer.domElement);
raycaster = new THREE.Raycaster();
document.addEventListener( 'mousedown', onDocumentMouseDown, false );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
}
faceUtils = function(){};
faceUtils.vertexHash = function(geometry){
geometry.vertexHash = [];
var faces = geometry.faces;
var vLen = geometry.vertices.length;
...