位置: IT常识 - 正文

【003】-Cesium中加载大规模数据稳定流畅之性能优化思路(cesium description)

编辑:rootadmin
【003】-Cesium中加载大规模数据稳定流畅之性能优化思路

推荐整理分享【003】-Cesium中加载大规模数据稳定流畅之性能优化思路(cesium description),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cesium.,cesium wms,cesium.when,cesium.viewer,cesium.when,cesium.viewer,cesium.viewer,cesium.rectangle.fromdegress,内容如对您有帮助,希望把文章链接给更多的朋友!

使用数据流技术:Cesium支持使用数据流技术,即按需加载和卸载数据,以最小化数据传输量和加载时间。

在 Cesium 中,Cesium3DTileset#maximumMemoryUsage 属性的作用是控制 3D Tiles 的最大内存使用量,从而在保证数据流畅的前提下尽可能减小内存占用。

实现原理大致如下:

Cesium 会根据相机位置和高度动态调整 3D Tiles 的细节级别,并将需要渲染的 Tiles 加入渲染队列。

当队列中的 Tiles 的内存使用量超过 maximumMemoryUsage 属性设置的最大值时,Cesium 会按照一定的策略卸载一些不必要的 Tiles,以释放内存空间。

当相机位置和高度发生变化时,Cesium 会重新计算渲染队列并按需加载新的 Tiles。

需要注意的是,maximumMemoryUsage 属性的设置需要根据实际情况进行调整,以平衡内存占用和渲染质量。同时,Cesium 也提供了其他一些控制内存占用和渲染效率的属性和方法,如 Cesium3DTileset#maximumScreenSpaceError 属性等,开发者可以根据实际需求进行选择和配置。

const tileset = new Cesium.Cesium3DTileset({url: 'path/3DTiles.json',});tileset.loadInitialTiles();viewer.scene.primitives.add(tileset);tileset.tilesLoaded.addEventListener(function () {// 按需加载和卸载数据tileset.maximumMemoryUsage = 1024 * 1024 * 1024; // 设置3D Tiles的最大内存使用量tileset.maximumScreenSpaceError = 2; // 设置3D Tiles的屏幕空间误差// 其他操作// ...});

通过以上代码,Cesium会自动按需加载和卸载数据,以最小化数据传输量和加载时间,同时也可以设置一些参数来控制数据的加载和显示。需要注意的是,具体实现还需要根据实际情况进行调整和优化。

使用LOD:使用层次细节(LOD)技术,根据相机位置和高度调整3D Tiles的细节级别。这可以帮助减少渲染时间和内存使用。

可以使用 Cesium 的 Cesium3DTileset#maximumScreenSpaceError 属性来控制 3D Tiles 的细节级别。

const tileset = new Cesium.Cesium3DTileset({url: 'path/3DTiles.json',});tileset.loadInitialTiles();viewer.scene.primitives.add(tileset);tileset.tilesLoaded.addEventListener(function () {// 设置 LODtileset.maximumScreenSpaceError = 2; // 设置 3D Tiles 的屏幕空间误差,控制细节级别// 其他操作// ...});

通过以上代码,Cesium 会根据相机位置和高度调整 3D Tiles 的细节级别,从而提高渲染效率。需要注意的是,maximumScreenSpaceError 属性的值需要根据实际情况进行调整,以平衡渲染效率和渲染质量。

使用Web Workers:使用Web Workers可以将数据处理和渲染任务分离,从而提高性能和响应速度。

使用空间索引:使用空间索引可以优化查询和可视化操作。例如,将3D Tiles数据划分为较小的块,并为每个块创建一个索引,以便快速访问和可视化。

优化网络带宽:优化网络带宽可以减少数据传输时间和成本。可以使用压缩算法和数据分块等技术来减少数据传输量。

合并网格:Cesium 中的合并网格(Merge Mesh)技术可以将多个网格对象合并成一个网格对象,减少渲染调用和 GPU 开销。可以使用 Cesium.MeshMerger API 进行网格合并。

纹理合批:在场景中存在大量重复使用的纹理时,可以使用纹理合批(Texture Atlas)技术将多个纹理合并为一个纹理,减少纹理切换次数和 GPU 开销。

纹理压缩:对纹理进行压缩,可以减少纹理大小和带宽占用,提高性能。可以使用基于 GPU 的纹理压缩方法,如 ETC1、ETC2、ASTC 等。

优化纹理加载:对纹理进行优化,如减小尺寸、使用 MIPMAP 等,可以减小纹理文件的大小,从而提高加载性能。可以使用 Cesium 提供的纹理优化工具或其他第三方工具进行纹理优化。

减少数据量:将数据量压缩至最小,使用合适的压缩算法、数据格式和分辨率,可以减小数据大小,加快数据加载和渲染速度。例如,Cesium 中的 3D Tiles 数据格式支持数据分层和压缩,可以通过数据优化工具实现数据的最优化。

优化渲染管线:通过优化渲染管线,减少渲染调用和 GPU 开销,可以进一步提高渲染性能。例如,可以使用 GPU 粒子系统、GPU 物理引擎等技术,加速渲染效果。

限制场景元素:避免过多的场景元素,例如限制可见区域、限制可见对象数量、控制物体的数量和分布等。

缓存机制:使用缓存机制可以避免重复请求,提高数据的加载速度。例如,可以使用浏览器缓存或者使用 Cesium 中的缓存机制。

延迟加载:可以延迟数据的加载和渲染,先加载必要的数据和场景元素,等待场景交互事件触发时再加载附加的数据和场景元素,避免一次性加载过多的数据,降低系统负荷。

【003】-Cesium中加载大规模数据稳定流畅之性能优化思路(cesium description)

其他优化技巧:例如,禁用一些不必要的功能、使用更低的纹理质量、降低视角切换的频率、减少阴影计算等,都可以提高系统的性能。

避免频繁的内存分配:在循环中频繁地创建和销毁对象会导致内存分配和垃圾回收,造成性能损失。可以通过对象池、缓存对象等方法避免频繁的内存分配。

使用浏览器的硬件加速:Cesium 采用 WebGL 技术进行图形渲染,浏览器中可以通过启用硬件加速来提高图形渲染性能。可以通过 WebGLRenderingContext.getContextAttributes() 方法获取硬件加速的配置信息。

减少帧率:如果场景元素较多,可以适当降低帧率,避免过高的帧率导致卡顿和性能下降。可以使用 viewer.targetFrameRate 属性设置目标帧率。

异步加载资源:Cesium 中支持异步加载各种资源,如模型、图片、纹理等。可以使用 Cesium.Resource API 异步加载资源,减少数据加载时间和带宽占用。

避免过多的渲染状态切换:过多的渲染状态切换会导致 GPU 开销增加,降低性能。可以合并相同的渲染状态,避免多次状态切换。

精简数据:优化数据结构和数据大小,可以降低数据加载和传输时间。可以使用数据压缩、数据转换、数据过滤等方法,精简数据。(这个是处理好是最强的)

分批加载:将数据分为多个批次加载,可以避免一次加载过多数据导致的性能问题。可以使用 Cesium.loadJson()、Cesium.loadBlob() 等 API 分批加载数据。

精细化控制:对数据加载和渲染进行精细化控制,可以最大限度地提高性能。可以使用 Cesium.LoadingPolicy、Cesium.RenderState、Cesium.ShadowMode 等 API 精细化控制数据加载和渲染。

GPU 预处理:对数据进行预处理,以加速 GPU 的渲染,可以提高性能。可以使用 GPU 加速的方法对数据进行处理,如屏幕空间反射(Screen Space Reflection)、环境光遮蔽(Ambient Occlusion)等。

渲染层级:使用渲染层级技术,可以避免过度渲染导致的性能问题。可以使用 Cesium.ImageryLayer、Cesium.Primitive、Cesium.Entity 等 API 控制渲染层级。

启用硬件加速:启用硬件加速可以提高 Cesium 的性能。可以在浏览器设置中启用硬件加速。

使用多级缓存:使用多级缓存可以避免重复加载和渲染相同的数据,提高性能。可以使用 Cesium.Cache、Cesium.Resource 等 API 实现多级缓存。

可见性剔除:使用可见性剔除技术,可以避免渲染不可见的数据,提高性能。可以使用 Cesium.CullingVolume、Cesium.IntersectionTests 等 API 实现可见性剔除。

数据压缩:对数据进行压缩,可以减少带宽占用和加载时间,提高性能。可以使用 GZip、Brotli 等数据压缩算法,或者使用 Cesium 自带的数据压缩方法。

基于GPU的渲染:使用基于 GPU 的渲染技术,可以提高渲染性能和用户体验。可以使用 Cesium 中的 Cesium.Renderer API 实现基于 GPU 的渲染。

启用硬件加速:启用硬件加速可以提高 Cesium 的性能。可以在浏览器设置中启用硬件加速。

使用多级缓存:使用多级缓存可以避免重复加载和渲染相同的数据,提高性能。可以使用 Cesium.Cache、Cesium.Resource 等 API 实现多级缓存。

可见性剔除:使用可见性剔除技术,可以避免渲染不可见的数据,提高性能。可以使用 Cesium.CullingVolume、Cesium.IntersectionTests 等 API 实现可见性剔除。

基于GPU的渲染:使用基于 GPU 的渲染技术,可以提高渲染性能和用户体验。可以使用 Cesium 中的 Cesium.Renderer API 实现基于 GPU 的渲染。

硬件加速的线框模式:使用硬件加速的线框模式,可以提高性能和用户体验。可以使用 Cesium.Primitive 中的线框模式实现硬件加速。

GPU Instancing:使用 GPU Instancing 可以提高性能。可以使用 Cesium.GeometryInstance 和 Cesium.Primitive 中的 GPU Instancing 实现硬件加速。

预处理数据:对数据进行预处理,如优化模型、精简纹理、删除无用信息等,可以减小数据文件的大小,从而提高加载性能。可以使用 Cesium 的预处理工具或其他第三方工具进行预处理。

优化场景管理:对场景进行优化,如分层、剖面、数据过滤等,可以减小数据加载量和渲染时间,提高性能。可以使用 Cesium 提供的场景管理工具或其他第三方工具进行优化。

使用数据分段:将数据分成多个段,分别加载和渲染,可以提高加载和渲染的性能。可以使用 Cesium 提供的数据分段功能或其他第三方工具进行数据分段。

减小渲染负荷:减小渲染负荷可以提高渲染性能,如减小场景中的对象数、减小纹理尺寸、使用更简单的材质等。可以使用 Cesium 提供的性能分析工具或其他第三方工具分析渲染性能,并进行相应的优化。

使用 WebAssembly 技术:将计算任务交给 WebAssembly,可以提高计算性能,从而提高加载和渲染性能。可以使用 Cesium 提供的 WebAssembly 功能或其他第三方工具进行 WebAssembly 开发。等

本文链接地址:https://www.jiuchutong.com/zhishi/297800.html 转载请保留说明!

上一篇:深度学习可视化工具visdom使用(可视化思考)

下一篇:vue-plugin-hiprint vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用

  • 电脑下载钉钉后无法打开(电脑下载钉钉后打不开)

    电脑下载钉钉后无法打开(电脑下载钉钉后打不开)

  • ios无法下载app请重试(iphone提示无法下载应用)

    ios无法下载app请重试(iphone提示无法下载应用)

  • 微信未打开的文件过期了怎么办(微信未打开的文件过期了怎么恢复正常)

    微信未打开的文件过期了怎么办(微信未打开的文件过期了怎么恢复正常)

  • 微信读书每日一答点不开(微信读书每日一答必过方法)

    微信读书每日一答点不开(微信读书每日一答必过方法)

  • 华为mate30proOTG在哪

    华为mate30proOTG在哪

  • 怎么设置电脑桌面密码(怎么设置电脑桌面动态壁纸)

    怎么设置电脑桌面密码(怎么设置电脑桌面动态壁纸)

  • 爱奇艺金币有啥用(爱奇艺金币有啥用处)

    爱奇艺金币有啥用(爱奇艺金币有啥用处)

  • win10任务栏看不到运行图标(win10任务栏看不见了)

    win10任务栏看不到运行图标(win10任务栏看不见了)

  • iphonex收不到验证短信(iphonex收不到验证码短信)

    iphonex收不到验证短信(iphonex收不到验证码短信)

  • 小爱触屏音箱怎么打电话(小爱触屏音箱怎么设置密码锁)

    小爱触屏音箱怎么打电话(小爱触屏音箱怎么设置密码锁)

  • 属于微机网络所特有的设备是(微机进行联网,这个网络属于)

    属于微机网络所特有的设备是(微机进行联网,这个网络属于)

  • 电脑微信截图无法退出(电脑微信截图无法完成)

    电脑微信截图无法退出(电脑微信截图无法完成)

  • 骁龙653相当于麒麟多少(骁龙653是什么水平)

    骁龙653相当于麒麟多少(骁龙653是什么水平)

  • 小米mix alpha开售时间(小米mix alpha价格真的是19999吗?)

    小米mix alpha开售时间(小米mix alpha价格真的是19999吗?)

  • 内存插槽怎么清理(内存槽怎么清灰)

    内存插槽怎么清理(内存槽怎么清灰)

  • 华为nova6怎么下载QQ(华为nova6怎么下载谷歌)

    华为nova6怎么下载QQ(华为nova6怎么下载谷歌)

  • 限速1mbps等于多少kb(限速1mbps是什么概念)

    限速1mbps等于多少kb(限速1mbps是什么概念)

  • 微信昵称怎么查找用户(黑科技查询微信昵称怎么查)

    微信昵称怎么查找用户(黑科技查询微信昵称怎么查)

  • 微信发超过5分钟视频(超过五分钟微信怎么发给好友)

    微信发超过5分钟视频(超过五分钟微信怎么发给好友)

  • 苹果手机屏幕镜像一直显示正在查找(苹果手机屏幕镜像怎么连不上)

    苹果手机屏幕镜像一直显示正在查找(苹果手机屏幕镜像怎么连不上)

  • 一淘和淘宝是什么区别(一淘app和淘宝的区别)

    一淘和淘宝是什么区别(一淘app和淘宝的区别)

  • mate10如何升级9.1(mate10如何升级鸿蒙2.0)

    mate10如何升级9.1(mate10如何升级鸿蒙2.0)

  • vivo手机相册最近删除怎么关闭(vivo手机相册最近删除在哪里找)

    vivo手机相册最近删除怎么关闭(vivo手机相册最近删除在哪里找)

  • 如何正确使用好笔记本电池(如何正确使用好薪酬调查结果)

    如何正确使用好笔记本电池(如何正确使用好薪酬调查结果)

  • 2021年Windows下安装GPU版本的Tensorflow和Pytorch(windows2022下载)

    2021年Windows下安装GPU版本的Tensorflow和Pytorch(windows2022下载)

  • 【web前端基础之HTML】——HTML基本知识(web前端基础是什么)

    【web前端基础之HTML】——HTML基本知识(web前端基础是什么)

  • 美国人容易用错的英语短语(上)(美国人用什么英语词典)

    美国人容易用错的英语短语(上)(美国人用什么英语词典)

  • 增值税建筑服务税率变化时间
  • 股权转让需要缴纳企业所得税吗
  • 纳税信用等级是专管员评的吗
  • 个人所得税如何退税操作流程
  • 小规模纳税人哪些发票可以抵税
  • 自然人扣缴是什么意思
  • 国税地税合并后叫什么名称
  • 建筑企业施工管理人员
  • 去年的进项发票今年还能抵扣吗
  • 行政单位工资支出标准
  • 产权转让与股权转让
  • 营改增医院增值税
  • 日常生活中各种仪式
  • 采购入库损耗如何计算
  • 融资贷款保险费计算公式
  • 国家电网的发票如何申请邮寄
  • 公司员工体检计入什么科目
  • 主营业务收入是营业收入吗
  • 代扣代缴个人所得税税率表
  • 原材料明细账目
  • 已抵扣进项税额转出滞纳金
  • 工业企业预付材料款时一般应借记什么账户
  • 进出口免抵退税操作
  • 企业所得税汇算表
  • 收到服务费专票怎么做账
  • 收到一张餐饮费发票怎么入账
  • 公司抵押贷款的担保人
  • 如何在电子税务局添加开票人
  • 重装系统j
  • 司机公里补贴进什么科目
  • win10鼠标速度默认是多少
  • 未到期的应收票据向银行贴现什么时候计入短期贷款
  • php中strrev
  • g++.exe error
  • 鼠标按键多有用吗
  • 大堡礁的现状
  • php 生成随机字符串
  • framework7教程
  • 银行贷款利息已划转支付
  • 购买了金税盘以后怎么使用
  • reactvate
  • audit result
  • bat 进入当前文件夹
  • 对企业来说什么是工匠精神
  • 暂估入库成本需要冲销吗
  • 城市维护建设税,教育费附加,地方教育费附加
  • 销货方怎么开红字发票
  • 开了的发票应该如何在丁字帐里记录?
  • 委托加工物资的消费税计入成本吗
  • 库存现金银行存款用什么凭证
  • 土地作为无形资产入账依据
  • 企业的借款利息费用,扣除标准是?
  • 基金赎回可以赎回部分吗
  • 增值税专用发票和普通发票的区别
  • 为什么实收资本不属于企业资产
  • 跨年度冲红字发票怎么冲
  • 实缴资本和注册资本的比例
  • 工程公司存货包括哪些科目
  • 跨年冲红发票账务处理需要调整申报表吗
  • 免缴教育费附加什么意思
  • 服务企业的建账方案
  • sqlserver索引语句
  • sql server数据库中的null(空值)
  • winxp cmd
  • mysql动态sql语句赋值
  • linux mv命令详解
  • 电脑windowxp系统重装
  • centos7图形安装
  • 电脑开机后出现win7画面后一直黑屏
  • win7 设置
  • linuxzen
  • linux网络聚合
  • 原生js添加css样式
  • perl localtime函数
  • 教你三招让电脑打字
  • vue源码是用什么写的
  • mybatis框架执行流程
  • node .js
  • js鼠标滚轮缩放
  • 省级税务机关是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设