首页 / 浏览问题 / WebGIS / 问题详情
primitives 控制glb显示和隐藏
72EXP 2022年08月05日

我要加载50个glb模型,当视高超过一定范围内控制它显示和隐藏,这个显示和隐藏要如何加入呢??

viewer.scene.primitives.add(
            Cesium.Model.fromGltf({
              url: '/model/' + feature.MODELNAME + '.glb', // 本地文件
              modelMatrix: finalmatrix,
              scale: 1 // 放大倍数
            })
          )

1个回答

您好,我们产品中通常是可以通过模型缓存的lod层简化比例(如3层设置为0%),或者S3MTilesLayer的 maxVisibleAltitude和minVisibleAltitude、visibleDistanceMax 和 visibleDistanceMin。

使用Cesium原生的primitives的话,建议您可以考虑将glb导入成model后,控制model的distanceDisplayCondition属性。

希望可以帮助到您。
10,758EXP 2022年08月05日
这个导入model是要怎么导入
并且我加载的glb模型更多个不止50个模型,我这一个杆塔上面加载的都有可能有七八千个模型
你定一个modele接一下Cesium.Model.fromGltf()后的结果设了可见距离后再add。
你如果不是三五个数据集,千把万把数据量,那肯定不建议一个个前端add,

建议是在iDesktop切好好缓存,直接按缓存图层加数据。

我这个功能好像没有办法保证缓存,我是直接读取本地数据库来加载数据的;

那安这个业务逻辑你只能一个个 glb 导入成一个个model,挨个给 distanceDisplayCondition 了。

毕竟三维前端这块,主流的数据路径我们产品这边建议的技术路径,基于三维数据体量大、性能、网络等因素考虑,

都是建议走缓存路径来实现的。

大批量数据走原生接口模型文件的形式,性能和优化这块只能您根据您具体项目情况攻坚一下了。yes

这个distanceDisplayCondition 根据高度显示和隐藏是 entities 里面使用的呀,那我这个是使用 primitives 添加的模型,因为我这还要通过变换矩阵修改模型转角,在primitives里面如何使用distanceDisplayCondition 这个方法呢??
不太理解您的意思, primitives里的primitive一样有的,不是某个类独有的哈,cesium里的model对象及其衍生的对象都是有这个属性的。
...