之前在B站看到了pierrick picaut大神的绑定教程,感觉十分透彻,但是视频很长有很多小伙伴看起来可能比较吃力,up在这里整理了一下图解供大家去学习。
权重绘制
绘制权重的时候我们需要知道几个快捷操作,首先就是在实体显示的模式下我们将视图着色模式改为平展,这样我们看着会舒服一些,然后我们在工具栏中打开选项,勾选自动规格化,这样能保证我们再画权重的过程中不会有抢权重额问题。
那么如何看我们的点权重是多少呢,我们可以打开定点选择,然后点击我们想要了解的点,然后打开条目栏,看到最底下的顶点权重就有了,还可以直接输入指数来改变权重分布。
再打开这个,这是辅助我们去进行权重绘制的,我们可以按住W然后选择一个面,按住L全选面,进行范围绘制,也可以选中面之后shift+h隐藏其他的面。
点击笔刷可以换我们的权重刷的模式
旋转的各项模式运用
欧拉旋转——以XYZ欧拉旋转为例:一般用于物体,Z是主要父级会带动XY的旋转,Y是次级父级,也就是说Y轴可以带动X轴的旋转。当我们将Y轴旋转90度那么我们的X轴就会跟Z轴重叠在一起形成万向节死锁。
所以,我们在使用欧拉旋转的时候一般是适用于只有两个轴向旋转的物体或者骨骼,并且一般将处于中间的(比如XYZ就像是Y)轴向锁定。
手动绑定方法
基础手动绑定方法
以一个基础小人为例:
首先在物体界面中我们先按下shift+c确保我们的游标在我们的世界坐标原点(游标所在地就是新建物体的轴心),然后按shift+a添加一根骨头,点击新建的骨头进入编辑界面,然后打开轴向显示和在前面显示(这样就不会让物体掩盖住骨骼了方便我们继续操作)
我们要留一个最原始的世界坐标的骨骼,而我们的世界坐标在Blender中z轴的朝向是向上的所以我们要将骨骼旋转,我们进入编辑模式,选择骨骼,此时我们可以看到我们的原始骨骼是y轴朝上,然后我们将它在x轴旋转90度,我们可以按R键然后再按x键然后小键盘直接输入90,然后不要动鼠标,他就会在x轴的方向旋转九十度,如果不是z轴向上而是向下我们就在按一个小键盘的减号,然后点击鼠标左键,这样我们就可以达到我们的目的了。现在这个骨骼的局部坐标就跟世界坐标保持一致了,这将会使我们动画师的工作变得容易。我们将其命名为ROOT(按F2可以对其进行重命名,或者我们在骨骼属性面板中对其进行修改)。
然后我们复制root bone(shift+d),按g将骨骼的根部移动到盆骨处,点击顶部放到腰的位置,然后点击顶部按e挤出新的骨骼,将新的骨骼移动到下一个位置,整体位置如图。
我们将骨骼前缀命名为DEF_是说明这些骨骼是形变骨骼(参与蒙皮权重的骨骼),并且注意骨骼的朝向,平行与世界xy面的都是Z轴朝上,比如手臂手指,垂直于世界xy面的都是Z轴朝前。如果我们的轴向出现了问题,我们可以选中骨骼,然后CTRL+R来旋转轴向到一个合适的位置,也可以直接从条目中直接改变扭转滚动(roll)的值。
我们接下来去制作腿部和手臂,我们首先把我们的DEF_胯部复制一份(shift+d)然后放到相应位置,再从DEF_颈部的根部关节e+x挤出一个骨骼,选择这个挤出的骨骼我们alt+p断开骨骼链接,然后将它放到应有的位置,注意,手臂的骨骼都是z轴朝上。
注意一点,在我们绑定手臂的时候,我们需要将DEF_肩膀_l和DEF_大臂_L断开骨骼链接,并且创建手指时我们的操作步骤是选中DEF_手掌_L然后shift+d复制一份出来,然后alt+p清空父级,选中小拇指关节加选手掌关节Ctrl+p建立父子级关系(保持偏移量),将我们的小拇指对其,按住e挤出其余的骨骼,并且依次命名。
这里补充一个小知识点,就是相连项和保持偏移量是什么意思,同样是创建父子级关系为什么会有两个模式,相连项是指子集的根部会连接在父级的顶部,也就是说你的骨骼两者分得很开但是选择了相连项就会紧密的连接起来,而保持偏移量可以保持子集的空间位置,但是又可以被父级操控,所以在做一些相连的骨骼比如说脊柱我们会建立相连项,而手掌跟手指关节这里我们就会选择用保持偏移量,这是与其他软件不同的一点,保持偏移量让我们省去了手指关节跟手掌关节中间的连接关节,更方便了我们去绑定和权重绘制。
在我们绑定完DEF(形变)骨骼后,我们新建一个层,这个时候我们去使用我们的Layer manager插件,然后全选我们的骨骼,所有操作如图:
在此时注意一点我们需要把我们的root骨骼单独放到一个图层中,如果上述操作你已经将root骨放入了DEF图层不要着急,我们选择root骨骼,然后继续上述操作,将一个空白图层
再补充一点,就是DEF骨才是形变骨,形变骨的含义就是它是参与骨骼蒙皮权重的,而其他的都不参与,当我们想让一个骨骼参与权重蒙皮时我们需要把这个形变打开:
因为ROOT并不是形变骨,所以我们将它的形变取消勾选(快捷键是shift+w)。
我们将所有的DEF骨选中,然后shift+d复制,单击右键,这样复制的骨骼就跟原本的骨骼没有任何位置上的变化了,然后新建一个TGT(目标)层将复制的骨骼导入到该层级中,然后把前缀DEF改为TGT,然后我们隐藏未使用图层,发现我们现在在用的就三个图层,一个是DEF一个是TGT一个是ROOT。
我们把所有的TGT层的骨骼全部取消形变勾选,代表了我们的目标骨骼也就是TGT骨不参与蒙皮,只是单纯地控制形变骨的变化,为了能够让TGT的骨骼可以一对一控制DEF骨,我们打开两个图层的显示,切换到姿态模式下,点击TGT骨按住shift加选DEF骨,然后进行约束,这里的快捷键是Ctrl+Shift+C打开添加约束菜单。
我们选用添加复制变换,然后反复操作,对每一个骨骼都添加好约束关系。
接下来我们就需要对我们的骨骼进行对称镜像,让右边的骨骼也产生,在编辑模式下,我们需要全选左边的骨骼,然后右键选择对称(注意!我们一定要把左边的骨骼全部都添加_L的后缀!不然会报错!)
接下来我们就需要让我们的DEF骨与角色进行绑定蒙皮了,第一步先进入到物体模式,然后我们先选中角色,在选中DEF骨骼,然后Ctrl+p我们选择附带自动权重,当然也可以选择附带空顶顶点组,当我们选择附带空顶点组时我们需要手动的添加权重信息。
在我们蒙皮权重之后我们现在要做的就是对其进行绑定,也就是说用其他的骨骼对TGT骨骼再次进行约束来达到精简控制的效果,用最少的骨骼来做最多的效果。
首先,我们在TGT_胯部的顶部(TGT_腰部的根部)按e挤出一段骨骼,我们将其命名为Ctrl_躯干,注意,这个骨骼要平行于世界坐标平面,然后我们选择躯干骨骼加选ROOT骨骼Ctrl+p保持偏移量。
然后,我们shift+d复制TGT_胯部,然后右键单击保持初始位置,然后alt+f反向,并将其命名为Ctrl_臀部,然后加选躯干骨骼Ctrl+p保持偏移量。
然后我们在躯干骨的根部挤出一根骨骼,将骨骼的顶端与胸部的顶端对齐 (将轴心点模式改为各自的原点这样可以保证骨骼的缩放都是从根部出发,然后我们选择颈部骨骼的根部将世界游标吸附到上面shift+s to selected,然后选中新建的骨骼顶部shift+s to cursor),然后加选躯干骨,Ctrl+p保持偏移量,并为其命名为Ctrl_上半身。
现在我们将TGT_腰部选中加选躯干骨ctrl+p保持偏移量,然后选择TGT_胯部加选Crtl_臀部shift+p保持偏移量。
然后我们在姿态模式下选择Ctrl_上半身加选TGT_腰部Ctrl+shift+c复制旋转,然后将骨骼约束的复制旋转中目标和拥有者层级改为局部空间。
然后同样的操作对TGT_胸部也做一个约束,并把影响缩小到适合要求的指数。
现在我们把之前TGT的腰部和胸部改为Ctrl_腰部和Ctrl_胸部,因为这两个骨骼也是我们的控制器;然后我们建立一个新的层,将其命名为躯干(torso)。并将ctrl的骨骼都放进去。
下一步我们开始做头部的控制器,我们主要是给头部加一个全局的一个效果,让它可以选择跟随身体的移动旋转缩放或者不跟随。首先我们先从胸部的顶端挤出一根骨骼平行于世界平面,我们将其命名为MCH_脖子_rot,然后复制这根骨骼缩小,将复制的骨骼命名为MCH_脖子_INT_rot(int的意思就是中间骨骼),接着选择这个跟骨骼加选我们的躯干骨保持偏移量,然后将脖子的骨骼加选int骨骼保持偏移量。
进入姿态模式,然后选择rot加选int骨骼,shift+ctrl+c添加一个复制位置/旋转/缩放约束。
然后我们选中int骨骼然后将其复制旋转的属性重命名。
然后选中rot加选Ctrl_胸部保持偏移量。
然后我们复制一根头骨放到上方,将其命名为头部驱动并且跟root骨骼保持偏移量
这个头部驱动骨骼就是为了继承控制头部其他控制骨骼的属性,比如说是neck_follow。我们在姿态模式下创建一个自定义属性。
然后我们右键单击数值并复制他的数据路径已添加对该值的访问。
然后选中约束骨骼MCH_脖子_INT_ROT在复制旋转的约束条件中的数值下右键我们添加新驱动器。
然后我们将驱动的类型改成平均值,然后将变量类型改为单个属性然后选择我们的骨骼集,然后将我们刚才复制的数据路径Ctrl+v复制到路径里面就完成了,我们就可以通过控制头部驱动骨骼的属性来驱动这根骨骼的属性了。
然后我们重复操作,将头部的follow也给做出来。。
重新将颈部和头部的名称前缀改成ctrl,然后新建层命名为MCH和TORSO_tweak,并且将对应骨骼放进去。
接下来做腿部骨骼的绑定,首先我们先建立一个TMP层,然后将我们所有的腿骨都放进这个层级中,然后在小腿的顶部挤出一段骨骼命名为MCH_IK_脚_L,alt+p清空父级,然后将它与root骨骼保持偏移量。接着在姿态模式选择MCH_IK_脚_L加选小腿骨骼,按下Ctrl+shift+c添加反向动力学约束。然后我们选中小腿骨骼,查看他的约束信息,将链长改为2,这样就可以正常运动了。
现在我们的IK还是有一些问题,我们需要到骨骼属性里面找到lockik把zy两个轴向都锁定,这样ik就只能绕着x轴进行旋转了。
我们现在去做我们膝盖的指向目标,也就是极向目标。我们先选中膝关节,然后挤出一根骨头,清空父级,然后我们沿着y轴移动,使其与膝盖对齐,然后将其称为Ctrl_pole_膝盖_L。
然后我们将这个骨骼赋予给小腿的极向目标,极向角度改为90°,我们的膝盖方向目标就做好了。
接下来就是脚部的绑定。我们在编辑模式下选中MCH_IK_脚_L加选TGT_脚跟_L按住ctrl+alt+a对其,并且缩小ik骨骼。切换到姿态模式,选中ik骨骼加选脚跟骨骼ctrl+shift+c添加复制变换约束,现在这个ik骨骼不光可以控制移动也可以控制脚部的旋转,然后将脚跟的父级改为root。
我们打开DEF层,将所有的DEF层的骨骼清空父级,然后都将父级赋予给root骨骼。
我们在脚跟骨骼的顶部挤出一根骨骼到脚跟的位置然后清除父级,给它命名为MCH_ROLL_L,然后在在它的顶端挤出一根骨骼作为它的父级,命名为MCH_ROLL_02_L,并且把ik骨骼绑定到MCH_ROLL_L上。
下一步,我们复制MCH_ROLL_02_L移到后方,命名为CTRL_脚部_ROLL_L。然后我们先选中CTRL_脚部_ROLL_L再选中MCH_ROLL_L复制旋转,空间改为局部空间,我们不需要y和z轴的旋转我们只要它在x轴上旋转,所以把y和z取消勾选。然后再加上限定旋转。
在限定旋转中我们把x轴勾选,并且测试哪一个角度正确,按照自己的需求来(把控制骨骼旋转到使用位置,然后调整数值看看那个数值能驱动)
因为MCH_ROLL_02_L的操作是一样的我们可以选择这个骨骼加选已经约束好的那,然后复制约束,注意我们还需要将限制旋转的指数翻转一下。
下一步做脚掌,我们将脚掌约束到mch_roll_L,依旧是复制旋转,然后直选中x轴,如果不对就反向一下。
如果想要能够对脚掌自行修改旋转我们可以将混合改为偏移。
我们在ctrl_脚部_roll_L的根部挤出一根骨骼并清空父级移动到对应位置,然后将ctrl_脚部_roll_L和mch_roll_02_L绑定为它的子集,将其命名为Ctrl_脚部_L。
我们把脚掌的前缀改成Ctrl,因为他现在也算是一个控制器,然后我们把MCH的骨骼放到MCH的层级中。接着我们选中小腿骨骼进入到骨骼属性面板中的反向动力学,将ik拉伸改变数值为0.05大腿骨骼的相应数值也改为0.1。
将大腿和小腿的骨骼复制然后沿着y轴的方向移动-0.5个单位(G+Y+小键盘-0.5),然后以MCH为前缀来重命名这两个骨头,然后先选中MCH骨在选中TGT骨在姿态模式下一对一复制位置缩放旋转,然后将缩放的xz轴取消勾选。
做完之后我们在编辑模式下将MCH骨骼归为(G+Y+0.5),然后我们再将膝盖骨骼绑定到脚部控制骨骼上。
然后我们把所有层级都打开选中右边的所有骨骼进行删除,然后全选所有骨骼进行对称,这样我们右边也就会出现已经绑定好了的一套骨骼。ps.如果出现了bug,那就是命名出现了问题,需要返回去检查。
最后我们在姿态模式下选中CTRL_脚部_ROLL左右两个骨骼,因为他们只会在一个方向发生旋转,所以我们把它的旋转类型改为XYZ Euler(Ctrl+r),并且把它的旋转yz和移动缩放都锁定,然后右键后面的锁,复制全部属性到选中项,这样另一个骨骼也会有这些属性,位置旋转缩放都需要各做一次。
最后整理一下我们的层级,我们新建两个层分别为LEG_L和LEG_R,把我们的腿部ctrl骨分别放入,然后将其余的TGT/MCH都放到相应的层级中
下一步我们开始做手臂的ik和fk。
首先我们把左右肩膀到手掌的骨骼全部放进TMP为我们做准备。。
我们复制大臂、小臂、手骨两个,然后一个沿着z轴向上移动0.2个单位,另一个移动0.4
移动0.2个单位的手臂我们将它的名称改为CTRL_FK_XX(大臂、小臂、手掌)_L另一个称为MCH_IK_XX(大臂、小臂、手掌)_L,然后我们在ik的手掌根部挤出一根骨骼清空其父级,绑定到root骨骼,命名为CTRL_IK_手_L,然后我们将CTRL_IK_手掌_L绑定到CTRL_IK_手_L,然后切换到姿态模式先选中CTRL_IK_手掌_L再选中CTRL_IK_小臂_L按住shift+ctrl+c选择反向动力学。然后依旧是把两个骨骼(大臂小臂)链长调整为2,然后把ik拉伸设置为0.05,同时锁定CTRL_IK_小臂_L的ik的x和y轴。
接下来创建极向目标,我们从手手肘关节处挤出一个关节沿着y轴拉出,然后清除父级,将它绑定到CTRL_躯干上(注意不要忘了把极向目标设置给IK)。
然后在fk大臂的根部挤出一根骨骼,将它命名为MCH_手臂_FOLLOW_L,然后shift+d复制一根缩小,然后将这个骨骼绑定到躯干骨上,将其命名为MCH_手臂_FOLLOW_INT_L,然后我们选中FK大臂加选MCH_手臂_FOLLOW_INT_L创建父子级关系,然后我们选择MCH_手臂_FOLLOW_L加选MCH_手臂_FOLLOW_INT_L复制移动旋转缩放,将旋转命名为Copy Rotation_ARM_FOLLOW_L。
做完这些我们接下来要讲ik的影响值传递给tgt骨,和腿部一样,复制位置旋转和部分缩放。
然后我们隐藏ik,继续让tgt骨跟fk骨进行复制变换。因为我们最后添加的fk所以在约束层级上他会优先将tgt骨服从最后一个fk的约束变换,当我们把最后的fk约束变换的影响值调为零,那么tgt骨骼依旧是依照ik的约束进行变换,这就是ik/fk之间的切换。然后我们找到我们的头部驱动,创建两个新的自定义属性如图,然后我们将fk手臂的跟随加上还有最后的ikfk的切换也加上。
然后回到编辑模式,我们将ik和fk的手臂骨骼重新移动会原来的位置(G+Z+原来移动的数值的负数)。
然后我们将所有的层级全部显示,将右半部分的手臂删除,然后重新对称一遍新的。然后我们需要重新建立一遍右边的跟随和ikfk之间的切换数值。
然后我们创建新的层级ARM_FK_L/ARM_FK_R/ARM_IK_L/ARM_IK_R,并按照层级将骨骼规整层级。
做完手臂接下来是手指,首先就是在骨骼的tgt层中选择中所有的手指骨并将其放入tmp层级中,首先我们将小拇指的旋转改为xyz欧拉,因为我们的手指关节没有办法在三个方向都进行旋转,然后我们将无名指和中指都复制小拇指的旋转,然后影响值依次递减或者递加根据角色的需要。
然后我们选择002号的指节复制一层然后缩放,一定是在各自原点的模式下,这就是我们的主控制器,然后我们再在主控制器的顶端挤出新的一层骨骼这是我们的旋转控制器,记得一定要对齐(ctrl_alt_a)。
回到姿态模式我们选中主控骨再加选002骨复制变换约束。然后选中次级控制骨加选003骨进行相同操作,然后将约束复制给004骨自定义其约束值大小。