facial_animation_toolt
(选自<<三维角色动画的艺术>>、清华大学出版社,作者:赖义德)
表情装配通常有两种方式:一种是在面部建立簇或者骨骼,通过这些骨骼或
簇来分区域控制面部的肌肉,再利用这些骨骼产生动画;另一种主要是依靠融合
变形,结合基本的骨骼来装配,基本骨骼是为了控制头部大的运动关系,比如头
部的移动和旋转,还有嘴巴的张与合,眼球的旋转等,融合变形调节笑、哭等细
微的表情变化,这是表情装配使用最多的方式。
使用融合变形要求学习者对角色表情有比较深入的研究,而大多数初学者缺
乏这方面的知识,很难制作较好的目标形状;同时,制作大量的目标形状,也是
一项繁琐的工作,需要花费大量的时间,所以初学者大都害怕进行表情装配,插
件“facial_animation_toolt”则可以帮助解决这些问题。
“facial_animation_toolt”,以下简称为“F-A-T”,其工作原理是在面部顺
着肌肉走向,合理地布置骨骼,然后通过这些骨骼绑定面部肌肉,控制面部表情
变化,更方便的是,“F-A-T”内置了各种各样的表情库,这些库文件可以直接被
套用,快速产生丰富的表情,相当于设定骨骼和调节表情库一次完成。下面具体
介绍这款插件的用法:
一安装
F-A-T插件安装比较简单,直接执行其安装文件即可,安装完毕,工具架上
会自动出现
Institute-of-Animation
的工具架,如图
4-1
:
图4-1
二导入表情对象
执行工具架快捷图标“ba”,打开原始范例文件,先将范例文件另存为一
个新文件,然后在左边的视图中删掉原来的范例模型,再导入需要设置表情的模
型,如图4-2:
图4-2
三定位。
1.
单击“
AFS
”图标,打开“
AFS
”控制面板,单击
GloblePositioning
「全
局位置」按钮,整体移动和缩放这些定位器,与导入的模型进行匹配。
对位大致完成后,再次单击
GloblePositioning
按钮,结束全局对位。(图
图4-3)
图4-3
2.
选择模型,执行
Modify/MakeLive
命令,冻结对象。
3.单击IndividualPositioning「个体定位」按钮,分别调整每个定位器的位
置。如图
4-4
:在场景中保持两个视图,左边是需要操作的模型对象,
右边是对位的参考对象。根据右边的参考对象,确定左边定位器的位置。
在调整定位器的时候,可以先调整一边,再通过
MirrorSelection
按钮,
镜像另一半定位器的位置。所有的定位器的位置调整结束后,再次单击
IndividualPositioning
「个体定位」按钮结束对位。
图4-4
四蒙皮绑定
1.
选择模型,再次执行
Modify/MakeLive
命令,反激活对象。
2.选择头部模型,并且在大纲视图中加选所有骨骼,执行平滑蒙皮「Smooth
Skin
」。(图
4-5
)
图4-5
五连接骨骼和动作库。
单击
ASF
图标,再执行
Data/LoadMotiondate
「导入动作数据库」,确定,
这时候大概要等上30秒,直到动作库数据完全载入。(图4-6)
图4-6
再执行Data/BuildConnections「创建连接」,等待直至连接完成。(图4-7)
图4-7
下面,可以通过旁边的控制面板来调节角色表情了。(图
4-8
)
图4-8
六分配权重
因为每个关节的权重不太合理,所以会出现图
4-8
所示那样很奇怪的表情,
根据每个关节所在的位置,灵活调整权重。凡是在表情变化时不会发生变形的部
分,尤其是脖子的最下面一圈点的权重,要完全分配给关节“
MarkerJoint_Stab
”
(图4-9);其次是上下嘴巴骨骼的权重、眼睑的权重要分配精确。权重刷好后,
表情基本上就自然了,具体请参考场景文件“
”。
图4-9
七纠正套用表情库的错误。
依次调节控制面板的每个表情,发现很多表情会出现穿插,小的问题可以调
整蒙皮权重来解决,大的问题可以依靠插件来校正,具体方法如下:
1.
如图
4-10
所示,拖动“
LidT
”上面的滑块,发现左眼的表情会出现穿
插。
图
4-10
2.选中该滑块,打开“AFS”面板,如图4-11所示:该滑块的动画数据
自动导入到“
AFS
”窗口中,拖动时间线,可以看到表情变化的过程。
图4-11
3.
面板中关于动画数据编辑的命令:
Load与Unload:载入与卸载,二者自动切换,选择动画滑块,执行该命令,
可以把相关动画数据载入进行编辑,同时
Load
会自动转换成
Unload
,编辑完毕,
单击Unload按钮,释放数据,使当前做的修改生效。
Mirror
:镜像,在修改了一侧的动画数据后,相应的另一侧可以直接执行镜
像命令来修改,比如控制左眼运动的滑块调节好之后,可以直接使用该命令镜像
动画数据到右眼的控制滑块。
MotionDataScale:动画数据缩放,这个滑块用来缩放控制骨骼位移的运动
系数,默认值为
1
,即完全执行导入的运动参数,如果值为
0.5
呢,则只执行原
来位移的一半,反之,值为2,所选关节的位移被扩大2倍。
AdaptationKey
:移动关键帧,对关节的移动增加关键帧。
RotationKey:旋转关键帧,对所选关节的旋转增加关键帧。
4.
图
4-10
所示的穿插主要是因为控制眼部的骨骼运动过大引起的,在通
道栏层窗口中把“FeaturePoints”层显示出来。依次选择如图4-12所
示的关节的相应轴向,拖动
MotionDataScale
滑块,缩小运动系数。拖
动时间线,可以发现问题已经被纠正了。修改完成之后,单击Unload
按钮,确认刚才所做的修改。(注意:鼠标单击则选中对象参数,再次
单击取消选择,插件不能自己取消选择。)
图4-12
5.
解决了左边的穿插后,可以使用
mirror
「镜像」按钮直接来编辑右边眼
睛的穿插,首先选择“LidT”下面的箭头滑块,单击打开“AFS”面板,
导入其动画数据,单击
mirror
按钮,上面左边的操作就被镜像到了右
边眼睛,单击Unload按钮,确认所做的操作。
6.
在两边眼睑的穿插都解决之后,移动
Eyesq
滑块下的夸张动作滑块,会
发现眼部也有较大的穿插,如图4-13:
图
4-13
7.同样选择该控制器,单击“AFS”快捷按钮,导入动画数据,单击““Query”
按钮,选择所有的骨骼参数,缩放动画系数至
0.11
,现在动画正常了,
单击Unload按钮确定。(图4-14)
图4-14
6
眼部控制设置
眼部没有现存的动画数据,需要自己设置。选择“Rlid”上面的滑块,单击
“
AFS
”快捷按钮,导入其动画数据。如图
4-15
:载入之后,发现没有现存的
动画数据,可以使用后面的AdaptationKey和RotationKey来达到目的。具体办
法是:拖动时间滑块到
-100
帧,然后选择
RLID
的所有轴向,移动控制器到如图
4-15位置,然后按下AdaptationKey按钮,再移动时间滑块到100帧,向下移动
眼睑控制器,再次按下
AdaptationKey
按钮,添加了两个关键帧,播放时间线,
可以看到,眼睑的在-100到100帧之间上下运动,单击Unload按钮确定。
图
4-15
同样方法为下眼睑控制器创造关键帧,设置完成如图4-16所示,当然,精
确的权重是好的动画的保证。
图4-16
同样办法设置好“
Llid
”控制器组。具体结果请参考场景文件“
”
(镜像只对MotionDataScale所做的修改有效,所以在制作左边的动画时,不能
使用镜像命令。)。
下面来设置眼球控制器Gaze_V和Gaze_H的动画,同样方法导入动画数据,
同时选择眼部的四个控制关节,向上移动到合适位置,按下
AdaptationKey
按钮,
再移动时间滑块到100帧,向下移动所有控制器,再次按下AdaptationKey按钮,
添加了两个关键帧,单击
Unload
确定。这样,就完成了眼球移动时眼睑的上下
跟随动画。(图4-17)
图4-17
Gaze_H
的动画需要应用到
RotationKey
,具体方法和前面一样。完成之后,
移动中间的小圆圈eyeShift,眼睑就做跟随运动了。
最后一个任务是把眼球的转动和中间的小圈——
eyeShift
控制器的移动关联
起来,可以使用驱动关键帧,也可以使用表达式,使用表达式效率更高。直接打
开表达式编辑器窗口,创建以下表达式:
eye_Y=ateX/3;
eye_X=-ateY/5;
eye_Y=ateX/3;
eye_X=-ateY/5;
这四行表达式很简单,意思就是眼球的X轴向的旋转=控制器Y轴上的反方
向的移动的三分之一,
Y
轴向的旋转
=
控制器
X
轴上的方向的移动的五分之一。
如图4-18所示:再移动中间的眼球控制器,发现没有问题了。
图
4-18
9所有的控制器都调节好之后,最好仔细认识一下这个插件细致的表情控
制,这个控制器做得非常细致,几乎包括了每个局部的调节,也包含了常用表情
的调节,还有基本元音的发声的口型特征,不足之处是控制器太多,不够直观。
10
在表情控制完成之后,这个文件很大,工作起来比较缓慢,可以对动画
文件进行简化,缩小文件大小,如图4-19:执行AFS/Tools/SimplifyAllMotion
Data
「简化动画数据」,默认操作即可。
图4-19
1.1快速创建融合变形目标形状
通过“
F-A-T
”创建制作的表情控制面板,可以满足大多数的动画要求,但
是,它毕竟是套用库文件,也有很大的局限性。
“
F-A-T
”最大的用处是能快速调节众多的融合变形的目标对象,下面实例
说明这个过程:
打开前面完成的场景文件
——
“
”,如图
4-20
:选择控制面板中
的“Joy「高兴」”滑块,滑动到最大,得到了笑的表情,同时,在层窗口中显示
面部的控制骨骼组“
FacialJoints
”,再轻轻移动相关的骨骼,使表情更加自然,
然后复制这个模型,并且为该模型解除移动属性的锁定,移动新模型到合理的位
置,这样,就制作了笑的目标形状。如果对结果不满意,还可以通过常规的调节
办法,继续调整这个模型,直至得到满意的结果。
图4-20
参照上面的方法,可以快速调出多个融合变形目标对象,如图4-21:
图4-21
单独提取某部分的融合变形目标形状
如果只需要鼻子或者眉毛某一个局部的运动,可以通过编辑融合变形权重来
实现,例如:如图4-22所示,要从这个笑的目标形状中,单独提取嘴角的运动,
这是制作表情装配经常遇到的问题。
图4-22
首先选择“joy”,再选择“headba”,执行CreateDeformers/BlendShape,
为“
headba
”创建融合变形,并设变形值为
1
,然后选择“
headba
”,执行
Edit
Deformers>PaintBlendShapeWeightsTool,在变形目标对象列表窗口中选中
“
joy
”,此时,模型完全显示为白色,表示“
joy
”的变形被完全应用在“
headba
”
上,修改权重如下图所示:复制“headba”,得到新的目标模型“joy-mouth”
图4-23
1.2
表情控制面板
1.2.1个性化表情控制面板
通过融合变形来制作表情是表情装配最重要的方法,但是通过融合形状编辑
窗口制作动画的效率比较低,其原因是这些融合形状彼此是孤立的,实际装配中
可以通过一个控制面板把这些表情库联系起来,重新组合,创造更加丰富的变化。
下面具体介绍怎样创建自己的表情控制面板。
1.
制作原理:利用曲线的位移来驱动融合变形的值。驱动的方式可以选择
驱动关键帧,属性连接,表达式等多种方式来实现,下面用一个简单例
子来说明这个过程。
2.制作控制曲线:如图4-24所示,创建控制滑块,并且选择控制滑块,
设置其滑动的取值范围为
0-2
之间。
图4-24
3.
如图
4-25
所示,为控制滑块添加滑动背景曲线和注释文字曲线,注意
锁定这些不需要滑动的曲线。
图4-25
4.
最后,将这些曲线一起打组,缩放和移动组,调整控制曲线的显示大小
和位置,最终完成曲线控制组。
5.
如图
4-26
所示:导入需要控制的表情。
图4-26
6.
把控制滑块的移动与融合表情的目标形状联系起来,驱动关键帧可以很
简单地实现这种连接:控制滑块值为0时,joy为0,控制滑块的值为2
时,
joy
值为
1
,这样就使用控制滑块的移动驱动了“
joy
”的表情变化;
但是使用表达式效率更高,为曲线滑块添加表达式:
=joy_ateY/2;
,得到相同结果,如图
4-27
所示:
图4-27
完整的表情控制面板是怎样的呢?如图
4-28
所示,左图为胖子表情的控制
面板,右上是融合变形桥,右下是最终动画对象,具体调控请参考场景文件
“
”
图4-28
这个控制面板里的融合形状的具体构成如下:
1.嘴巴的控制
第一组:嘴角的目标形状,如图4-29所示,这一组目标形状主要是调节嘴
角的上下变化,在调节笑和哭的表情时比较有用,通过控制器的一起运动,就可
以产生两边上和两边下的结果。
图4-29
控制方法:如图
4-30
所示,簇控制器“
mouth_L1
”上下移动,其取值范围
为-1到1,用它来驱动目标形状“左上”和“左下”,当它值为0时,二者均为0,
当它为
1
时,“左上”为
1
,当它为
-1
时,“左下”为
1
,同样方法使用簇控制器
“mouth_R1”驱动“右上”和“右下。
图4-30
第二组:口型收与扩,目标形状如图4-31所示:
图4-31
具体控制设置如图
4-32
所示:
图4-32
第三组:嘴巴的开合,可以通过融合形状来控制,但是,由于嘴巴需要讲话,
张合是最常见的运动,所以用骨骼控制更加灵活,本例采用了骨骼控制加融合变
形的办法,融合变形主要控制上唇的变化,骨骼主要控制下巴的运动。
如图
4-33
所示:上唇采取了五个融合形状,曲线
Y
轴的移动驱动上唇张开,
曲线X轴移动驱动左右上唇半张,曲线X轴的旋转驱动上下嘴唇的卷曲和内收,
这样使嘴唇产生了更多的组合变化。
图4-33
如图4-34所示:通过骨骼来控制下巴的运动,使用曲线的Y轴的移动来驱
动下颌骨上下转动,使用曲线
X
轴的移动来驱动下颌骨的左右转动。
图4-34
2.牙齿、舌头和口腔的控制
口腔
口腔比较容易,如图4-35所示:首先将口腔模型“gum”,添加5*5*5的晶
格(设置晶格属性eLattice为all),然后先选择晶格,再加选头部模型,将
晶格包裹给头部模型。
图4-35
牙齿
上齿一般是不运动的,直接父子关系(
p
)给头顶骨骼,下齿不是直接父子
关系给下颌骨,而是利用与下颌骨位置重合的子骨骼来单独控制,或者通过一个
定位器作为过渡,父子关系给下颌骨,这样可以通过定位器来单独控制下齿的位
移变化,更加灵活。
舌头
先使用曲线IK绑定舌头,再采用分配不同权重的簇来控制驱动曲线,其根
骨骼父子关系给下颌骨,如图
4-36
所示,控制曲线“
tougue_control
”的
X
轴和
Y轴的位移连接簇的移动,“Twist”连接IK的Twist属性,使舌头产生扭曲,“Out
Tongue
”连接
IK
的
Offt
(偏移)属性,使舌头整体产生了偏移,可以使舌头
伸出口腔,也可以使用拉伸IK,驱动簇在纵深方向的位移,如果需要单独对舌
头的旋转进行控制,可以旋转舌头的根骨骼,具体请参考场景文件
“”。
图4-36
3.鼻子的控制
鼻子的变化较少,如图
4-37
所示:其目标形状只有三个,分别是左上、右
上、和两边上,具体控制参考场景文件“”。
图4-37
4.眼睛的控制
眼睛的融合变形主要控制眼睑的张合,需要四个目标形状,分别如图
4-38
所示:
图4-38
5.眉毛的控制
眉的变化比较多除了左右两边上下四种变化外,还需要注意眉心的上下变
化,最少需要
6
个目标形状,图
4-39
所示的是眉心的上下变化:
图4-39
图4-40所示的是左眉和右眉的上下变化:
图4-40
笔者还在左眉和右眉的控制曲线上叠加了双眉同时上下的控制曲线,使眉毛
的最大运动可以增加一倍,一方面夸张了眉的运动,另一方面使控制更加方便。
眼球的拉伸变化
眼球的控制经常会出现一个问题,如图4-41所示,当眼睑过分拉伸的时候,
眼球会不合理地露出来,尤其在做卡通表情的时候就更明显,可以将眼球分别加
上5*5*5的晶格,再用头部模型包裹【Wrap】晶格,这样,眼球就会随着表情
的变化而变化了,然后调节包裹模型的“
smoothness
”和“
dropoff
”参数来控制
眼球的变形程度。
图4-41
无论多么复杂的表情控制面板,都是在驱动关键帧和融合形状变形的基础上
发展起来的,只要懂得了其制作的原理,就能够根据角色做出丰富而细腻的表情
控制来,读者可以参考光盘所带的场景文件,进一步了解具体细节。
选自<<三维角色动画的艺术>>,作者:赖义德
本文发布于:2022-11-25 03:24:40,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/16000.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |