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 に答える