Rigify:关于Rigify生成最终绑定时失败的原因及解决办法

文章目录

      • 问题
      • Rigify的模块化实现
        • BasicHuman Meta-Rig模块分解
      • 解决办法
      • 小结

问题

前两天有朋友说使用Rigify时,当移动了某些骨骼后,再生成最终绑定时会报如下错误

RIGIFY ERROR: Bone 'spine.004': Cannot connect chain - bone position is disjoint.Incorrect armature for type 'chain_rigs'

错误信息已经指出的大致问题所在,下面老王结合BasicHuman Meta-Rig(其它类型原理相近)进一步解释一下原因和解决办法

Rigify的模块化实现

下面这个图就是完全没有移动过的BasicHuman Meta-Rig
Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第1张图片

话说Blender自带的Rigify真是不错,不仅方便还具有很强的扩展性。其中扩展性的来源是其模块化的设计。下面通过Shift + A新建的其实都是由各个模块组合成的一些常用预设
Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第2张图片

在骨骼的编辑模式下,我们可以看到Rigify的模块库

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第3张图片

BasicHuman Meta-Rig模块分解

下面老王先根据模块把BasicHuman Meta-Rig拆解一下(有点像吃剩的炸鸡)

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第4张图片

  • 头部和颈部是由spines.super_head模块构成
  • 脊椎部由spines.basic_spine模块构成
  • 红色线框部分都是分别由basic.super_copy模块构成
  • 胳膊和腿都是由limbs.super_limb模块构成,但是前者为骨架类型后者为Leg

一般来说模块和模块之间相对独立,我们删除不需要的模块,比如我们不需要胸部骨骼,完全可以将其删除;也可以添加想要的模块,比如我们可以添加多个limbs.super_limb构成一只螃蟹的绑定

但是也有特例,有些模块要求相互链接在一起,比如spines.super_head一定要连接到spines.basic_spine上,细想想这个设计也是符合逻辑的

那么为什么不把spines.super_headspines.basic_spine定义成一个模块呢,因为有时候一个脊椎上可以上多个头啊。

解决办法

于是,那位朋友生成最终绑定时出错,多半是遇到了下面的情况

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第5张图片

解决步骤

先选择spines.basic_spine的顶部,然后Shift + S将游标定位到它的顶部
Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第6张图片
然后再选中spines.super_head的底部,然后再Shift + S将其底部定位到游标处,这样,二者就到相同的位置了

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第7张图片
然后在姿态模式下确认一下spines.super_headConnect chain选项是否勾选了(一般默认就是勾选的)

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第8张图片
经过上面的修复,就又可以生成最终绑定了

Rigify:关于Rigify生成最终绑定时失败的原因及解决办法_第9张图片

小结

推荐大家看一下油管UP主 的《Rig Anything With Rigify》B站上有资源

你可能感兴趣的:(#,Blender笔记,Rigify,游戏开发,blender)