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]相关推荐

  1. bim 模型web页面展示_HTML5/WebGL技术BIM模型轻量化Web浏览解决方案

    原标题:HTML5/WebGL技术BIM模型轻量化Web浏览解决方案 互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大 ...

  2. BIM研究-基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案

    内容来源:http://developer.51cto.com/art/201601/504553.htm 根据运维系统的特点,运维人员可能并不熟悉建筑建模软件的使用,同时让运维人员使用建模软件来做运 ...

  3. bim 模型web页面展示_基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案

    互联网技术的兴起极大得改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大家感受最深刻的可能是游戏.电商.O2O等和我们生活息息相关的行业,但这 ...

  4. BIMFACE工程师现身说法,带你了解BIM模型轻量化技术细节

    伴随着互联网的发展,越来越多的BIM用户希望在Web端直接浏览三维模型.传统的BIM应用程序都基于桌面客户端,且需要较高的计算机配置:高频CPU.大内存.独立显卡.在从桌面端走向Web端.移动端的过程 ...

  5. BIM模型轻量化的方法总结

    目录 1 .BIM轻量化方法概述 2.BIM轻量化内容 2.1 构件信息提取 2.2 BIM模型合并 2.3 BIM模型分级

  6. BIM模型轻量化-SSAO效果-自然光漫反射阴影

    hello,我又来做知识的搬运工了.今天的主题是,如何让模型看起来呈现自然光的漫反射出现的阴影轮廓呢? 首先,推出threejs官方的一个后处理通道效果,先看demo,在轮廓的边缘出现阴影.示例: t ...

  7. bim webgl 模型 轻量化_数字化交付模型轻量化技术研究

    研究背景 随着BIM应用的越来越深入,无论是在民建领域还是在基建领域,BIM模型越来越精细.越来越大已经成为一种现实与趋势,而建筑业全面推行数字化交付,模型轻量化技术与数据存储技术必将成为其中的关键. ...

  8. cad模型轻量化_BIM模型轻量化到底有啥用?三种解决方案按需挑选!

    假如你是一个建筑设计师,你将会接触Archicad,Bentley,Revit,su等: 假如你是一个结构设计师,你将会接触PKPM,Tekla,YJK,Revit等: 假如你是一个机电设计师,你将会 ...

  9. 葛兰岱尔3D/BIM/GIS轻量化引擎直接支持PTC Creo和Siemens Nx软件

    作为国内数字孪生GIS/3D/BIM轻量化融合引擎领导厂商,葛兰岱尔3D轻量化渲染引擎持续进化,为制造业数字孪生3D应用开发提供底层技术支撑.近期,在最新的引擎版本中完成了如下的功能升级:完成了直接支 ...

最新文章

  1. md5和SHA校验码
  2. SAP License:客户统驭科目某天余额取数逻辑
  3. python 将多张大小不同的图依次放入较大的黑色背景_用户消费行为分析(Python)...
  4. mysql 不认的字符串_mysql 判断字符串是否为其他字符串的子集
  5. 求一个任意实数的算术平方根的算法设计_感恩!面试必刷100道算法题
  6. A* 寻路算法[转载]
  7. LEGION: Visually compare modeling techniques for regression
  8. 开源项目--阿里巴巴腾讯Google
  9. 代码可读性为什么重要啊....人家读不出来不是更安全吗?
  10. 计算机个性化的优点,个性化推荐的最大的优点
  11. Python绘制折线图、散点图
  12. 服务器dns显示fec,服务器dns地址fec0
  13. 什么是Ground-truth,Ground-truth什么意思
  14. 从数组到类簇的学习总结
  15. 国内技术创新型公司的一个问题
  16. 农产品电子商务行业研究及十四五规划分析报告
  17. 计算机耗材发放管理,医用耗材条码管理,让耗材管理更轻松
  18. Vue2和Vue3如何在组件中使用V-model
  19. android libev 编译,移植libev事件库到Android中
  20. 清华大学孙茂松:透过喧嚣,坐看云起,NLP 的迷思与感悟

热门文章

  1. 使用typedef语句定义函数类型和函数指针
  2. 超链接有哪几种 制作表格时WPS怎么在表格中插入超链接
  3. dedecms如何为CKEditor编辑添加行间距按钮
  4. Spring中自动注入的两种方式
  5. javascript从入门到跑路-----小文的js学习笔记目录
  6. Xshell连接矩池云进行BERT-BiLSTM-CRF模型训练
  7. 计算机网络教室后黑板报,网络安全黑板报的内容
  8. 前端怎么加粗字体_原来CAD的线条还可以这样加粗!还能修改初始单位!太实用了...
  9. 【python】快速将pip永久更新为清华源
  10. 半导体后道测试设备有哪些,具体作用是什么?