粒子ID和检索中three.js所多个ID

我想用three.js所创造的颗粒,目前作为一个粒子系统。 该项目的目标是创建颗粒,确定立场和唯一ID,并添加一个选项来选择多个粒子并检索其ID。

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

所以,我在找的以下信息:

第一:是否有分配ID为单粒子的选项(如一个数字那么简单)? 第二:有没有一种方法可以选择多个粒子,并查看它们的ID在(弹出)窗口?

感谢你的帮助!

PS:我发现,你可以分配ID来THREE.ParticleDOMMaterial(我不知道,是什么这个函数!?)和THREE.ParticleBasicMaterial(分配一个ID的物质,而不是粒子本身)。

--------------解决方案-------------

所有Object3D实例默认情况下,在three.js所唯一的ID和粒子继承了。 也Object3D有一个名称属性,如果没有什么帮助。

下面是这说明命名颗粒的小片段:

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 );
}

这里的它打印的名称,并在控制台中点击粒子的ID的鼠标按下事件处理的例子:

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);

}

}

祝你好运!

分类:选择 时间:2015-03-15 人气:0
本文关键词: 选择,three.js所
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.715 (s). 10 q(s)