游戏和CG里的人物,都是怎么动起来的(#2)

作者:深空爱吃肉包儿 机核 2021-03-01
上一篇文章中,我们讲到了游戏和CG中的人物利用骨骼来实现动作。但是单纯的调整骨骼并不是最快的解决方法。今天我们就来讲讲在调整骨骼的基础上,我们还有什么更加先进的技术来加速动画的生产制作流程。

骨骼的父子关系

在上一文中,我们提到了移动,旋转骨骼就能实现人物的动画了,但是光靠这样的移动,还是相当的缓慢,所以就有人创造了父子关系这样的一个概念。父子关系如其字面意思,比如我们找来三个关节,A,B和C:


这里画面中只有两个骨骼,但是为什么我写了三个字母呢?因为实际上我们创建的是三个关节点,而骨骼其实是计算机通过我们创建的关节点算出来的。三个关节点对应了两根骨骼。而单独的一个关节点是无法创造出骨骼的。而骨骼的创建,一定是父关节向自己的子关节方向创建,父关节不会和不是自己子关节的其他关节创造骨骼。

我们让A是B的爸爸,B是C的爸爸,这样就缔造了两对父子关系了。


一般的三维软件都会使用树状图,来现实当前场景里的物体结构,如上图我们就可以清晰的看明白父子关系了。

如果我们这时候新建一个关节D。不然其成为任何一个关节的儿子的话,那么场景物体结构就是这样的:


而这个父子关系有什么用呢?其做用就是让子物体的位置,朝向,大小,都基于父物体的位置,朝向,大小。

比如,如果我们将上图的A向画面右侧移动1CM,那么其下的B也会跟着移动1CM。又因为B移动了1CM,C也会跟着一起移动。而D则不受影响。


而旋转的影响则有些不同,旋转A的时候,B不仅仅会跟着一起旋转,而且还会发生相对世界坐标的位移:


因此,有了这种父子关系之后,编辑骨骼就更加的方便了。

各位可能会注意到在PS1时代的时候,人物有几率会出现四肢的运动错位的景象,这正是因为当时这种父子关系的运用并不好,所以很多动画会需要分开人物的身体与四肢各个关节的骨骼来调整,最后制作出来的动画就容易出现错位。

IK与FK

IK与FK是两个不得不提到的、重要的关于人物动画的技术了。

先从FK讲起。Forward Kinematic,前向动力学,听起来是一个高大上的名词,但其实没有什么大不了的。上文提到的父子关系中,通过父物体的改变得出子物体的相对位置的这个计算方式,就是FK。

而与之相对的,IK,Inverse Kinematic,反向动力学,则是通过修改子物体的位置来影响父物体的改变。但是具体怎么影响呢?我们再利用上文的A,B,C关节进行举例。假如让三者形成IK关系,然后移动子关节C,就能得到如下的效果:


这里发生了什么呢?其实是电脑利用IK算法,通过得知子关节C的位置后,反向去调整A和B的位置和朝向,在不改变A,B,C形状大小的前提下,尽可能使关节C处在我们指定的位置。

如果我们指定给C的位置C无法达到,也就是A,B伸到最长,也够不到C的位置的话,就会出现如下图所示的情况:


而IK非常的实用,比如我们希望一个人的手掌处于某一个位置,比如插在裤子口袋里,或者放在胸前,那么直接将手掌放在那个位置之后,小臂,上臂,甚至肩膀就会自动的以合理的姿态处在他们应该处在的位置了。

利用IK来摆动怪物的腿:


约束

约束,Constraint,顾名思义,就是约束关节点或物体的功能。一般来说,都是将某某物体约束到某个物体上,和父子关系有点类似,但是功能更加丰富一点。比如说,我们创造如下图所示的5个关节:


他们在场景里的物体结构如下:


这个时候,因为我希望获得的是两条独立的骨骼,所以D不能成为A的子物体,不然就会变成这样:


但是我又希望关节点D可以随着A的移动而移动,那么我们就可以将关节D约束到关节A上:


这样他们就可以一起移动并旋转了,不过这里我们发现其旋转并不像是在父子关系中的旋转那样。其实这只是约束方式的不同,约束还有好几种不同的约束方式,其中就有可以让他们表现起来像父子关系一样的约束方式:



其他的约束方式我就不一一赘述了,感兴趣的可以自行了解。

控制器

控制器,其实就是上文提到的约束、IK、父子关系以及其他一些额外功能的合集。而一般的建模软件也非常贴心的为用户自带了标准人体骨骼的控制器,下图所示的是C4D里自带的人物控制器:


人物旁边这些花花绿绿的线条方框,就是一个一个的控制器。

而使用这些控制器来控制人物,就相对简单轻松的多了。


控制器控制的依然是骨骼,不过其将对骨骼的操作简便化了。

补间动画

在制作动画的过程中,许多的动作并不需要每帧都进行调整。很多时候,我们只需要给电脑指定动作开始的时候、人物的样子和动作结束的时候人物的样子,就可以让电脑自动算出中间的过渡了。

比如,我指定一个起始动作,如下图:


然后我再指定一个结束动作如下图:


电脑就可以自动将中间的过渡计算出来了:


并且我们可以看到动作的曲线:


通过调整这些曲线,便可以使得我们的动作更加的自然连贯。

动画素材库/动捕

即便有了上面所述的各种功能,创作自然的人物动画依然不是一件轻松的事情。因此在资金不足的情况下,使用动画素材库的动画为模板,进行各种微调也不失为一种方案。此处推荐一下Mixamo。不过这个网站现在对于做动画的兄弟来说可以说是无人不知,无人不晓了。

而在团队拥有充足资金的情况下,动捕则是一种即高效又能有非常好效果的解决方案了。而且最近,利用深度成像的深度感应类的动捕摄像头的价格也在逐渐亲民化,也许之后有一天我也可以搞一个来试试。

最后是带货时间,讲一下我做的对话台词编辑器上架Unity Asset Store了,这是让你通过可视化的方式,来编写多分支多选项的台词的工具。支持任何语言的本地化。并且不需要你编写一行代码就可以使用大量的对话特效。目前在商店获得五星好评。这里分享一下开发经过完整的使用教程。 各位大哥要是觉得好用别忘了在Asset Store上留下个好评啊。

点此跳转到Unity商店。



另外,最近会开始陆续在我的Bilibili账号@深空爱吃肉包儿和推特@Lawrence Peng这两个帐户上更新关于我现在正在制作的游戏的开发日志,感兴趣的可以前去看看,谢谢各位了。




来源:机核
原文:https://www.gcores.com/articles/133920

最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多