我有一个PointCloud
对象,显示了几个点。我想在点击的点周围绘制一个边界框。不幸的是,我似乎无法找出如何访问PointCloud
中的单个点,如果可能的话。
这是我正在使用的射线投射代码...
window.addEventListener('dblclick', function (ev) {
var mouse = { x: 1, y: 1 };
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = -( event.clientY / window.innerHeight ) * 2 + 1;
var raycaster = new THREE.Raycaster();
raycaster.params.PointCloud.threshold = 15;
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5).unproject(camera);
raycaster.ray.set(camera.position, vector.sub(camera.position).normalize());
scene.updateMatrixWorld();
var intersects = raycaster.intersectObject(particles);
if (intersects.length > 0) {
console.log(intersects[0]);
var hex = 0x000000;
var bbox = new THREE.BoundingBoxHelper(intersects[0], hex);
bbox.update();
scene.add( bbox );
} else {
// do nothing
}
}
);
我可以使用
intersects[0].point.x
访问点击点的坐标。 但是,将 intersects[0]
传递给 BoxHelper
显然不起作用,因为 intersects[0]
不是一个 Object3D
。同样,如果我使用 intersects[0].object
,这会在整个 PointCloud
周围绘制一个框,而我只想在点击点周围绘制一个框。
这是否可能,如果可能,我该如何做呢?
非常感谢您的帮助!