3
我想挑選一個場景中的對象,我使用正交相機。我的代碼片段已經工作,但它不是精確的。 我已經在stackoverflow上找到了一些答案,但是這些已被棄用或不再工作了。 這裏是我的代碼onmousedown事件three.js正射相機對象拾取
function onDocumentMouseUp(event) {
event.preventDefault();
mouse.x = (event.clientX/window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY/window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
var pos = camera.position;
var ray = new THREE.Raycaster(pos, vector.unproject(camera).sub(camera.position).normalize());
var intersects = ray.intersectObjects(objects);
if (intersects.length > 0) {
console.log("touched:" + intersects[0]);
}
else {
console.log("not touched");
}
}
請參閱http://jsfiddle.net/ujzpe07t/1/
,如果你點擊即可左/右/上/立方以下,但它仍然告訴我,該對象被感動了一些像素。
我正在使用three.js r69。
任何提示將非常感激。 謝謝,歡呼!
真棒,你固定我的問題!謝啦! – kampfgnu 2014-10-30 15:31:21
@WestLangley我也在與ortho相機戰鬥並相交。但是你的[其他答案](http://stackoverflow.com/a/18553739/1697459)是不同的。爲什麼這是我錯過了什麼?有沒有官方的ThreeJS文檔? – Wilt 2014-12-12 15:26:32
@Wilt更新了其他答案。謝謝。請參閱three.js示例。 – WestLangley 2014-12-12 18:05:21