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

问题

前两天有朋友说使用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
在这里插入图片描述

话说Blender自带的Rigify真是不错,不仅方便还具有很强的扩展性。其中扩展性的来源是其模块化的设计。下面通过Shift + A新建的其实都是由各个模块组合成的一些常用预设
在这里插入图片描述

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

在这里插入图片描述

BasicHuman Meta-Rig模块分解

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

在这里插入图片描述

  • 头部和颈部是由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定义成一个模块呢,因为有时候一个脊椎上可以上多个头啊。

解决办法

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

在这里插入图片描述

解决步骤

先选择spines.basic_spine的顶部,然后Shift + S将游标定位到它的顶部
在这里插入图片描述
然后再选中spines.super_head的底部,然后再Shift + S将其底部定位到游标处,这样,二者就到相同的位置了

在这里插入图片描述
然后在姿态模式下确认一下spines.super_headConnect chain选项是否勾选了(一般默认就是勾选的)

在这里插入图片描述
经过上面的修复,就又可以生成最终绑定了

在这里插入图片描述

小结

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

请教 Bonecp 连接池经常报 [com.jolbox.bonecp.ConnectionHandle(229)] [ERROR] Failed to acquire connection. Sleeping for 7000ms. Attempts left: 5 java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:256) at com.jolbox.bonecp.ConnectionHandle.obtainInternalConnection(ConnectionHandle.java:211) at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:170) at com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:101) at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:82) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) [com.jolbox.bonecp.ConnectionHandle(215)] [INFO ] Successfully re-established connection to DB
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页