【性能优化黑科技·认知篇】你的三维场景为什么卡?先搞懂这几个指标!

by STANCH

"这个场景好卡!鼠标拖了它不动啊!"

这是很多三维开发人员会收到的真实反馈,就比如作者本人,在参与的智慧场馆项目中,就接到了这样的三维场景需求:在一个可容纳数万人员的奥体场馆中,需要用人员模型实时渲染其分布,并实现整个系统的流畅交互。

什么是流畅交互?

本文将从三维场景性能指标入手,依托 Mapmost SDK for WebGL 积累的实战经验,为大家详细拆解常用的性能指标盘点行之有效的监测手段分享实用优化策略

Mapmost SDK for WebGL体育馆人流仿真

一、性能监测的指标

#帧率(FPS)

帧率表示的是每秒钟显示的图像帧数量,如一个动画或视频的帧率为60 FPS,那么它每秒钟会播放60帧图像。

在三维场景中,帧率小于30FPS时交互明显卡顿,3044FPS时为流畅,4559FPS为高度流畅,60FPS以上为极致流畅。

#内存占用

当计算机运行时,应用程序以及正在使用的数据会被加载到内存中,这样处理器可以快速访问这些数据。如果内存不足,计算机可能会在运行程序时变得迟缓,出现"卡顿"现象,这是因为系统不得不频繁地在内存与硬盘之间进行数据交换。

#CPU/GPU占用率

CPU和GPU占用率是衡量硬件资源使用效率的关键指标,直接反映了三维场景对系统资源的消耗情况。

通常情况下,当我们在运行游戏或者高负荷应用时,显卡的占用率可能会达到70%至90%,而CPU的占用率在同样场景下常常维持在50%至80%之间。

在绝大多数情况下,低于30%的占用率表明硬件未被充分利用,而高于90%则可能导致系统卡顿或崩溃,因此,合理控制占用率显得尤为重要。

#绘制调用(DrawCall)

绘制调用是渲染管线 中的一个重要概念,指的是CPU向GPU发送的一个绘制命令,告诉GPU:"请根据我提供的数据,画一个物体(或一部分物体)。但是DrawCall越多,CPU和GPU之间的通信越频繁,性能就会下降。在实现体育馆人流时,如果不加优化,加载30000人员模型意味着30000次DrawCall的调用,场景卡顿的原因也来源于此。

二、性能监测的方式

#浏览器开发者工具Chrome Dev Tools

在谷歌浏览器中按F12打开开发者工具 切换到 Performance 下可以监测浏览器页面各项性能指标,在这里能看到白屏时间、FPS、资源加载时间线、内存变化曲线等信息。点击录制,开发者工具会在网页运行时捕获性能指标。

白屏时间,图中约为150ms

谷歌浏览器Performance面板

打开开发者工具后,使用快捷键Ctrl+Shift+P ,在弹出的对话框中输入fps,选择"Show frames per second(FPS) meter",浏览器左上角就会实时显示帧率曲线。**注意:**开发者工具不能关闭。

显示实时帧率

#JS性能监测工具stats.js

这款工具是 Three.js 作者开发的,可以通过CDN和NPM的方式引入,用于实时监测Web应用程序的性能指标,帮助开发者快速了解页面渲染、CPU占用率、内存使用等关键数据。

分别表示帧率、渲染一帧所需的毫秒数、占用的内存

三、性能优化的方式

性能优化是平衡视觉效果与运行效率的关键。无论是海量数据渲染、动态交互还是多端适配,均需通过系统性策略实现流畅体验,下面简单介绍几种性能优化的方式,在后面几篇文章会给大家详细讲。

  • 细节层次(LOD):通过不同层级使用不同的细节模型来减少渲染时的内容,从而降低性能开销。

Mapmost SDK for WebGL加载具有LOD的3DTiles

  • 合并几何体:将多个几何体合并为一个几何体可以减少绘制调用(DrawCall)次数。如,Mapmost SDK for WebGL通过合并几何体和纹理实现千万级构件高性能加载。

Mapmost SDK for WebGL预制构件加载

  • **纹理压缩与管理:**通过压缩算法压缩纹理减少纹理内存占用和带宽消耗,提高渲染效率,如,Mapmost SDK for WebGL支持KTX2纹理格式的模型加载,实现倾斜的高性能加载。
  • **利用实例化渲染:**通过单次绘制调用(Draw Call)在GPU上批量渲染多个相同的对象,减少了CPU与GPU之间的通信开销,显著提高渲染性能。
  • **控制渲染频率:**对于一些静态或变化缓慢的内容,可以适当降低渲染频率以节省资源。

在三维场景的开发中,性能是不可忽视的重要指标。本文介绍了关键的性能指标,如帧率、内存占用、及CPU/GPU利用率等。通过了解这些指标,开发者能够识别潜在的性能瓶颈,从而进行有效的优化。通过合理的性能监测和优化手段 ,结合Mapmost SDK for WebGL产品的成功案例 ,我们可以实现流畅的三维场景交互体验

持续关注性能,不仅是技术发展的必然要求,更是提升用户满意度的关键所在。您可以**此处跳转官网体验**Mapmost SDK for WebGL产品!

关注 Mapmost,持续更新 GIS、三维美术、计算机技术干货

Mapmost 是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

更多应用场景,点击此处前往Mapmost官网体验!

相关推荐
向哆哆3 小时前
Hibernate 性能优化:告别慢查询,提升数据库访问性能
java·数据库·性能优化·hibernate
python算法(魔法师版)18 小时前
数据库故障排查指南:从连接问题和性能优化
服务器·网络·数据库·性能优化
程序员的世界你不懂19 小时前
tomcat6性能优化
前端·性能优化·firefox
破烂公司一级特派员20 小时前
前端开发实战:用React Hooks优化你的组件性能
性能优化·实战·react·前端开发·hooks
GISer_Jing20 小时前
前端性能优化全攻略:从基础体验到首屏加载的深度实践
前端·javascript·性能优化
python算法(魔法师版)1 天前
JavaScript性能优化实战,从理论到落地的全面指南
开发语言·性能优化·前端框架·代理模式
前端小巷子1 天前
CSS渲染性能优化
前端·css·面试·性能优化
GISer_Jing1 天前
前端工程化和性能优化问题详解
前端·性能优化
goTsHgo1 天前
ClickHouse多表join的性能优化:原理与源码详解
clickhouse·性能优化
光电大美美-见合八方中国芯2 天前
【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌
网络·数据库·人工智能·算法·平面·性能优化