1. 概述编辑
1.1 适用场景
此文档为适配FVS的模型优化指南。
这套模型优化指南会在建模软件中的模型处理方式上区别于其他3D可视化工具。
模型优化大致分为模型处理和贴图处理2类。
1.2 注意事项
其中标题后有“*”的为建模软件中需要重点关注的地方。
建议先根据GLB模型使用问题排查了解模型有什么问题,然后再根据优化指南知道如何解决模型问题。
2. 导出Glb模型编辑
2.1 导出方法
FVS目前支持的模型格式为glb(gltf2.0),可以根据自己现有的模型进行格式转换或在软件中导出。
以下为市面上常用的模型格式转换glb的方法:
3. 性能优化-模型处理类编辑
3.1 合并独立网格对象(减少mesh/对象数)*
什么是mesh数:
mesh数是影响glb文件在产品中性能的主要因素。
mesh指glb文件中的独立网格,所以mesh数是glb中所有独立网格的数量,且一个mesh上只会有一种材质。
mesh数也可以简单理解为三维软件中的对象数,但不同点在于三维软件中的对象可以有多个材质。
注:Glb中一个mesh只会有一个材质,所以当三维软件中导出glb时,其中的对象会根据其材质进一步拆分,所以会出现mesh数比三维软件中的对象数多的情况。
如何查看mesh数:
使用Chrome或者Microsoft Edge来打开babylonjs模型检测网站或FVS模型检测网站,选择要查看的glb文件并上传,在右侧即可查看该文件的mesh数。
Mesh数建议:
一般mesh数建议控制在1000以下,不然容易造成预览卡顿,帧数低等情况。
操作方法:
若三维软件中对象数较多,可以通过合并那些不需要交互、没有实际业务使用需求的对象来减少对象数,从而导出后就能对应减少mesh数。
在blender中,合并的方式为:选中你想要合并的那些对象,按CTRL+J来进行合并。
附:
三维模型相关文档快速引导:Glb文件的mesh数和优化
Mesh数优化视频教程:预览帧数优化-mesh数优化
3.2 关联相同的对象 *
关联复制有什么效果:
可以起到共用一份物体数据,减少文件大小及预览帧数的作用。
这个优化方法适用于在场景中有很多重复的相同对象时去使用,例如多台机械设备、仓库货架、货物等。
根据建模完成情况,有2个阶段可以处理这类优化:1.模型制作过程中处理。2.模型已经做完后进行处理。
操作方法:
模型制作过程中处理:
在blender中,选中你想要复制的物体,按快捷键ALT+D进行关联复制。同时右侧“数据”窗口会有你关联复制之后的对象数量。
如下图:“3”为已经关联复制之后的数量。
模型已经做完后进行处理:
在blender中,如果现在所有的模型已经做完了,并且在做的过程中没有进行关联复制。可以对已经做好的对象进行处理,选中所有相同样子的对象,按快捷键CTRL+L来关联物体数据。
如下图所示,CTRL+L之后会跳出关联/传递数据的菜单,选择点击关联物体数据。同理,在进行关联物体数据之后,右侧“数据”菜单会有关联之后的对象数量,如下图的“20”。
注:过多的关联对象会使对象数量(mesh)变多。把不需要交互、没有业务使用需求的对象优先进行“合并”。其次把需要交互的、有业务使用需要的相同对象,进行关联复制/关联物体数据。
附:
Mesh数优化视频教程:预览帧数优化-关联优化
3.3 减少模型面数
如何查看模型面数:
在blender中,在视图叠加层中找到统计信息并打开,就可以看到此模型的面数总数。如下图所示:
面数建议:
一般glb文件面数建议控制在1000w以下,不然容易导致文件较大、加载慢等问题。
操作方法:
减少模型面数的方法大致分为3种:使用低模素材、手动重新拓扑、借助建模软件内的功能精简模型。
使用低模素材
在场景中,我们应该重点展示的是有业务使用需求的对象。其他配景模型或辅助模型都建议使用低模素材,例如雕塑、植物、装饰品、汽车、广告牌等。
手动重新拓扑
如果我们现有的模型精度非常的高,又或者是建模软件、建模逻辑、模型互通等不同原因导致模型面数很高,我们应当手动重新以简洁的建模方法去新建相似的模型进行替换。
如下图,为圆柱体模型优化前后的面数变化,原本的圆柱体面数在500多个面,重新做一个简洁的圆柱体做替换只有50多个面。
借助建模软件内的功能精简模型
可以借助建模软件内置的功能来进行模型简化。在blender中,使用修改器中的精简-塌陷/反细分/平面并修改其参数,从而对面数较高的模型进行优化精简并应用。
如下图,为使用精简修改器中的功能实现面数的优化。
注:精简完之后要”应用“。
附:
三维模型相关文档快速引导:Glb文件的面数和优化
文件大小优化视频教程:文件大小优化-面数压缩
3.4 Draco压缩优化*
在blender中,导出时,应当勾选压缩选项(使用默认压缩设置即可)再进行导出。
使用Draco压缩可以在几乎不影响效果下,有效减小文件中网格数据占的大小(部分模型使用压缩会出现炸面的情况,可以先三角化再导出来解决该问题)
操作方法:
导出glb时,勾选”压缩“按钮,即为Draco压缩。
附:
三维模型相关文档快速引导:压缩glb文件(基于Node.js)
3.5 细节合理取舍
舍:
如果模型只是宏观展示时,因视觉距离远原因,其实没必要做出过多的模型细节,可以舍弃掉一些小的零部件或不重要的模型来减少对性能的影响,或使用简化的几何体来概括模型。
如下图,这么大的一个车间场景下,是看不清小物件的细节的。(如果需要镜头拉近了看,建议保留主要结构,删除螺丝等小零件。)
取:
在页面下钻到产线、单台设备的界面时,可以保留更多细节,因为视觉距离更近。
3.6 清除模型中孤立的数据
在建模软件中清理未使用的材质、网格、笔刷等模型残留物。
操作方法:
在blender界面的右上角显示模式中找到“孤立的数据”,点击清楚并点击确定,就会自动清理那些模型中没有使用的残留物。如下图:
4. 性能优化-贴图处理类编辑
4.1使用纹理贴图*
用贴图代替复杂的模型来表现模型细节。
操作方法:
如下图,看起来细节很多的模型,其实就是一张贴图贴附在简单的白模上。省去了去建那些门、窗等细节的时间,也减少了很多面数的增加。
注:需要建模师掌握UV贴图相关知识。