【Cesium】建筑模型控制分层渲染如何实现?

作者站长头像
站长
· 阅读数 8

因为项目需要,所以一个人开始摸索cesium。网上找了一圈,几乎都是使用火星、超图等cesium二次封装库(都要钱!!!),利用它们自带的方法接口去实现建筑模型分层的渲染。然后也花了一点小钱进入了一些技术群,里面的大佬都是直接说方法,虽然有点云里雾里,但是尝试一下还是有所收获。

大佬们说的是:

  1. 在建筑模型数据上就已经切割分好层,前端直接拿到渲染就可以了。我目前就是这样做的,可以使用PrimitiveCollection 或者 scene.primitives.add循环加进去。然后,对应的变量名就存在window下,用的时候直接根据逻辑提取出来。
  1. 一整栋模型里面每个构件赋予楼层属性,然后在渲染的时候就把符合的楼层属性的组件赋予到对应的楼层变量。控制分层渲染的时候,对这些变量进行处理就行。 因为我看了一下火星和超图的例子,感觉它们用的就是这个方法,所以就想这个方法是不是比第1个方法会好一些,因此想重新从这入手,可是看了cesium的文档,不知道从何下手,有没有朋友懂这个方法的?模型数据方面如何设置?前端渲染方面如何下手,难道真的要全部遍历一遍?类似这种:Mars3D-BIM分层展示

对了,我的模型数据源是3dtiles,没办法,项目需要...

有没有朋友懂第2种方法的?模型数据方面如何设置?分享一下嘛

回复
1个回答
avatar
test
2024-07-08

1、在建筑模型数据上就已经切割分好层,前端直接拿到渲染就可以了。

这种方式建模师比较耗时间,当然前端也不容易(难点在于全局变量的使用),不过好处就是,每一个楼层都是单独的模型,可以一次性加载,也可以懒加载/按需加载

2、一整栋模型里面每个构件赋予楼层属性。

然后在渲染的时候就把符合的楼层属性的组件赋予到对应的楼层变量。控制分层渲染的时候,对这些变量进行处理就行(符合当前楼层的,就控制拥有当前楼层属性的构件显示,其余隐藏)。注意的是,这样的话模型就只能一次性加载出来。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容