MAX表达式教学终极教程_3dsmax教学课程灯光

其他范文 时间:2020-02-29 07:46:51 收藏本文下载本文
【www.daodoc.com - 其他范文】

MAX表达式教学终极教程由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“3dsmax教学课程灯光”。

MAX表达式

表达式是MAX中功能强大的动画制作手段,它能够使动画的控制更准确、更简洁,使复杂的设置自动完成。表达式提供了一种通过数学方式创建动画的途径,你可以将有动画关联的参数以数学公式的方式进行设置,只要改变相关参数,其它关联参数会自动发生变化。而且一些用关键帧制作起来非常困难甚至不能达到的效果用表达式可以一步就搞定。例如汽车行驶时车轮的相应转动,尤其是汽车发生变速运动的时候,通过手动设置关键帧很难达到车的位移和车轮转速达到完美的匹配,这时表达式就显示出它强大的威力了。表达式虽然是MAX中比较高级的内容,但是并不是深不可测,大家感觉它很晦涩是因为它涉及到数学的一些公式,但是这些公式经过简单的分析之后你会感觉并不难!下面就让我们一起分享它的一些应用实例吧!希望大家在学完本章之后能够轻松自如运用MAX表达式来实现一些以往难以实现的效果。MAX表达式入门篇:工地上的大家伙(1)、启动MAX,执行File>Open,打开配套光盘中提供的chap6.1.max文件,场景中有一个推土机模型,已经制作完成了简单的挖土和行进动画。而且四个车轮已经用父子连接工具连接到车体上,只是还没有设置转动。(见图6.1.1)

注意:在MAX6视图中如果用“Smooth+Highlight”(光滑+高光)显示方式的话,大家可能会发现视图中推土机模型有破面的情况出现。这应该是和MAX6.0对显示卡的较高要求有关系,应该是将MAX的视图加速方式设置为OPENGL就可以了。希望大家经济条件允许的情况下能改善一下自己的显示卡。

图6.1.1(2)、进入材质编辑器,可以看到有一个名称为“车轮”的材质球,它是一个多重次物体材质,大家可以进入贴图的子层级来观看材质更详细的设置。这个材质已经指定给了场景中的四个车轮物体,而且每个车轮物体都被赋予了一个UVW Map贴图修改器,贴图方式为Cylinder(圆柱)。给车轮包含文字效果的贴图是为了后面能够更清楚地观察车轮转动的效果。

图6.1.2(3)、右键点击任意一个车轮,点选弹出的Wire Parameters(关联参数)项目,在弹出的另一个菜单中将鼠标依次沿Transform(位移)>Rotation(旋转)>Y Rotation(Y轴旋转)顺序移动。(见图6.1.3)

注意:正规指定表达式的方法应该是配套光盘中提供的视频教学中的方法,而MAX到了4.0版后新增了这个Wire Parameters关联快捷控制,好处是非常方便,简单的关联操作完全可以通过它来完成。但是如果要求的效果比较复杂,需要多个参数之间的相互关联,还应该在Track View中建立变量和表达式。

图6.1.3(4)、最后按下YRotation后,出现一条虚线,将鼠标放在车体上释放,在弹出的菜单中将鼠标依次沿Transform(位移)>Position(移动)>X Potation(X轴移动)顺序移动。(见图6.1.4)

图6.1.4(5)、在弹出的Parameter Wiring对话框中左前轮的Y轴旋转和车体的X轴位移两个参数以黄色显示,现在就可以在底部的表达式编写区用表达式将两个参数建立联系了。(见图6.1.5)

图6.1.5 注意:①表达式编写的时候应该注意在一侧编写,而另一侧保持参数不变,这样的话就可以将一侧的参数配合数学公式表示出另一侧的参数了。②一般都是用主动量配合公式来表示被动量:例如本例中我们想移动车体的时候轮子自动旋转,车体是主动量,而车轮是被动量。而分清主动量和被动量是表达式编写能否正确的一个关键因素。(6)、现在就可以分析如何来书写表达式了,我们想使车体的位移和轮子旋转建立一定的数学关系,设车体的位移为X,轮子旋转度数为Y,轮子的周长为C,轮子的半径为R,则X和Y的关系推算过程如图。(见图6.1.6)

图6.1.6 注意:①MAX中书写表达式有一定的要求,其中涉及到本例的就是弧度和角度的换算问题,因为MAX表达式中不允许出现角度,所以只能将360度换算成弧度才能得到正确的结果,这就要求大家对一些常用的数学换算有一定的了解。当然还有更多的注意事项,我们在后面的例子中就会涉及到。②点选视图中的左前轮。进入Utility(工具)面板,按下Measure(测量)按钮。在下方的Dimension项目的显示信息中可以看到:X:1909.831,说明轮子在X轴上占1909.831个单位。但是这个数值是轮子的直径,而表达式中需要的是轮子的半径,所以要将此值除以2,这样就得到了分析过程中的955这个值。(7)、在Parameter Wiring(参数连接)窗口中左下侧的表达式编写框中默认“X Positon”项目不变,在其后输入“/955”,然后按下面板中心的第二个按钮,表示用车体是主动量,以驱动轮子,然后点击下方的Connect(连接)按钮,完成表达式的设置,最后关闭该窗口。(见图6.1.7)

图6.1.7(8)、拨动时间滑块,发现左前轮转的圈数与车的移动完全吻合,但是旋转的方向却反了,但是此时Parameter Wiring(参数连接)窗口已经被关闭了,怎么才能再找到它呢?我们点选视图中的左前轮,进入运动面板中,鼠标右键点击列表窗口中的Rotation Euler XYZ项目下的Y Rotation:Float Wire,在弹出的选项中点击Properties(属性),则Parameter Wiring窗口出现在视图中,我们在左下方的表达式前加上一个负号,然后按下面板中间的Update(更新)按钮,不要关闭该窗口。(见图6.1.8)

图6.1.8(9)、此时再拨动时间滑块,左前轮的旋转正常了。但是其它三个轮子必须再重复以上步骤来分别与车体建立表达式联系吗?那样的话就太麻烦了,当然有简单的方法。仍然在Parameter Wiring窗口中,按下左上方的(显示所有轨道)按钮,在列表中点选“右前轮”项目前的“+”号,以展开其下的分支。然后再展开“Rotation Euler XYZ”项目前的“+”号,点选Y Rotation:Bezier Float项目,按照前面第7步的方法书写表达式(别忘了在表达式前加负号),最后关闭该窗口。(见图6.1.9)

图6.1.9(10)、依照第9步的方法完成两外两个车轮的表达式设置。全部完成后拨动时间滑块可以看到所有轮子的运动都正常了。尤其车体变速运动的时候,轮子随车体的加速而加速旋转,而当车体减速静止时,轮子也越转越慢直到静止。(见图6.1.10)

图6.1.10 至此,本例制作完毕,通过这个例子我们可以知道,其实通过数学分析,在MAX中运用表达式并不是非常难的一件事,但是必须要有一些数学的基础做为保障,希望大家在空闲时间能再捡一捡被遗忘了多年的数学知识,对于大家以后深入学习MAX绝对有好处。

当然,这个例子主要是为了让大家熟悉MAX自身的表达式,至于效果大家可以一通百通。如果真的是模拟车辆行驶的效果,好的插件有以下几个:

最好的应该是REEL MOTION这个插件了,它甚至可以自己驾驶轿车、摩托车、战斗机、直升机,所有表盘就在眼前,加速、停车、转弯、翻车等效果非常真实,但是现在只有FOR MAX4和5两个版本,6还没见到。

新近推出的VEHICLE SIMULATOR也不错,它的好处是直接内置到MAX中,而且可以真实地表现出车辆碰撞后出现的凹痕效果。其它的性能不及REEL MOTION,而且还必须要经过系统计算。

而从MAX4.2后就并入MAX的REACTOR也能够模拟车辆的运动,但是缺点也是很明显的,就是不能精确地控制车辆的运动,只能简单地模拟车辆加速的效果,转弯也不能自由控制。但是它也有自己的优点:就是可以与其它的动力学控制器完美结合。

所以我们说表达式可以模拟很多高级动画的效果,虽然我们现在有一大堆插件可以使用,但是对软件基础知识的学习还是非常重要的,因为如果你想做的这些效果没有插件支持怎么办?插件只是对软件的一个补充,大家千万不要对插件过分依赖,但是一旦你真正运用好了插件,它会使你手中的MAX由鸟枪转变为大炮,大家一定要牢记,MAX配全了它的插件功能不会比MAYA差多少,而且在很多方面还会比MAYA强的多。

MAX表达式提高篇:杂技表演----独轮车(1)、启动MAX,执行File>Open,打开配套光盘中提供的chap6.2.max文件,场景中有一个独轮车模型和一个地面物体。(见图6.2.1)

图6.2.1(2)、由于整个车轮和脚蹬子是一个物体,所以进入修改面板,打开其Faces面子级别,然后框选其中一个脚蹬子,按下Detach按钮将其分离出来,并命名为“脚蹬子1”。同样的方法将另外一只脚蹬子也分离出来, 并命名为“脚蹬子2”。(见图6.2.2)

图6.2.2(3)、选择其中一个脚蹬子,进入层级设置面板,在Pivot(轴心点)子项目下,按下Affect Pivot Only(仅影响轴心点)按钮,则视图中出现粗的箭头,显示物体轴心点的空间位置,然后再按下Center to Object(对齐物体中心),将其轴心点对齐到物体的几何中心上。对另一个脚蹬子进行同样操作。(见图6.2.3)

图6.2.3(4)、针对两个脚蹬子执行如下操作:保持在层级面板中,按下Link Info子项目按钮,在面板下方的Inherit(继承)卷展栏下,取消Rotate(旋转)项目下X轴前方的勾选。回到场景中用父子连接工具将两个脚蹬子物体连接到车轮上,然后用旋转工具旋转车轮,发现脚蹬子虽然随着车轮在运动,但是并没有在自身的轴向上发生旋转,刚好符合日常规律。(见图6.24)

注意:因为人在整个蹬车过程中两只脚始终是与地面保持水平的。所以脚蹬子也始终保持水平。

图6.2.4(5)、用Line工具在顶视图中任意画一条曲线,在左视图中将其移动到地面的位置。然后按下Helpers(辅助物体)按钮,点击其下的Dummy(虚拟体)按钮,在顶视图任意位置创建一个虚拟体。(见图6.2.5)

图6.2.5(6)、在视图中点选虚拟体,进入运动命令面板,点选列表中的Position:Position XYZ项目,按下(指定控制器)按钮,在弹出的指定控制器对话框中点选Path Constraint(路径约束)项目,为虚拟体指定一个路径约束控制器,再按下OK关闭对话框。(见图6.2.6)

图6.2.6

(7)、点击播放区内的(时间设置)按钮,将弹出的面板中End Time(结束时间)设置为150,则整个动画长度为150帧。保持在运动面板中,按下Add Path(加入路径)按钮,在顶视图中点击曲线物体,发现虚拟体已经自动位于曲线物体的起点处,并且在时间栏上的第0帧和第150帧分别出现了两个关键帧。按下Follow(跟随)按钮,顶视图中虚拟体自身角度发生了变化以适应曲线的曲率,最后按下 Constant Velocity(匀速)按钮,使虚拟体在整个运动过程中保持匀速。(见图6.2.7)

图6.2.7(8)、在车轮处建立三个相同的Cylinder(圆柱体),旋转各自的角度,使它们看起来像车圈的辐条,并将它们用工具栏上的按钮连接到车轮上。然后将时间滑块拨到第0帧,选中车轮和车叉物体,按下工具栏上的按钮,在视图中点击虚拟体,在弹出的对齐对话框中勾选X和Y。此时整个车体已经和虚拟体的位置上完全对应了,别忘了用旋转工具在顶视图中旋转车体以使角度也与虚拟体一致。最后按下工具栏中的按钮将车体连接到虚拟体上,拨动时间滑块,独轮车已经沿着曲线物体匀速运动了。(见图6.2.8)

注意:建立辐条物体主要是为了便于观察车轮旋转的速度;在前面第3步车蹬子已经和车轮建立父子关系,所以在移动和旋转车轮的时候,两个脚蹬子物体同时跟着运动;车叉物体即车轮上方其它部件的总称。

图6.2.8(9)、右键点击车轮物体,点选弹出的Wire Parameters(关联参数)项目,在弹出的另一个菜单中将鼠标依次沿Transform(位移)>Rotation(旋转)>XRotation(X轴旋转)顺序移动。(见图6.2.9)

图6.2.9(10)、最后按下Xrotation后,出现一条虚线,将鼠标放在车体上释放,在弹出的菜单中将鼠标依次沿Transform(位移)>Position(移动)>Percent(百分比)顺序移动。(见图6.2.10)

图6.2.10

(Percent*728.077)/37(11)、在弹出的Parameter Wiring对话框中CharmferCyl01的Y轴旋转和CharmferBox01的X轴位移两个参数以黄色显示,现在就可以在底部的表达式编写区用表达式将两个参数建立联系了。(见图6.2.11)

图6.2.11(12)、现在就可以分析如何来书写表达式了,我们想使车体位移百分比和车轮旋转的角度建立一定的数学关系,设车体的位移为W;轮子X轴旋转为X;轮子的周长为C;轮子的半径为R;曲线长度为L;车体位移百分比为P,则P和Y的关系推算过程如图。(见图6.2.12)

图6.2.12

(13)、在Parameter Wiring(参数连接)窗口中左下侧的表达式编写框中默认“X Rotaton”项目不动,在其后输入“*18.2”,然后按下面板中心的第二个按钮,表示用虚拟体代表的车体是主动量,以驱动车轮,然后点击下方的Connect(连接)按钮,完成表达式的设置,最后关闭该窗口。(见图6.2.13)

图6.2.13(14)、将时间滑块拨动到第78帧,此时前视图中车体侧面与视图平面大致平行。然后进入创建命令面板,点击最右侧的Systems(系统)按钮,按下Bones(骨骼)按钮,在前视图中依次点击鼠标拖拽出腿部骨骼的大致形状,共5节骨骼,然后将它们全部选中,在顶视图中用旋转按钮调节整体角度,直到与车体平行,再按下工具栏上的移动按钮,直至脚掌骨骼完全踩在相对应的脚蹬子上。(见图6.2.14)

图6.2.14(15)、点选第一根骨骼Bones01,执行Animation(动画)>IK Solvers(反向动力学求解)>HI Solver(历史独立求解),这时视图中出现一根虚线,按住鼠标将虚线引至第三根骨骼上(即Bones03),直到出现Bones03提示字样后松开鼠标,视图中出现一根IK链,试着移动IK链,看到骨骼以反向动力学方式运动。(见图6.2.15)

图6.2.15(16)、同样方法再创建两根IK链,分别由第三根骨骼引向第四根骨骼;第四根骨骼引向第五根骨骼。这时视图中出现了三根骨骼链。配合键盘上的Ctrl键将这三个骨骼链全部选中,用移动工具测试效果,发现脚掌在整个运动过程中始终保持与地面水平,是由于另外两根骨骼链的固定起了作用。这样才符合人在骑车时脚掌的真实状态。(见图6.2.16)

图6.2.16(17)、保持三根骨骼链处于被选择状态,进入层级设置面板。在Pivot(轴心)子项目下,按下Affect Pivot Only(仅影响轴心点)按钮,则视图中出现粗的箭头,显示物体轴心点的空间位置,然后再按下Center to World(对齐到世界坐标系),将它们的坐标轴与世界坐标系的方向完全对应。这是为了将来做动画的时候彼此达到统一。(见图6.2.17)

图6.2.17(18)、将三个IK链全部选择,然后用工具栏上的父子连接工具将它们连接到对应一侧的脚蹬子物体上,在78帧附近缓慢拨动时间滑块发现,在车体行进过程中,脚掌始终踩在脚蹬子上。(见图6.2.18)

图6.2.18(19)、但是腿根部的骨骼并没有随着车体进行运动。我们来修正它。调整透视图角度,直到车体正前方对着视图。然后选择腿根部的骨骼(即Bones01),用父子连接工具将其连接到Dummy01虚拟体上,视图中显示大腿骨发生了角度偏移。选择IK Chain01(即第一根骨骼链),进入运动面板,调节Swivel Angle(旋转角度)项,直到在视图中大腿的根部骨骼方向正常。(见图6.2.19)

图6.2.19(20)、按下工具栏中的(按名称选择)按钮,在弹出的面板中配合Ctrl键选择Bones01-Bones05和 IK Chain01-IK Chain03共8个物体,按下Select按钮。在顶视图中配合Shift键用工具拖拽出另外一套骨骼和IK链,在弹出的复制对话框中选择Copy方式,按下OK确定。(见图6.2.20)

图6.2.20(21)、选择新复制的3根IK链(即IK Chain04-IK Chain06),参照顶视图将脚掌移动到对应一侧的脚蹬子物体上,再配合透视图做细微的调节,直到位置满意为止。然后用父子连接工具将3根IK链连接到下方的脚蹬子上。(见图6.2.21)

图6.2.21(22)、进入显示面板,在Hide by Category(按类别隐藏)卷展栏下勾选Shapes和Helpers两项,再右键点击地面物体,选择Hide Selection(隐藏所选择),则视图中非常干净,这样便于观察脚掌是否在车体运动过程中都踩在脚蹬子上。拨动时间滑块,观察效果。下图是动画过程中的一些截图。(见图6.2.22)

图6.2.22(23)、选择Dummy01虚拟体,按下(自动记录关键帧)按钮,点击工具栏中(曲线编辑器)按钮,在弹出的曲线编辑器面板中找到Dummy01物体的Percent(百分比)项目,按下按钮,拨动时间滑块分别在第30、50、80、100、120帧进行加点操作,每个点对应的数值参考下图中虚线所指的数字。(见图6.2.23)

图6.2.23 至此,本例制作完毕,其中涉及了表达式的应用和MAX自带的Bones骨骼的高级应用,希望大家在学习完本节后能做出来更精彩的表达式和骨骼结合的动画实例。

在下一节中我们将学习一只臭虫的爬行动画,其中仅用了25帧就表现出了多足昆虫在任意长时间段内无缝连接的爬行效果。当然表达式在其中的作用仍然是举足轻重的。好!大家喝杯茶休息一下,我们马上就能看到那只恶心的臭虫了。嘻嘻,晚上饭吃不进去别找我呀!MAX表达式终结篇:臭虫爬行(1)、启动MAX,执行File>Open,打开配套光盘中提供的chap6.3.max文件,场景中有一个臭虫模型,身体和六只脚并没有已经Attach成一个物体,便于后期的蒙皮和动作调整;上下牙Attach到身体上,因为后期不需要对嘴部进行动画操作。(见图6.3.1)

图6.3.1(2)、在创建命令面板中,进入最右侧的Systems(系统)子面板,然后按下(自身骨骼)按钮。参考各个视图,为臭虫的左前足创建骨骼,共5节。分别是Bones01-Bones05,参数设置如图。(见图6.3.2)

图6.3.2(3)、用工具栏中的镜像复制工具将一条腿的骨骼复制5组,使用移动、旋转、放缩工具对某些骨节略做改动,这样整个6只脚的骨骼就全搭建完成了。(见图6.3.3)

注意:这里需要注意中足的骨骼与前足不大一样,改动稍微大一些;而后足就几乎不用改动。

图6.3.3

(4)、先为左前腿制作IK链。选中左前腿的根部骨骼Bones01,执行Animation(动画)>IK Solvers(反向动力学求解)>HI Solver(历史独立求解),这时视图中出现一根虚线,按住鼠标将虚线引至第五根骨骼上(即Bones05),直到出现Bones05提示字样后松开鼠标,视图中出现一根IK链,试着移动IK目标物体(就是IK链末端的十字叉),看到骨骼以反向动力学方式运动。(见图6.3.4)

注意:在建立完IK链后,Bones01和Bones05之间有一根直线相连,这根线叫做弹力线,可以实现对骨骼的牵引。

图6.3.4(5)、用相同的方法将剩余的每个腿部都设置一个IK链。为了以后选择IK链的方便,我们进入运动面板,在Global Display项目下将Size改为100,这样IK链的目标物体(即末端的十字叉)在视图中变得更大了。如果想在IK链没有被选择的情况下也显示中间的弹力线的话,勾选IK Solver Display(IK解算器显示)项就可以了。(见图6.3.5)

图6.3.5(6)、选在视图中选择左前腿,进入修改面板,为其加入一个Skin(蒙皮)修改器。点击下方的按钮,在弹出的Select Bones(选择骨骼)对话框中选择Bones01-Bones05,按下按钮关闭对话框。然后在修改面板中按下(编辑封套)按钮,在下方的列表中依次点取各个骨骼,观察视图中骨骼对腿部模型的影响范围。如果不满意,可以在视图中用工具拖拽封套上的控制点来调节影响范围,直到最终满意为止。用同样的方法对每条腿都进行蒙皮。(见图6.3.6)

图6.3.6(7)、建立一个Box,大小刚好包住臭虫的身体。用工具栏中的工具将臭虫身体连接到Box01上。然后再选中六条腿的根部骨骼,用工具将它们也连接到Box01上。沿臭虫爬行的方向移动Box01。(图6.3.7)

图6.3.7

(8)、选中包住臭虫身体的Box,将其命名为“身体引导物体”。将时间滑块拨到第100帧,在左视图中用移动工具沿臭虫前进方向移动大约979个单位。可以看到身体和腿部骨骼都随着运动,但是IK链最底部的引导物体原地不动。致使骨骼发生不正常的拉伸。(见图6.3.8)

图6.3.8(9)、选择Dummy01虚拟体,打开动画记录钮,将时间滑块拨到第0帧。右键点击时间滑块,在弹出的对话框中去掉Rotation和Scale项目前的勾选,在第0帧建立一个位移关键帧。然后在时间栏内配合键盘上的Shift键用鼠标将第0帧的关键点拖拽到第18帧,将第一帧虚拟体的位置信息复制到第18帧,使0-18帧虚拟体静止。(见图6.3.9)

图6.3.9(10)、将时间滑块拨到第23帧,使用移动工具将Dummy01虚拟体移动到如图所示的位置。然后右键点击Dummy01虚拟体,在弹出的菜单中选择Properties项目,在弹出的Object Properties(物体属性)面板中勾选左下方的Trajectory(轨迹),则视图中沿Dummy01前进的方向出现了一条红色的轨迹线。这条红线记录着物体在动画过程中的空间位置信息,实际上就相当于物体运动的路径。(见图6.3.10)

图6.3.10(11)、将时间滑块拨到第23帧,使用移动工具将Dummy01虚拟体移动到如图所示的位置。(见图6.3.11)

图6.3.11(12)、保持Dummy01虚拟体处于被选择状态,按下工具栏中的(曲线编辑器)按钮,在弹出的曲线编辑器窗口中执行Controller(控制器)>Out-of-Range Types..(越界类型)命令,在弹出的Param Curve Out-of-Range Type(越界参数曲线类型)窗口中按下Relative Repeat(相对重复)项目对应的两个按钮,最后按下OK关闭该窗口。在视图中可以看到虚拟体的路径显示并不是原来只有一段了,而是现在的循环状态了。(见图6.3.12)

图6.3.12(13)、下面就是表达式大显身手的时候了。我们首先分析一下臭虫在爬行过程中六只腿的运动有没有规律可言:左前、左后、右中三条腿运动频率应该是相同的。而右前、右后、左中三条腿运动频率也应该是相同的。所以我们只需要知道一只腿的运动情况,其余各个腿的运动状况用表达式也就可以轻松实现了。(见图6.3.13)

图6.3.13(14)、由于左后腿和左前腿运动频率是一样的,所以在视图中选择左后腿,进入面板,点选Positionn>Position XYZ(位移控制器),然后按下上方的(指定控制器)按钮,在弹出的Aign Position Controller(指定控制器)窗口中选择Position List(位移列表)控制器,点击OK关闭窗口。(见图6.3.14)

注意:Position List(位移列表)控制器的作用是可以使多个控制器能够更好地协同工作。在本例中的作用是保留原来的Position XYZ(位移控制器)的同时,又可以在下一步中加入Position Expreion(位移表达式)控制器。

图6.3.14(15)、可以发现,将控制器类型修改后,在列表中位移项目最顶部是Position List,下面有两个分支依次是Position XYZ和Available(可用的),点击Available,按下列表上方的按钮,在弹出的Aign Position Controller(指定控制器)窗口中选择Position Expreion(位移表达式)控制器,点击OK关闭窗口。(见图6.3.15)注意:Position List(位移列表)控制器中可以加入多个控制器,方法就是按下Available按钮,再按下列表上方的按钮,可以将任意多的控制器加入到列表中。

图6.3.15(16)、在上一步关闭窗口后,右侧列表中在Position XYZ和Available的中间新增了一个Position Expreion控制器项目。而视图中央马上弹出一个Expreion Controller(表达式控制器)窗口。在Create Variables(创建变量)项目下,Name旁的文字输入框中输入“limb”(下肢),然后点选下方的Vector(矢量)项目,并按下右侧(创建)按钮,创建一个名字叫“limb” 的矢量。可以看到下方Vectors列表中出现了 “limb”项目。(见图6.3.16)

注意:表达式窗口分为四个部分:创建变量(Create Variables)、变量列表(Variables List)、表达式窗口(Expreion)和描述窗口(Description)。被赋予表达式控制器的项目(如位移、旋转等)会根据控制器所创建的变量和公式,自动产生输出值。所创建的变量被指定给另外一个动画对象的位置、旋转角度或时间等可变参数。这样当变量指定的参数变化时,当前项目也会自动变化。

图6.3.16(17)、点选Vectors列表中出现了 “limb”项目,按下窗口最下方的(指定控制器)按钮,在弹出的Track View Pick(轨迹视图拾取)窗口中找到Dummy01项目,展开其前方第二个加号,点击Position:Position XYZ项目,按下OK确定。此时在表达式窗口Vectors列表下的文字注释变成了Aigned to:Dummy01Position(指定给:Dummy01位移)。然后在窗口右上方的Expreion(表达式)窗口中删除默认的[0,0,0],输入limb,并按下窗口右下角的6.3.17)

(激活)按钮使表达式生效。(见图注意:此步骤的目的是将左后腿的位移变量指定给代表左前腿的Dummy01位移项目。这样的话当参数Dummy01变化时,当前的左后腿位移变量也会自动发生变化。而Expreion列表中和Create Variables的名称栏中内容相同,意思是左后腿的位移变化量和左前腿的位移变化量是在任何时候都是完全相同的。

图6.3.17(18)、为了方便起见,我们应该将表达式保存起来,以备后面同类型的项目再调用。在窗口中按下 按钮,在弹出的Save Expreion As(保存表达式)窗口下方文件名项目栏输入“臭虫行走”,文件类型为spr,并在窗口上方选择文件保存路径,最后按下窗口右下方的按钮即可。

注意:尤其是多个物体共用一个表达式的时候,保存和调用表达式是非常有用的功能,图6.3.18(19)、关闭窗口后发现赋予表达式的左后腿在视图中的位置发生了变化,不过没有关系,我们参考右后腿的位置,用工具栏上的移动工具在左视图和前视图中对左后腿的位置进行调整,直到满意为止。拨动时间滑块,发现左后腿的运动正常了,并且和左前腿的步调是一致的。(见图6.3.19)

图6.3.19(20)、在视图中选择Dummy05,用第14、15、16三步中的方法对它的位移控制器进行设置。调出Expreion Controller面板后,点击面板下方的Load(调入)按钮,在弹出的Load Expreion(调入表达式)窗口中找到刚才保存的“臭虫行走.spr”文件,按下按钮。然后再选择Vectors列表框中的limb项目,按照第17步的方法将其指定给Dummy01的Position位移项目,最后关闭Expreion Controller面板。针对视图中出现的Dummy05移动的问题,用上一步的方法进行重新定位。(见图6.3.20)

图6.3.20(21)、在视图中选择Dummy02,所有步骤都与上一步相同,唯一不同的是将Expreion Controller面板中Tick Offset(滴答偏移)参数后的数值由默认的0改为2000。(见图6.3.21)

注意:Tick是3DSMAX中特殊的时间单位量,1秒钟有4800个Tick,如果有一秒钟有30帧(如NTSC制),则1帧相当于160个滴答,1000个滴答大约等于6.25帧。如果Tick Offset中输入2000,则Dummy02的动作会先于Dummy01虚拟体12.5帧发生。如果是-2000,则Dummy02的动作会晚于Dummy01虚拟体12.5帧发生。

图6.3.21(22)、用上面的方法将右前腿和右后腿都设置好与左中腿相同的表达式,并调节好位置。(见图6.3.22)

图6.3.22(23)、现在拨动时间滑块观察,发现左后腿在没有迈步之前就已经被拉伸得过长了,那就缩短左前腿的动画范围,使它开始运动的时间比原来早一些就可以了。掌握表达式这一节三个例子所包含的各项知识后,能不能做出优秀的作品技术上已经不成问题,就看你的艺术修养如何了。而且还有一点需要大家注意的是,虽然表达式可以使一些复杂的动画变的简单,但是它也不是什么时候都管用的,别忘了关键帧动画还是3D动画基础中的基础。如果总在追求新的东西而不静下心来夯实基础的知识的话,那就相当于没有打好地基就盖摩天大厦,非倒不可。

下载MAX表达式教学终极教程word格式文档
下载MAX表达式教学终极教程.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文