不算是BUG,
你 Demo 的自定义 Shader 中,有一个 Pass 用于剔除正面。当模型出现负数缩放时,会改变三角形的顶点顺序,从而影响正反面的判断。引擎能根据这种变化自动调整剔除的正反面。但是,对于 SkinnedMesh(蒙皮网格)来说,它的变换是由骨骼的 transform 决定的,而这部分计算是在 Shader 中完成的。如果骨骼使用了负数缩放,引擎就无法自动判断并调整剔除方向,可能导致渲染错误。
默认材质通常是剔除背面的(Cull Back),所以一般不会遇到这种问题。但如果使用了剔除正面的设置(Cull Front),并且骨骼变换中含有负数缩放,就有可能出现渲染错误。
如果修改出问题的某一帧的某个角度,渲染效果可以恢复正常,但会导致动作变形。这是因为动画数据修改后影响了骨骼的 transform,从而影响了三角形的渲染顺序。
你可以尝试一下,当你对骨骼使用负数缩放(例如 ScaleX 为负)时,同时对 SkinnedMesh 节点的 ScaleX 一起做相应的调整,保持两者的整体变换一致,以避免剔除方向异常的问题。