检测粒子系统中的点击粒子

时间:2013-08-20 14:05:39

标签: javascript three.js webgl

我有粒子,这是一个THREE.Geometry,当我设置我的场景时,有50个粒子被推到粒子上。然后我创建一个带粒子的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?
}

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

1 个答案:

答案 0 :(得分:0)

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