首页 / 浏览问题 / WebGIS / 问题详情
v11.3相机离墙少于1米,射线检测不到墙
47EXP 2025年02月08日

相机离墙小于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个回答

您好!根据您描述的问题我这边的解决思路如下:

1.设置最小检测距离:通过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;
 

您这边试一下能否解决?希望可以帮助到您。

3,367EXP 2025年02月10日
...