首先你要做出像下图一样的6个表情目标,分别是起左嘴角(left_up)、起右嘴角(right_up)、微笑(smill)、左嘴角往下(face_ld)、右嘴角往下(face_rd)、两边嘴角都往下(face_dd),表情目标的名称我都已经标注在模型的头上。 为标准头添加morpher修改器,并且将所有目标加进通道。调整各通道的数值,表情应该会有变化,只不过不太直观,而且表情通道太多的话,通道列表就显示不全了,调节起来会很麻烦。做好这步后,往下进行。
在前视图中人头旁边创建一个矩形和圆形,再加一个文字作为控制器的名字放在下面。矩形的长宽都是5。
将圆形和方形居中对齐后,按住"Alt"键的同时在圆形上点右键,在右键菜单中选择freeze Transform,如下图
随后可以看到圆形的position控制器多了一个Zero Pos XYZ控制器。
这样做的结果是,如果你想快速让圆形返回最初位置(方形中心),你可以按住"Alt"键的同时在圆形上点右键,在右键菜单中选择Transform To Zero。圆形马上回到原位。这时表情应该也回到标准状态。
为了在移动圆形的时候不至于移到方形外面,我们可以给它限制一个运动范围。max8的新功能中有一个limit限制控制器可以帮助我们很快完成这个工作。
如下图所示,在X Position上点右键,在弹出的菜单中选assign contrller...(指定控制器),然后在列表中选择Float Limit,点OK完成。
我们知道在max中,x轴向右为正方向,z轴向上为正方向,圆形在原位的时候坐标为0,所以向左或向下移动时,它的x/z位移就会是负值。因为方形的边长是5,圆形正好在它的中心,所以圆形向上下左右移动的时候,最左到最右的距离和最上到最下的距离都是5,因此它在x、z轴向上的位移都在-2.5—2.5(根据矩形大小)之间。
MAX动画3d max角色表情动画同样对Z Position指定float limit控制器,数值同上。
在max里面可以使用几种方式让一个物体的变化来驱动另一些物体的变化,这里因为涉及到的运算比较复杂,所以只能选择表达式控制器,用圆形的位置来驱动表情数值。
首先选中已经有morpher修改器的人头,在trackview轨迹视图中找到morpher下面的left_up通道,点右键,在菜单中选择assign controller...,在控制器列表中选择Float Expression(浮点表达式)表达式控制器,如下图:
我们要确定驱动者用什么来驱动,也就是先找变量。表达式里的变量有两种,scalar是标量,只有一个数值(可以带正负),比如温度、时间、长度、高度、角度等等;Vector是矢量,用多个轴向上的坐标来代表空间中某点的位置或者旋转量和缩放值,一般会用[-3,34,25]这种形式来表示。max里的position、rotation、scale就是矢量,而X position、Y rotation、Z scale这些前面带有具体轴向的数值就是标量。
现在我们需要两个数值,分别是圆形在x和z轴上的数值,那肯定是标量,因为有具体轴向嘛!
先在Name后面的栏里填入xp,注意这时Scalar前面有个黑点,处于选中状态,点一下Create,这样就会在Scalar栏里出现xp这个标量。同样创建zp这个标量。然后在Expression栏里写表达式:
if(xp>0,40*xp*zp/2.5,0)
式子的意思是:如果xp>0,那么表情数值为40*xp*zp/2.5,其实还可以简化成16*xp*zp,不过为了方便计算,我就保留了这个形式,因为当xp、zp达到最大也就是圆圈在右上角的时候,数值为40*2.5*2.5/2.5=100,即角色完全呈现left_up的表情。这里我对zp没有假设是否为正,因为即使它为负值的话,最后结果得到负值,表情也不会有变化。
注意:表达式里面所有字符都要是英文状态下输入,尤其要注意标点符号不要用错,否则会出错或者没反应。
下面我要把xp指定给圆形在x轴上的位置:点亮xp,找到Assign to Controller这个大按钮,按下去,然后在列表里找到Circle01的Transform项目,点开前面的加号,一直到看到 X position:Float Limit位置,把它点一下,让它变黄,好,点OK结束!
用同样方法,把zp指定给圆形的Z position:Float Limit。
*表达式:if(xp>0,40*xp*zp/2.5,0) 右嘴角上拉
if(xp<0,-40*xp*zp/2.5,0) 左嘴角上拉
if(xp>0,-40*xp*zp/2.5,0) 右嘴角下拉
if(xp<0,40*xp*zp/2.5,0) 左嘴角下拉
smill微笑表情的表达式如下图。这里要增加p、q两个标量。
表达式:0.4*zp*(100-p-q)或zp*(100-p-q)/2.5
p代表右嘴角上翘的通道数值,如下图:
q代表左嘴角上翘的通道数值,如下图:
face_dd 两边嘴角都往下的表达式:
-0.4*zp*(100-d-b) 或zp*(100-d-b)/-2.5
这里也要增加两个标量b、d,分别代表Face_rd和Face_ld通道的数值。(b,d和左右嘴角下拉建立联系)。
我们设置的工作到此结束,现在移动小圆圈,就可以非常直观而且方便的控制角色的表情。我们还可以添加其他的控制系统来控制其他的面部动画,而且还能用脚本语言来同时设置几个小圆的位置来达到特定的表情,将在后面的教程中进行讲解。
眼睛开闭动画:左右眼各一个控制框,眼闭表达式:-zp*100/10 眼开表达式:zp*100/10
分别做四个表情(左眼开,左眼闭,右眼开,右眼闭) |