相机离墙小于1米的位置, 用右轴向发射射线,求墙的碰撞点坐标。
let xxp = _cam.right;
let ray = new Cesium.Ray(_cam.position, xxp);
let result = viewer.scene.pickFromRay(ray);
用v11.1.1 可以检测到相机离墙0.5米,
用v11.2.0/ v11.2.1 / v11.3.0 都检测不到,距离大于1米,才可以检测到??
需要怎么设置,小于1米,也能检测到墙?
您好!根据您描述的问题我这边的解决思路如下:
1.设置最小检测距离:通过minimumDetectDistance降低阈值。
minimumDetectDistance
具体关键代码如下:
// 开启室内碰撞检测 viewer.scene.screenSpaceCameraController.enableIndoorColliDetection = true; // 设置最小检测距离为更小的值(例如0.01米) viewer.scene.screenSpaceCameraController.minimumDetectDistance = 0.01; // 如果涉及漫游模型,同步设置漫游检测距离 viewer.scene.screenSpaceCameraController.minimumWalkingDetectDistance = 0.01; 这会强制允许射线在更短距离内触发碰撞检测
2.调整相机参数:减小近裁剪面。
具体代码如下:
若射线仍被裁剪,尝试调整相机的近裁剪面
// 设置更小的近裁剪面(例如0.1米) viewer.scene.camera.frustum.near = 0.1;
您这边试一下能否解决?希望可以帮助到您。