动作播放异常:脸部表情与身体动作播放不同步

因为ccc论坛不支持视频以及demo超过4M(fbx就5M多了),所以直接贴出飞书文档吧(可以直接看这个)
https://vcnsffkg2drx.feishu.cn/wiki/P1HUw9K8GiXvAZkyBZjc09FBnKb?from=from_copylink

动作帧
image

引擎版本:3.8.2 3.8.4都有类似问题

说明:

角色的表情是用的blend shape和角色身体的动作是一起导出的,我K完帧之后,单独播LOSE动作,是没有脸部表情的,但是如果播默认的完整动作(从第0帧到653最后一帧),播到LOSE时,是有脸部表情的。在IDLE动作中,在第68帧会开始闭眼,71帧会闭眼完毕,说明脸部表情单独K帧也是可以正常播的。将这个带动作的fbx分别放到了unity和layaair引擎中,播放lose动作都能正常触发脸部表情,应该是cocos的引擎bug了。

结论:

脸部表情单独K帧之后,播放这个动作,脸部表情依然是从第0帧开始播的,并不会随K的动作帧同步进行变动。

期望:

脸部表情的帧能随动作一起同步,如果有代码能手动同步也是可以的

顶一下 :pray: :pray:

image 开了试试

试了一下,不得行

咨询了动作,他说他是通过在动作中将表情的权重K进去实现的表情和动作一起播放的。

我在update里尺寸打印脸部表情的权重,测试发现从第0帧开始播,播到LOSE时权重的数值是有值的,但如果只播放LOSE动作,打印出来的权重全是0。所以感觉是表情动作的播放帧跟动作的播放帧不同步。

断点了一下发现新K的LOSE动作传入的time是新的time的帧时间,实际的帧是:196+42 = 238 但实际却是从42帧里去读取curve的数据。这个时间应该需要加上这个clip的起始时间。下附截图


提了个issue 包含手动解决方案