所有Object3D
實例默認情況下在three.js中都有一個唯一的ID,並且Particle繼承該實例。另外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);
}
}
Goodluck!
你好,我正在努力實現同樣的事情..你結束了這個工作嗎? – Linus