【发布时间】:2013-08-20 01:26:12
【问题描述】:
我在检测与 THREE.js 的对象交叉点时遇到问题。我的对象是从这样的 2D 几何体中挤出来的:
var geoShape = new THREE.Shape(vertexes);
var geometry = new THREE.ExtrudeGeometry(geoShape, { bevelEnabled: false, amount: 3 });
var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry,
[new THREE.MeshLambertMaterial({ color: '#493D26' })]
);
scene.add(mesh);
然后我尝试像这样检测交叉点:
container.mousedown(function (e) {
event.preventDefault();
var vector = new THREE.Vector3((e.clientX / window.innerWidth) * 2 - 1, -(e.clientY / window.innerHeight) * 2 + 1, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(scene.children);
console.log(intersects);
});
每次,我的 intersects 数组都是空的。如果我在场景中添加一个球体,我会得到交叉点,但前提是我放大到 z
【问题讨论】:
-
你的画布元素是全屏的?
-
@uhura 目前,是的。稍后我可能会更改它,但当我遇到它时我可以处理它。
-
尝试为
raycaster.intersectObjects(scene.children, true);添加true -
@uhura 天哪,真的那么容易吗?这就像一个魅力。将其移至答案,我会标记它。
标签: javascript three.js rendering intersection