从Unity转到cocos,关于3D物体dc的优化问题
我们有大量相同的模型,其顶点,面都相同,通过使用同一个材质但uv不同的方式,用于区别物体。在unity中这种情况可以默认为同一个模型进行优化,但是在Cocos无法被合并优化,导致dc很高,有什么好的办法可以大幅度降低dc? 是通过脚本来传递uv的方式?还是统一模型包括uv, 但是使用不同的贴图,然后让贴图在动态合并? 请教一下大家,谢谢!!
从Unity转到cocos,关于3D物体dc的优化问题
我们有大量相同的模型,其顶点,面都相同,通过使用同一个材质但uv不同的方式,用于区别物体。在unity中这种情况可以默认为同一个模型进行优化,但是在Cocos无法被合并优化,导致dc很高,有什么好的办法可以大幅度降低dc? 是通过脚本来传递uv的方式?还是统一模型包括uv, 但是使用不同的贴图,然后让贴图在动态合并? 请教一下大家,谢谢!!
把材质里的gup instance开启来 USE_INSTANCING MeshRenderer 组件参考 | Cocos Creator,3d骨骼动画可以烘焙骨骼动画贴图文档 骨骼贴图布局设置 | Cocos Creator
我们模型导出的时候只有uv不同,使用同一种材质,选了GPU-INSTANCE,但是DC还是没有合并,是否被判断为不同的模型呢,我看到文档说明“通过 Instancing 的合批适用于绘制大量顶点数据完全相同的动态模型” 顶点数据包括uv吗? 还是说我们要手工去生成mesh,再去修改uv?
如果你导出了多个模型,每次添加到cocos都会算作生成新的材质,那选择GPU-INSTANCE不一定有效,因为多次导入会生成多个材质id索引。要么在cocos里面重新绑定材质索引,要么在导出的时候把多个模型合在一个glb文件中,在导入cocos之后等在cocos里面生成索引,在从预制体中拖出来使用。
能理解为所有的模型其实是在一个大模型下,我们每次使用其中一部分submesh,所以还是算一个模型?
我们试了这种方法,还是无法合并,已经导出为一个glb文件,里面会有多个mesh,和一个大的prefab,
我们将prefab拉出来,可以看到有很多meshrenderer在里面,加上同一个材质球,选择了gpu-instance,但是dc还是没有因此减少?
查看了glb的配置,勾选了网格优化等等,也没有效果,是哪里有问题呢?
blender导出也没有看到有合并操作的选项?
请指导一下,谢谢!!