第六章:3ds max骨骼动画(上)

关于骨骼动画这一块,主要分为两个内容,一个是骨骼蒙皮,一个是制作动画。首先,我们介绍骨骼蒙皮。它的目的就是将骨骼绑定到顶点上面去,也就是权重的设置。3ds max提供了一个“蒙皮”的控制器来完成这项工作,它的过程是可视化的。在进行蒙皮之前,我们要了解3ds max中的骨骼。在命令面板“创建”的子栏中最后一个“系统”选项中有骨骼。

我们使用最多的就是“骨骼”和“Biped”这两个。

左边的就是“骨骼”,右边的就是“Biped”。非常的明显,“骨骼”就是一块骨骼而已(实际是两块,3ds max中每组骨骼都有一个末节骨骼),而“Biped”就是由多块“骨骼”构成的人体骨架。我们给人体模型添加骨骼的时候,直接使用“Biped”就可以了。如果给其他模型赋予骨骼的话,我们就需要使用“骨骼”一块一块的搭建骨架。这里需要注意的是,在创建“骨骼”的时候,它是可以连续创建的,

上图中我们创建了两块骨骼(实际是三块骨骼,最后一个是末节骨骼),左边的父骨骼,右边的是子骨骼。也就是说,在连续创建骨骼过程中,先创建的是父骨骼,后创建的是子骨骼,依次类推。如果旋转父骨骼的话,子骨骼会一起旋转。如果旋转子骨骼的话,父骨骼是不旋转的。我们在DirectX中也介绍过这个特性。大家可以试一试。如果将两块分开的骨骼绑定父子关系呢?这就涉及到3ds max工具栏中的第一个命令和第二个命令,分别是“选择并链接”和“断开当前选择链接”。当然,这两个命令并不只是应用于骨骼对象的,模型对象也是可以使用的。骨骼绑定父子关系的操作流程就是,打开“选择并链接”命令状态,将子骨骼拖动至父骨骼上面,拖动的时候,中间会产生一条虚线,表示两者将要绑定父子关系。

请注意,左边是父骨骼,右边是子骨骼,我们将子骨骼拖动到父骨骼上面。这是,我们旋转父骨骼的话,子骨骼跟随旋转。但是,旋转子骨骼的话,父骨骼是不旋转的。

接下来,我们就介绍如何给模型进行蒙皮操作。这里,我们为了演示,我们使用一个简单的立方体模型进行蒙皮的演示。

  1. Alt + X半透明显示模型,然后将其冻结。

2. 添加两块骨骼,如果加上最后的尾节骨骼的话,应该是3块骨骼对象。

当然,两块骨骼肯定是要放到模型里面的,尽量让骨骼置于模型的中间位置。当然,我们还可以调节骨骼的大小,使其与模型的大小尽量保持一致。这样做的好处就是方便后期的“封套”编辑。需要注意的是,当存在多块骨骼的时候,整个骨架必须存在一个根骨骼,在Biped中,根骨骼就是位于胯部的三角形骨骼。当然,我们也可以不使用3ds max提供的Biped,我们可以自己使用“骨骼”搭建一个符合人体结构的骨架,也是可行的。

因为我们只有两块骨骼,只需要将两块骨骼放置立方体模型的中间位置即可。对于复杂的人体模型,当使用“Biped”的时候,每块骨骼的位置调整还是非常复杂的。

       首先,进入骨骼编辑模式,点选Biped任意一块骨骼,然后点击命令面板“运动”->“Biped”下的“体型模式”即可进入骨骼编辑模式。

       然后,我们可以在“运动”->“结构”中,可以修改骨骼层次结构。例如我们可以将脊椎骨骼由4块改为3块,也可以减少手指和脚趾骨骼的数量。

       接着,在“体形模式”下,可以平移,旋转和缩放Biped中的各个关节骨骼,将Biped的每一块关节骨骼置于对应身体部位的中间位置,同时也可以调整每个关节骨骼的大小。

        注意:骨骼操作的时候,尽量使用骨骼局部坐标系,这样更容易调整骨骼的位置。

       注意:调整Biped的时候,优先从根骨骼(耻骨)开始,然后调整子骨骼位置和大小。

       注意:移动某一块骨骼的时候,会影响到子骨骼。在层次里面点击“仅影响轴”,就能摆脱这种束缚关系。即子骨骼不跟随移动。但是,这种操作实际使用的时候,还是不太理想。

       再次,由于人体模型是对称的,因此我们调整完一半的骨骼位置后,可以复制/粘贴到另一半。首先,“创建集合”,然后选择已经调整好的骨骼(左手臂),然后“复制姿态”,最后“向对面粘贴姿态”完成。

       最后,调整完所有骨骼后,关闭“体形模式”。

 3. 选择模型(解冻),然后为其添加“蒙皮”修改器。

4. 封套:蒙皮的过程,就是设置骨骼与模型顶点关系的过程。封套就是一个可视化的关系设置。每个骨骼都对应一个可视化的封套(胶囊体),我们通过编辑封套的结构来控制该骨骼对周围模型顶点的影响。具体操作过程是,在蒙皮修改器中“添加”骨骼对象(也就是我们上文创建的骨骼),然后点击“编辑封套”中可以看到该骨骼对模型顶点的影响。我们先给第一根骨骼(根骨骼)Bone001来设置封套,点击添加该骨骼,然后点击“编辑封套”。

调整封套的大小,就是调整骨骼对模型顶点的影响。封套是一个胶囊体,由里外两层组成。从里向外对模型顶点影响越来越小。通常,封套大小和骨骼大小保持一致,这样封套才能合理的影响周围的模型顶点。红色表示影响最大,橙色表示影响适中,蓝色影响最小。 

我们可以看到,封套就是由里外两个胶囊体线框组成的,里面的胶囊体线框是浅红色,外面的胶囊体是深红色,我们当前选中了外面的胶囊体,选中的线以紫色显示。在线与线交叉的地方,都会有一个小点,选择这个点就可以进行移动操作了。我们将里外两个胶囊体都放大,让其能够覆盖掉周围的模型。在封套最中间里面,有一条黄色的线,线两端有两个点,这个两个点就是调整封套的上下尺寸的。

我们这里的调整比较简单,我们只需要保证胶囊体能覆盖掉周围模型即可。不管是里面的胶囊体,还是外面的胶囊体,都是可以的。但是,对于多块骨骼下的封套调整,就需要考虑相邻骨骼的封套对公共模型部分的影响。例如,大腿骨骼和小腿骨骼对于膝盖模型顶点的影响,合理的设置应该是彼此影响一半。我们可以这样设置,大腿骨底部的封套使用外层胶囊体影响膝盖,小腿骨骼顶部的封套也使用外层胶囊体影响膝盖。在本案例中,我们继续添加第二块骨骼Bone002的封套设置。

请注意两个骨骼对于中间模型部分的封套设置。

备注:封套有属性参数可以设置,也可以手动拖动改变其位置和大小。

备注:隐藏封套“显示”->“不显示封套”

5. 顶点调节:蒙皮属于可视化的调整骨骼对模型顶点的权重设置,使用红橙蓝颜色进行程度区分。我们还可以通过数值的方式直接修改骨骼对模型顶点的影响。操作过程就是,在编辑封套的基础上,勾选“顶点”,如下图:

这样,我们就可以使用鼠标来选择模型上的顶点了,点选某一个顶点之后,我们在蒙皮修改的命令面板中找到“权重属性”下的一个扳手形状的工具,点击它弹出“权重工具”窗体。但是,前提是我们必须选择一块骨骼(上图中选择了Bone002)和一个顶点(下图)。

点击扳手形状的工具,在“权重工具”弹窗中设置顶点的权重值。这个权重值在0-1之间,也就是说,不管多少骨骼对顶点影响,那么所有骨骼对顶点的权重值总和为1。

我们可以选择预制好的数值,也可以手动输入权重值。这种方式主要用于模型细节的蒙皮处理。例如关节处的权重值设置,应该根据上下前后两个骨骼对其影响程度来设置。一般情况下,都设置权重值为0.5即可。也就是说两个骨骼对关节处模型顶点影响度都是一半。

在“权重属性”中有一个“权重表”。里面使用列表的形式展示了模型指定顶点收不同骨骼影响的权重值。在模型中选择顶点后,权重表里面才会显示所选顶点的权重值列表。

笔刷:权重绘制工具。选择“封套”,在点击“绘制权重”,还有勾选“绘制混合权重”。这样就能使用笔刷在模型上面调整权重。该方式用于顶点密集的地方,尤其是骨骼移动后,模型发生变形的情况。

6. 蒙皮完成后,可以通过“镜像模式”对另一半蒙皮,适用于对称性的模型蒙皮设置。本案例中就不需要了。对于人体模型的蒙皮设置,我们可以设置左边部分的蒙皮,然后根据这个命令来自动设置右边部分。例如,左腿的蒙皮设置完毕后,可以镜像到右腿上面。

       一边是蓝色,一边是绿色,表示两边可以进行镜像操作,中间红色不镜像。

       选择“将蓝色粘贴到绿色骨骼”或者“将蓝色粘贴到绿色顶点”

       完成另一半的蒙皮设置。如果两边不是蓝色和蓝色,则可能是镜像轴不对。

       选择mirror plane中正确的x/y/z轴即可。蓝色和红色之间红色的点不会镜像。

       修改mirror thresh偏移值,可以调整红色点的范围。数值越大,红点越多。

7. 蒙皮完毕后,检查权重分配是否合理,就需要移动骨骼,观察模型跟随运动是否正常。

       根据动作来观察骨骼对模型的影响是否正确。如果不正确的话,则需要调整骨骼对模型的影响权重。也就是封套的位置和大小,或者通过顶点直接设置权重值。

       在移动骨骼之前,我们需要设置默认姿势,目的是做完动作后能够返回默认姿势。

       全选骨骼(工具栏中对象过滤选择骨骼),然后Alt + 右键选择“设置蒙皮姿势”。

       返回默认姿势,全选骨骼后,Alt + 右键选择“采用蒙皮姿势”,即可恢复默认姿势。

接下来,我们分别旋转两块骨骼,查看模型跟随旋转的效果。这里面有一个问题,骨骼动画的原理是骨骼控制模型的顶点进行运动。因此,模型中某个位置要想能够被骨骼控制的话,它必须存在顶点,而且顶点不能太少,太少的话,运行的效果就不够自然流畅了。在本案例中,我们旋转骨骼,就能看到立方体跟随旋转后的效果。

我们可以看到中间弯曲部分不是很自然,原因就是我们模型在这个部分的顶点少。如果我们想要获取平滑的弯曲效果,就需要给立方体模型设置更多的高度分段来增加顶点。关于蒙皮的设置,我们这里做一个简单的总结。第一,就是骨架中各个骨骼的大小和位置调整。第二,就是每块骨骼的封套设置(两个胶囊体),对于细节可以直接设置顶点的权重值。原理很容易理解,主要是细微的操作上,需要大家多多的练习。

备注:这是我们游戏开发系列教程的第三个课程,这个课程主要讲解3ds max建模的基础知识。学习目标主要通过3ds max的操作来加深对游戏基础知识的了解。如果有兴趣的同学,可以通过其他方式来学习3ds max的专业知识。本课程中如果有一些错误的地方,请大家留言指正,感激不尽!

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咆哮的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值