首页 > 解决方案 > 如何使用铯投射光线并检测与点云的交点

问题描述

我目前正在研究一个应该投射光线并找到它与点云(Cesium3DTileSet)相交的点的铯项目。

到目前为止,我还没有找到一种方法来做到这一点。我确实设法实现了 scene.pickFromRay 和 DrillPickFromRay:

//CameraPosition and CameraDirection: [x, y, z]
const { cameraPosition, cameraDirection } = cameraToWorldPoint(rotationQuaternion, translation, geoTransformationMatrix)

const ray = new Cesium.Ray(new Cesium.Cartesian3(cameraPosition[0], cameraPosition[1], cameraPosition[2]), new Cesium.Cartesian3(cameraDirection[0], cameraDirection[1], cameraDirection[2]));
const intersections = viewer.scene.drillPickFromRay(ray, undefined, undefined, 5);
//Always returns an array of one object (Cesium3dTileSet)

return { x: intersections[0].position.x, y: intersections[0].position.y, z: intersections[0].position.z }

但是 pickFromRay 和 DrillPickFromRay 的交叉点似乎发生在整个 CesiumTileSet 对象上,而不是点云中的实际点,这意味着它不会返回我实际需要的位置。

有人会知道实现这一目标的不同方法或方式吗?

标签: javascriptraytracingpoint-cloudscesium

解决方案


推荐阅读