0

我有粒子,这是一个 THREE.Geometry,当我设置我的场景时,有 50 个粒子被推送到particles.vertices。然后我用粒子创建了一个 THREE.ParticleSystem。当我在文档上按下鼠标时,会触发以下函数:

function onDocumentMouseDown(event) {
    event.preventDefault();
    var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
    projector.unprojectVector(vector, camera);
    var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
    var intersects = ray.intersectObjects(particles);

    console.log(intersects); // outputs empty array?
}

但是,相交总是返回一个空数组。我错过了什么吗?如何检测鼠标按下时单击了哪个粒子?我在 WebGL 中这样做。

4

1 回答 1

0

不幸的是,Ray 现在不支持 ParticleSystem。您可以在此处找到有关如何解决此问题的一些想法。在这个拉取请求中,您可以找到如何完成它的工作示例,但是该灵魂是基于粒子大小阈值的,因此它并不完美,但在简单的情况下应该没问题。

于 2013-08-20T15:03:38.950 回答