摘要
▶ 工业化模型在实际业务场景中,存在很多问题。
▶一是模型来源复杂:有的可能是客户直接提供,有的可能是客户的第三方厂家间接提供,甚至有的第三方厂家还要从国外供应商处间接获取,但凡涉及工业模型,一般图纸等信息的保密性要求较高。想让厂家改?分分钟告诉你改不了。想自己建模?图纸谢绝外传,谢谢。想深入交流沟通下模型结构?不好意思,没时间。
▶二是模型结构复杂:工业化模型一般涉及的零部件较多,各系统,各模块之间运行逻辑复杂,在轻量化模型时,有时无从下手,客户这也不让删,那也不让删。不行不行,我们这里要看原始结构,不行不行,这里的螺丝留着好看,不行不行,这个删了就不完整了~~~~~~~~~~
▶三是模型体量大:工业化模型一些复杂的设备类,三角面片数都大几百万,甚至上千万,模型放在Web端,不仅网络请求压力大,实时渲染也对电脑性能有较高的要求,但往往很多客户对电脑配置无意识,不断地施加压力给三维开发同学:“我不管,我就要流畅的在我电脑上看!”啧啧啧,无言以对。
好了,如果大家也有以上这些头疼的问题,那我们一起来探讨下关于复杂模型在webgl实时渲染的一些优化思路吧。
一、部分结构重建(★☆)
虽然重建部分不会很多,但也会从根源上减少一部分体量。对于一些内部顶点混乱的结构,建模人员可以重新构建顶点,重新布线,这样可以把冗余的顶点删掉。比如模型部分曲面过多时,可以考虑将部分曲面重建,内部的一些冗余顶点就可以删掉,减少顶点数量,也不会改变原有结构。
二、巧用Instance实例化(★★★★★)
Instance实例化是gltf中的一个重要规范,实例化可以分为两个阶段:
(1)建模实例化。将一些结构相同的mesh在建模软件复制时选择实例,如3dmax中的“复制成实例”或者blender中的“关联复制(Alt+D)”,如下图: