虚幻4渲染编程(Rigging篇)【第一卷:Rigging In Maya-(1)】

MY BLOG DIRECTORY:

YivanLee:专题概述及目录

INTRODUCTION:

随着近年来游戏行业对动画的要求越来越高,所以技术美术会有一个动画方向。Rigging篇主要研究外部工具和引擎的动画绑定。

目前动画资产的生产可以分为两个阶段,一个是引擎外制作烘焙动画阶段,一个是引擎内制作动画资产阶段,这两个阶段组合的产出物才是我们最终游戏里看到的动画资产。可以从Maya或者Max等外部工具导入的动画相关的数据主要是:烘焙的骨骼动画,BlendShape,帧缓存数据。骨骼动画数据包含但不限于位移,缩放,旋转。

在引擎内部主要是对烘焙骨骼动画资源进行进一步整合以及外部工具无法导入引擎的Constraint这部分数据的还原。


MAIN CONTENT:

【1】Constraint

Maya中的Constraint数据是无法被导入引擎的,这部分只能到AnimGraph中去做还原。Maya中的Constraint只能用于生产烘焙动画。如果有良好的制作规范,其实也可以通过自定义的方式把Constraint一键在引擎中生成。

Maya的选择顺序和Constraint顺序非常不人性。需要先选择控制器然后选择被控制物体,然后再创建Constraint。

v2-e0f92b0cc8ba8601454950960eaea8cb_b.jpg

在引擎中重建Constraint的方法就是通过BoneController节点,新的引擎版本把这部分逻辑拆解了出来,这样就不需要每个功能写c++了,技术动画师可以方便在引擎中还原Constraint数据。

v2-027875bcff5e983a555faaeeee76b42a_b.jpg


【2】Blend Shape Binding

blendShape经常用于制作一些骨骼难以控制的动画,比如眨眼,嘟嘴等。BlendShape的缺点就是会传入大量的VB和IB数据。在Maya2019中制作为基础模型制作一系列变形体以后,打开Windows->Animation Editors ->Shape Editor点击CreateBlendShape即可为基础原始模型创建BlendShape,注意选择顺序,基本体是绿色的,BlendShape是白色的选中线框,直接可以把这个物体导入引擎

v2-098f6c947aacbbddb5ac349d7ae8e494_b.jpg

导出的时候必须连同骨骼,所有的BlendShape全部选中然后再ExportSelection,在导出选项中记得确认勾选Skin和BlendShape选项。

v2-48213a845e96387da08c4bd6a601e9bc_b.jpg

导入引擎的时候记得确认勾选导入MorpherTarget

v2-2e8087dedeb92ca7b1587a92f2857834_b.jpg

然后就能在引擎里看到导入数据了

v2-63b969a660d16c108acc16dc6d93bfa3_b.jpg

下面回到Maya中。我们一般情况下需要制作BlendShape的绑定器。

v2-40aab6641609b4e9038e22c705794b4a.jpg https://www.zhihu.com/video/1141808912079749120

我这里做得非常简单,但是复杂的面部BlendShape绑定器的所需要的基础制作方法都在这里了。

首先建两个curve圆

v2-d358823b31c402b369a2efed31307bae_b.jpg

对中心圆执行Modify->FreezeTranslation命令。然后中心其TransLation就初始化了

v2-cd5c47055cbfccc817ba0aead94400a6_b.jpg

然后来到属性栏把它的Translation限制在xz平面的【-2,2】范围内

v2-385698e3d43399f37f5d8107262b85af_b.jpg

这样不管怎么移动它,它都不会超出我们制作的控制器范围了。

然后再在ShapeEditor中右击数值部位,选择SetDrivenKey选项呼出SetDriventKey面板

v2-9e9c71df53e884589e49e9d4aed2b919.jpg https://www.zhihu.com/video/1141811373955842048

选中我们的那个圆圈控制器,点击LoadDriver

v2-de4b610b77a067b7f961b721d94c4598_b.jpg

然后选中控制器的TranslateX属性,选中BlendShapeThree的属性,BlendShapeTree的值播到0,控制器的Translate数值为0,然后点击一下Key

v2-47a889dddbee4c4490b83884f84d40a8_b.jpg

然后把BlendShape的值调到1,控制器的TranslateX值调成2,再点一次Key

v2-6fce370492e520909ae0238ed3b45355_b.jpg

重复同样的步骤给Z值,只不过SetDrivenKey面板的属性要重新指认一下

v2-a7d6b6a681281bcf83902ab95ed8d9a7_b.jpg

Maya这里做得不太好的地方就是我点了命令后UI面板反馈少得可怜,我根本不知道我设置成功没有。

下面是完整操作步骤:

v2-182a529b561ea213d1c2c5a85287cabf.jpg https://www.zhihu.com/video/1141814693290127360


【3】Animation Expression

虚幻的骨骼是可以拥有位移,旋转,缩放等关键帧的,但是往往我们最多只用到了位移和旋转,没有怎么使用缩放数据。下面使用AnimationExpression来做挤压拉伸。

建一个半径为5的球,建两根骨头,给第二根骨头做位置约束

v2-954dce08c25bcaafc5059c3f73dbd274_b.jpg

然后选中骨骼和模型给个Skin

然后打开Expression编辑器,再在视口中建一个测量器绑定在两个骨头上

v2-2d699bfb1469e77a0871d417e6368cae_b.jpg

可以得到如下效果:

v2-25f335d1ba55434fdf327c0b1bff73fe_b.gif

缩放数据是可以导入引擎的。

v2-833f02dc25c4c16850c0d2f826dd0ee4_b.gif


【4】IK And FK

IK反向动力学,FK是正向动力学。这两者会根据受力情况的不同会发生转换。以手臂为例,当手撑住地面时,这时手臂应该使用IK解算,当手臂悬空时,这时手臂应该使用FK。同理对于人的大腿来说,因为脚经常会和地面接触,所以大腿一般使用IK解算,但是也不是绝对,比如武打动作,脚可能长时间悬空并且做出踢等动作,这时腿应该使用FK解算。

下面我来做一个IK的挤压拉伸

v2-a17e904ca849275677ec8a91f3ff34e2_b.jpg

还是先做一个IK绑定然后把各种控制器该加上的加上。然后分别在两根骨头的AnimExpression中敲入如下代码:

v2-6115d0cb6879c5965e37d11c93871cb4_b.jpg
v2-3403d0ae086c5be67bf4bd3620bdbf51.jpg https://www.zhihu.com/video/1142059539858874368

SUMMARY AND OUTLOOK:

先就酱紫吧,在后面的文章里再深入制作符合游戏行业要求的动画绑定。Enjoy it。


NEXT:

Todo...

发布了384 篇原创文章 · 获赞 4 · 访问量 8056

猜你喜欢

转载自blog.csdn.net/cpongo10/article/details/100745175