cocos 3d使用骨骼动画合批功能问题

一直提示TypeError: Cannot read property ‘update’ of null。该怎么处理。

1.1 有个小问题,第一次创建这个组件时会报错,试着填好数据后刷新编辑器看下是否还有问题~

填好数据了再刷新或者重启编辑器也不行。还是会报错:

看起来是数据有问题, 发个工程我看下吧

SkeletonBatchDC.zip (1.2 MB)

哦知道了,这个 batched skinning model 组件暂时不支持多个 submodel 的 mesh,但你这个模型导出的数据优化不太好,在 import 时被自动拆成了两部分,可以尝试用 mesh optimizer 优化一下再导入,这个工具在 1.1.1 会内置到编辑器中

好的,感谢!!!

另外发现了一些用法问题,skinning root 应该指向 skeletal animation 组件所在节点,同时 batched skinning model 组件 应该放在 skinning root 下,而不是直接放在这个节点本身上

本来是指向Skeletal animation组件所在节点。因为一直不行就开始各种尝试了。- -

模型是fbx格式,mesh optimizer不支持fbx格式的转换。
我用unity的插件将fbx格式转到gltf,然后用mesh optimizer转换一下导入creator看不到模型了。

你刚说的多个submodel是怎么看出来的?问题初始贴图那个确实是多个子模型,后面我给你的工程里面的模型应该是只有一个模型的。

我们显示是再做个测试的Demo想看看creator3d的性能。

目前一个场景里面光角色就有70个左右,我刚才给你的模型那种角色。没用任何合批,dc有400多。

目前我直接用了Material里面的USE INSTANCING功能。能把dc降到100左右。

那么如果我用了骨骼动画的合批功能是不是能降更多的dc?

因为需要保证模型在实时计算模式下能渲染正确,模型资源导入时有根据骨骼信息自动拆分 submodel 的流程,所以对数据优化不好的模型这个步骤就会拆出很多 submodel 来(每个对应一个 dc),所以即使模型文件里本身只有一个也可能被拆成多个;

为了解决这个问题,mesh optimizer 在下个版本会接入编辑器,在此之前就只能先手动转一下了……

一个需要注意的是,mesh optimizer 默认会开启 quantization,这个引擎现在还没支持,需要在转换时关掉这个选项,解决了这个问题,结合 instancing 直接去画 dc 也应该会好很多了;

另外 batched skinning model 组件主要是为了把共用同一骨骼的不同 skinning model 合并,这个肯定也是大幅降低 dc 的工具(尤其对于换装等需求),但 setup 会比较复杂,目前的设计也不是以大一统地去适用所有情况为目标做的(因为本质上相当于是把离线的工作放到运行时做了),所以可能需要降低一些期待……

多 submodel 就直接导致场景崩掉的问题在 这个 commit 修复了,急用可以参考。

嗯,感谢解答!