Unity Bone weights do not match bones.

记录一下这个问题的原因及解决办法:

问题环境:

我在进行两个带蒙皮的网格(SkinnedMesh)的模型合并的时候,合并了两个模型的骨骼,重新计算了合并后模型的骨骼数组Bones,并重新计算了网格的骨骼权重(sharedMesh.boneWeights),这个时候合并出来的模型在Unity里面会持续报错文章标题的错误,而且合并出来的模型只有合并前的其中一个模型的网格被显示了出来

问题:

仅更新了骨骼数组和骨骼权重(骨骼增多,骨骼下标也发生了变化),但是没有更新BindPoses,这个是驱动骨骼最初绑定位置的(也就是静态下网格被骨骼影响位置),这个数组没有更新,导致首先数组数量和骨骼数量对不上,少了很多,其次它在找骨骼的时候,没有找到正确的骨骼

解决:

和合并骨骼数组的方法一样,查原来BindPoses数组里面每个值对应的是哪个骨骼,然后这个骨骼在新的骨骼数组里面的下标是什么,然后把在新的BindPosese数组的这个下标位置更新成原来的bindPoses矩阵即可,公式化就是:

newBindPoses[newBoneIndex] = originBindPoses[oldBoneIndex]

newBindPoses=new Matrix4x4[newBones.Length]

猜你喜欢

转载自blog.csdn.net/qq_37421018/article/details/126504384