在Potree中,我可以使用nodesOnRay获取相交的节点,但是我会循环遍历所有节点中的所有点,这会降低性能。我想获得最近的命中节点,而不是射线上的所有节点。
我尝试使用pointCloud.pick()方法,但它取决于2d点,当我尝试使用摄像机的位置和方向获取屏幕上的投影点时,它给我错误的结果
let raycaster = new THREE.Raycaster(cameraPosition, cameraDirection, 1, 3);
raycaster.linePrecision = 0.1;
let ray = raycaster.ray;
let pixelPosition1 = computeScreenSpaceBoundingBox(volume.box,
viewer.scene.getActiveCamera());
pickParams.x = pixelPosition1.x;
pickParams.y = pixelPosition1.y;
let inter = viewer.scene.pointclouds[0].pick(viewer,
viewer.scene.getActiveCamera(), ray, pickParams);