首页 / 浏览问题 / WebGIS / 问题详情
是否有遮挡剔除功能
fy
111EXP 2023年09月07日
超图有没有遮挡剔除功能,就是被遮挡的对象不参与实时渲染和计算,如果有怎么实现

1个回答

您好,

  • 在iClient3D for Cesium 中,您可以采用CullingVolume(遮挡剔除体)功能来实现需求。CullingVolume 是基于相机位置和视锥体(Frustum)的定义创建的一个三维几何体。它通过与场景中的对象进行相交测试,确定哪些对象在当前视角下处于可见状态。被遮挡的对象将不会参与实时渲染和计算,以减少不必要的开销。
  • 实现过程可以参考以下示例:

// 创建相机对象

var camera = viewer.scene.camera;

// 获取当前视锥体

var frustum = camera.frustum;

// 创建遮挡剔除体

var cullingVolume = new Cesium.CullingVolume(frustum);

// 通过与场景中的对象进行相交测试判断对象是否可见

function isObjectVisible(object) {

    var boundingSphere = object.boundingSphere;

    return cullingVolume.computeVisibility(boundingSphere) !== Cesium.Intersect.OUTSIDE;

}

// 遍历场景中的对象,判断是否可见

var entities = viewer.entities.values;

for (var i = 0; i < entities.length; i++) {

    var entity = entities[i];

    if (isObjectVisible(entity)) {

        // 可见对象处理

...... }}

具体的实现建议参考官方文档:

http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/webgl/docs/Documentation/CullingVolume.html?classFilter=Culling

https://www.vvpstk.com/public/Cesium/Documentation/CullingVolume.html

希望可以帮助到您!

460EXP 2023年09月07日
...