Three.js BIM模型轻量化 FPS渲染速率优化 多 实例渲染[Instance]+顶点合并[Merge]
BIM模型不经过处理,直接加载到Three.js 创建的场景中,很大可能会很使fps帧率下降,原因在于模型的个数太多,有的模型是多材质的话还需要在Three.js中绘制两次,这样会导致drawcall过载,虽然在开启视椎体剪裁的情况下,Three.js中已经进行了模型剔除的处理,但仍然很难解决drawcall过载的问题,可以F12 打开devtool看下cpu使用率。
如何解决这种情况呢,可以先看一下gpu渲染的流程(涉及到硬件),参考这篇文章:
https://zhuanlan.zhihu.com/p/58694744
对整个gpu的结构有了之后,那可以明确要做的优化,每一次drawcall尽可能多的顶点数量,充分利用GPU的渲染计算能力。还有一点就是多实例渲染,简而言之,就是各种顶点数据在一次drawcall提交之后,可以在GPU进行复用进行渲染,uniform可以像attribute一样传递(这样说也不是很准确,准确地说是每个实例可以具有不用的uniform变量)。
这两种方式都具有很好渲染速率优化的作用,那具体怎么用,主要是结合项目的情况,一般是两者一起用,那是先应用多实例渲染还是先应用顶点合并呢,主要是也是看项目的实际情况,比如对内存的要求,如果没有要求,两者的使用顺序使drawcall最少的情况,就是最佳的使用顺序,我对整个项目做完优化过后,drawcall相比之前降低70%左右。
那如何进行开发呢,这肯定是大家最关心的,Three.js 的官方案例做了很好的演示,链接:
https://threejs.org/examples/?q=instance#webgl_interactive_instances_gpu 那我们来看一下模型单个渲染,合并渲染,多实例渲染的情况:
单个渲染模型10000个,drawcall 10000,fps 4;
顶点合并渲染,drawcall 1, fps 40 ,可以看出帧率相比单个模型绘制有了明显的提高,但在做了顶点数据复用的BIM轻量化中,应用顶点合并需要认真考虑,可能会导致内存增加。
多实例渲染,drawcall 1,fps 56,帧率提高的更加明显。
看了对比以后,多实例渲染和顶点合并渲染可以明显降低drawcall,并且增加渲染fps,而且在模型数量足够多的情况下,多实例渲染的效果是优于顶点合并的效果的,但是具体使用组合方式需要根据实际情况确定。当然多实例渲染和顶点合并渲染只是BIM模型轻量化中的最实用的一部分。哈哈哈哈,就到这里了,有兴趣的同志加我的3D开发交流群交流哈。
Three.js BIM模型轻量化 FPS渲染速率优化 多 实例渲染[Instance]+顶点合并[Merge]相关推荐
- bim 模型web页面展示_HTML5/WebGL技术BIM模型轻量化Web浏览解决方案
原标题:HTML5/WebGL技术BIM模型轻量化Web浏览解决方案 互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大 ...
- BIM研究-基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案
内容来源:http://developer.51cto.com/art/201601/504553.htm 根据运维系统的特点,运维人员可能并不熟悉建筑建模软件的使用,同时让运维人员使用建模软件来做运 ...
- bim 模型web页面展示_基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案
互联网技术的兴起极大得改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大家感受最深刻的可能是游戏.电商.O2O等和我们生活息息相关的行业,但这 ...
- BIMFACE工程师现身说法,带你了解BIM模型轻量化技术细节
伴随着互联网的发展,越来越多的BIM用户希望在Web端直接浏览三维模型.传统的BIM应用程序都基于桌面客户端,且需要较高的计算机配置:高频CPU.大内存.独立显卡.在从桌面端走向Web端.移动端的过程 ...
- BIM模型轻量化的方法总结
目录 1 .BIM轻量化方法概述 2.BIM轻量化内容 2.1 构件信息提取 2.2 BIM模型合并 2.3 BIM模型分级
- BIM模型轻量化-SSAO效果-自然光漫反射阴影
hello,我又来做知识的搬运工了.今天的主题是,如何让模型看起来呈现自然光的漫反射出现的阴影轮廓呢? 首先,推出threejs官方的一个后处理通道效果,先看demo,在轮廓的边缘出现阴影.示例: t ...
- bim webgl 模型 轻量化_数字化交付模型轻量化技术研究
研究背景 随着BIM应用的越来越深入,无论是在民建领域还是在基建领域,BIM模型越来越精细.越来越大已经成为一种现实与趋势,而建筑业全面推行数字化交付,模型轻量化技术与数据存储技术必将成为其中的关键. ...
- cad模型轻量化_BIM模型轻量化到底有啥用?三种解决方案按需挑选!
假如你是一个建筑设计师,你将会接触Archicad,Bentley,Revit,su等: 假如你是一个结构设计师,你将会接触PKPM,Tekla,YJK,Revit等: 假如你是一个机电设计师,你将会 ...
- 葛兰岱尔3D/BIM/GIS轻量化引擎直接支持PTC Creo和Siemens Nx软件
作为国内数字孪生GIS/3D/BIM轻量化融合引擎领导厂商,葛兰岱尔3D轻量化渲染引擎持续进化,为制造业数字孪生3D应用开发提供底层技术支撑.近期,在最新的引擎版本中完成了如下的功能升级:完成了直接支 ...
最新文章
- md5和SHA校验码
- SAP License:客户统驭科目某天余额取数逻辑
- python 将多张大小不同的图依次放入较大的黑色背景_用户消费行为分析(Python)...
- mysql 不认的字符串_mysql 判断字符串是否为其他字符串的子集
- 求一个任意实数的算术平方根的算法设计_感恩!面试必刷100道算法题
- A* 寻路算法[转载]
- LEGION: Visually compare modeling techniques for regression
- 开源项目--阿里巴巴腾讯Google
- 代码可读性为什么重要啊....人家读不出来不是更安全吗?
- 计算机个性化的优点,个性化推荐的最大的优点
- Python绘制折线图、散点图
- 服务器dns显示fec,服务器dns地址fec0
- 什么是Ground-truth,Ground-truth什么意思
- 从数组到类簇的学习总结
- 国内技术创新型公司的一个问题
- 农产品电子商务行业研究及十四五规划分析报告
- 计算机耗材发放管理,医用耗材条码管理,让耗材管理更轻松
- Vue2和Vue3如何在组件中使用V-model
- android libev 编译,移植libev事件库到Android中
- 清华大学孙茂松:透过喧嚣,坐看云起,NLP 的迷思与感悟
热门文章
- 使用typedef语句定义函数类型和函数指针
- 超链接有哪几种 制作表格时WPS怎么在表格中插入超链接
- dedecms如何为CKEditor编辑添加行间距按钮
- Spring中自动注入的两种方式
- javascript从入门到跑路-----小文的js学习笔记目录
- Xshell连接矩池云进行BERT-BiLSTM-CRF模型训练
- 计算机网络教室后黑板报,网络安全黑板报的内容
- 前端怎么加粗字体_原来CAD的线条还可以这样加粗!还能修改初始单位!太实用了...
- 【python】快速将pip永久更新为清华源
- 半导体后道测试设备有哪些,具体作用是什么?