【疑难杂症2】骨骼旋转会变形问题

您所在的位置:网站首页 bip骨骼曲线 【疑难杂症2】骨骼旋转会变形问题

【疑难杂症2】骨骼旋转会变形问题

2023-08-01 03:41| 来源: 网络整理| 查看: 265

有时候,心血来潮,想自己搞点绑定,弄好之后却发现旋转骨骼的时候,会发生变形……

旋转bone001的时候,整条骨骼会出现变形

经过一番研究,原来这个问题还是挺简单的。

原因是这个旋转的骨骼的上级物体,有过缩放:

bone001的父级是虚拟体Dummy001Dummy001曾经进行过缩放的操作

我们断开bone001和Dummy001的父子关系,把Dummy的缩放改回初始值:

100就是初始值

然后再把bone001链接回去,旋转就不会再有问题了:

问题到这里就解决了!

太简单,以至于我也不相信

但文章还没有结束,接下来我会尝试去聊一下这个问题会发生的原因。想要一起探究的同学可以继续往下看。

为什么当一个物体发生了缩放变形之后,再添加子级物体,旋转子级物体的时候,子级物体会变形呢?我咨询了程序员同事,他说:“因为参考坐标发生了变化。

现在想象有两个骨骼:

他们的缩放比例都是1,是默认状态。这个时候,他们之间没有任何层级关系,它们形变所参考的坐标轴是世界坐标轴,比例都是1。

然后我们将bone001沿Z轴,利用缩放工具拉长1倍,就是变成了2:

然后我们再把bone002的父子链接关系给到bone001,把bone001变成bone002的父级骨骼:

这时候,bone002的形变所参考的坐标轴,从世界坐标轴变成了bone001的坐标轴。

还记得我们前面对bone001的操作吗,现在bone001的Z轴和X轴的缩放比例是2 : 1。对于bone002来说,它现在处于bone001的坐标空间中,在朝向Z轴的时候,它的缩放就是2,当旋转到X轴的时候,他的缩放就是1。所以当我们旋转bone002的时候,就会发生这样的变化:

因为bone002是以我们创建出来的时候的长度,链接过去给bone001的,所以当bone002朝向Z轴时候,原长度在参考的坐标系里面的缩放比例就是2。当旋转到X轴的时候,bone002就会变成原长的一半,也就是参考坐标系里面的缩放比例1。

所以如果我们在为两个物体创建父子关系之前,把父级物体XYZ三个轴都做过形变,当子级物体链接过去之后,所发生的形变就会变得复杂了。”

听完程序大哥的话,我似懂非懂……

不过我依稀还记得,以前有位前辈跟我说过,创建骨骼的时候,没什么事就别乱进行缩放,这样保平安。

不管懂没懂,前辈说的话总没错的!

以上~就是个人一些经验,如有更多的想法或错误的地方,欢迎交流和指出!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3