Select 粒子ID和在Three.js中检索多个ID

Select 粒子ID和在Three.js中检索多个ID,select,three.js,Select,Three.js,我正在尝试使用three.js创建粒子,目前作为粒子系统。 该项目的目标是创建具有定义位置和唯一ID的粒子,并添加一个选项以选择多个粒子并检索其ID 我做了一些研究,但只找到了检测鼠标点击位置的方法 因此,我正在寻找以下信息: 第一:是否有为单个粒子指定ID的选项(简单到一个数字)? 第二:有没有办法选择多个粒子并在(弹出)窗口中查看它们的ID 谢谢你的帮助 PS:我发现,您可以将ID分配给THREE.particleCommmaterial(我不知道,这个函数做什么!?)和THREE.Part

我正在尝试使用three.js创建粒子,目前作为粒子系统。 该项目的目标是创建具有定义位置和唯一ID的粒子,并添加一个选项以选择多个粒子并检索其ID

我做了一些研究,但只找到了检测鼠标点击位置的方法

因此,我正在寻找以下信息:

第一:是否有为单个粒子指定ID的选项(简单到一个数字)? 第二:有没有办法选择多个粒子并在(弹出)窗口中查看它们的ID

谢谢你的帮助


PS:我发现,您可以将ID分配给THREE.particleCommmaterial(我不知道,这个函数做什么!?)和THREE.ParticleBasicMaterial(为材质分配ID,但不为粒子本身分配ID)。

默认情况下,所有
Object3D
实例在THREE.js中都有一个唯一的ID,粒子继承了该ID。如果有帮助的话,
Object3D
还有一个name属性

下面是一个演示命名粒子的小片段:

for ( var i = 0; i < 100; i++ ) {

                    particle = new THREE.Particle( new THREE.ParticleCanvasMaterial( { color: Math.random() * 0x808008 + 0x808080, program: program } ) );
                    particle.name = "particle"+i;
                    particle.position.x = Math.random() * 2000 - 1000;
                    particle.position.y = Math.random() * 2000 - 1000;
                    particle.position.z = Math.random() * 2000 - 1000;
                    particle.scale.x = particle.scale.y = Math.random() * 10 + 5;
                    group.add( particle );
                }

祝你好运

有可能成为一名JSFIDLE吗?;)我运行此代码时遇到问题;(嗨,我也在努力实现同样的目标……你最终解决了这个问题吗?
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.intersectScene( scene );

                if ( intersects.length > 0 ) {

                    console.log("you clicked particle named '" + intersects[0].object.name + "' with id: " + intersects[0].object.id);

                }

            }