最终产品
动画使用表达式可以是一个很大的节省时间,特别是当它涉及到机械物体,如一个旋转木马!斯蒂芬高走在本教程中,我们通过一个简单的表达式为基础的项目,创建一个简单的UI滑块来控制他的模型的不同部分。让我们开始吧!
使用表达式制作旋转木马动画 第1步
让我们开始吧!首先,打开玛雅,如果你想跟随到底,打开场景文件。
第2步
我要简要介绍一下我的模型,然后才开始。我划分的模型,2部分:的merry_go_round_move和merry_go_round_stage。所有的马都内进行分组组的merry_go_round_move,,并命名GRP_Horse1 GRP_Horse12。
第3步
现在我们明白了的模型,让我们开始写我们的表情。首先,要“窗口”>“动画编辑器”>“表达式编辑器。
第4步
表达式编辑器被分成的选择部分和表达部分。在表达部分完成后输入任何东西,我们的名字表达的表达式名称“字段中,然后单击“创建”按钮,保存的表达。然后,它会出现在选择部分就可以使用,召回或编辑的。
注意:如果你不能看到你创建的表达,去选择滤镜> BY表达式的名称。这将显示所有您以前创建的表达式,责令其名称(这就是为什么我们的表达式的命名是很重要的!)
第5步
首先,我们需要旋转的merry_go_round_move组。表达“部分中键入以下内容:
- merry_go_round_move.rotateY = merry_go_round_move.rotateY-1;
merry_go_round_move.rotateY = merry_go_round_move.rotateY-1;
现在给你的表情的名称,并点击创建保存。那么,什么是这段代码在做什么?那么我们的每一个帧动画,这个表达式就会看的merry_go_round_move集团目前的Ÿ旋转,减去一个,它使新的旋转Ÿ值。这是清楚地看到,因为这对每帧重复,因为我们通过我们的动画播放,本集团将缓慢而稳步地在-Y方向的旋转,在1度每帧的速度。这是不是足够快!
注意:这种模式被设计为顺时针旋转,这就是为什么我们从Ÿ旋转值减去1度,对每一帧。如果我们对每一帧增加1度,而该集团将在相反的方向旋转!
第6步
为了给我们更多的控制权的旋转速度,我们要添加一个新的属性的组。要做到这一点,首先选择的merry_go_round_move的组,然后在通道盒中,单击“编辑”>“添加属性”。
在“ 添加属性 “对话框中,添加下面的图片中显示的设置:
- 长的名字:这是我们的新属性的名称。
- 数据类型:设置数据类型为浮点数,使我们能够使用数字带小数位(如1.7)的rotateSpeed 值。
- 最低:这是最小的我们将允许我们rotateSpeed 的值。
- 最高:这是我们允许的最大价值。
- 默认值:最后,这是该属性的默认值。
第7步
如果您单击“确定”,你会看到我们的新属性是在在渠道盒的底部。然而,现在它没有连接到任何东西,因此我们的旋转的速度没有任何影响。其连接起来,我们需要回到表达式编辑器和编辑我们的表达。因此,打开表达式编辑器,选择从选择部分表达,并将其更改为:
- merry_go_round_move.rotateY = merry_go_round_move.rotateY merry_go_round_move.rotateSpeed;
merry_go_round_move.rotateY = merry_go_round_move.rotateY merry_go_round_move.rotateSpeed;
现在,请确保单击“新的” 编辑“按钮,取代了创建按钮,在窗口底部的“。这样可以节省您所做的更改你的表达。
正如你可以看到,我们已经取代了-1值与一个链接我们的新merry_go_round_move.rotateSpeed 的属性,但这样做有什么?我们的新的表达发生改变,现在减去任何价值,我们把在本集团的Ÿ旋转值rotateSpeed 通道,对每一帧。
例如,想象,我们rotateSpeed 值是1。在每个帧上,本集团的Ÿ旋转值将减少相同的值- 1度。如果我们到增加我们的rotateSpeed 的价值,10,旋转值将减少每帧10度-换句话说,它会旋转快10倍!我们也可以停止旋转,完全由的merry_go_round_move.rotateSpeed 设置为0。
使用表达式制作旋转木马动画 第8步
虽然在通道盒中改变的值是相对容易的,它可能会很有趣,我们组建了一个很基本的图形用户界面,从中我们可以控制的旋转木马回合。虽然这不是一个全面的玛雅UI教程,这应该给你足够的信息,你开始尝试一点!
我们将一个单一的窗口,包含一个滑块,这将控制我们的rotateSpeed 的属性。因此,打开脚本编辑器 “窗口”>“编辑”>“脚本编辑器”,或通过点击脚本编辑器“按钮,在您的Maya窗口右下角的开始。一旦打开,在输入框中键入以下内容:
- 窗口标题 ,宽度400,高度200;
- FrameLayout的可折叠的 真实 标签 “旋转木马轮” ;
- columnLayout;
- floatSliderGrp标签 “速度” 场 真正的 MINVALUE 0 MAXVALUE 5速;
- connectControl速度merry_go_round_move.rotateSpeed;
- setParent ..;
- ShowWindow函数;
“控制”窗口标题,宽度400,高度200;
FrameLayout的可折叠的真实标签“旋转木马轮”;
columnLayout;
floatSliderGrp标签“速度”栏真正的MINVALUE 0 MAXVALUE 5速;
connectControl速度merry_go_round_move.rotateSpeed;
setParent ..;
ShowWindow函数;
好吧,让我们来看看在该行由行。第一部分创建一个新的UI窗口的大小,并设置标题栏显示的文本控件 400x200px 。它不会出现刚刚还然而,我们必须明确告诉它显示在代码中。
- 窗口标题 ,宽度400,高度200;
“控制”窗口标题,宽度400,高度200;
这部分代码增加了我们的窗口布局内的东西。本质上是一个布局的需要,以便为您的推子和按钮添加到您的GUI,而这其中,作为一个框架布局,将添加一个框周围的一切,我们在它里面添加。你会发现,我们还添加了一个标签,叫做旋转木马轮,并设置帧是可折叠的,这意味着我们可以折叠起来,我们的滑块整洁,如果我们的GUI变得更加复杂,进一步降低线。
- FrameLayout的可折叠的 真实 标签 “旋转木马轮” ;
FrameLayout的可折叠的真实标签“旋转木马轮”;
这条线又增加了布局,在我们的框架布局。为什么呢?A柱布局快速,轻松地将控件添加到您的UI上面,是非常有用的,它通常用于容易创建用户界面!如果我们不把它添加在,我们就必须手动定位每个控制,这将需要一个很多的时间!
- columnLayout;
columnLayout;
这条线是我们加入我们的第一个控制!这是一个floatSliderGrp这是一个组合的一个滑块和一个输入框,这两个更新连接的值。我们已经标记速度,MINVALUE的滑块设置为0 的滑块和maxValue分别为5。非常重要的是,我们已经命名的控制速度。这是我们将如何访问滑块通过MEL -如果它没有一个名字,那将是非常难以追查,并利用我们的代码!
- floatSliderGrp标签 “速度” 场 真正的 MINVALUE 0 MAXVALUE 5速;
floatSliderGrp标签“速度”栏真正的MINVALUE 0 MAXVALUE 5速;
这是我们连接我们的品牌新的滑块向上的rotateSpeed 我们在前面创建的属性。这是一个非常简单的过程,并覆盖了很多细节的帮助。从本质上讲,我们是说用我们的速度滑块控制,设定值的rotateSpeed 属性(这反过来又控制的旋转速度,旋转木马轮。简单!)
- connectControl速度merry_go_round_move.rotateSpeed;
connectControl速度merry_go_round_move.rotateSpeed;
最后,我们使用SetParent ..命令,其中,由于两个点,跳到我们工作的ColumnLayout,最多的FrameLayout的,然后到窗口本身,之后,我们显示窗口!
- setParent ..;
- ShowWindow函数;
setParent ..;
ShowWindow函数;
使用表达式制作旋转木马动画 完成后,选择所有的代码,然后按Ctrl + Enter键来运行它。名为“控制”应该弹出一个窗口,包含一个滑块。如果你现在打比赛,你可以移动滑块以交互方式改变旋转的速度!真棒!
第9步
因此,这是最主要的身体旋转,现在让我们继续前进到马。他们会向上和向下移动,所以我们将不得不写一个表达式,改变他们的翻译的Y值。
第10步
因此,打开表达式编辑器了,让我们创建一个新的表达。在文本字段中写入以下内容:
- GRP_Horse1.translateY = SIN(次);
GRP_Horse1.translateY = SIN(次);
仙是玛雅内置的数学函数,当它涉及到摆动运动,这是一个非常有用的!(以红色显示在页面的顶部,)是一条正弦曲线的平滑曲线上升和下降时间的推移。随着一点点的编辑,我们可以使用这平滑向上和向下的运动,推动我们的马的运动。
有了上面的代码输入后,单击“ 创建“来激活它。如果你打回来了,马会移动,但不是我们要。我们需要添加一些自定义的属性!
使用表达式制作旋转木马动画 第11步
我们要添加一个属性,先马玻璃钢,改变频率的上下运动。您可以添加属性到任何场景中的物体,甚至是一个定位器,如果你愿意,但要记住,你必须更新,下面的表达式,使它们包含正确的路径的属性,否则他们不会有任何影响!
选择GRP_Horse1,并在通道中,单击“编辑”>“添加属性”。请在下面的图片所示的设置:
第12步
我们创建新的属性,我们需要回到表达式编辑器修改仙表达。编辑的表达,使之匹配下面的代码:
- GRP_Horse1.translateY = SIN(时间* GRP_Horse1.frequency);
GRP_Horse1.translateY = SIN(时间* GRP_Horse1.frequency);
正如你可以看到,我们的时间值乘以我们的新的频率属性,其中有加快或减慢速度的摆动运动所带来的影响。很酷。
第13步
我们的第二个属性的地方,我们需要在我们的UI另一个滑块!打开脚本编辑器和编辑MEL脚本如下图所示:
- 窗口标题 ,宽度400,高度200;
- FrameLayout的可折叠的 真实 标签 “旋转木马轮” ;
- columnLayout;
- floatSliderGrp标签 “频率”是 场 真正的 MINVALUE 0 MAXVALUE 10个频率;
- connectControl频率GRP_Horse1.frequency;
- floatSliderGrp标签 “速度” 场 真正的 MINVALUE 0 MAXVALUE 5速;
- connectControl速度merry_go_round_move.rotateSpeed;
- setParent ..;
- ShowWindow函数;
“控制”窗口标题,宽度400,高度200;
FrameLayout的可折叠的真实标签“旋转木马轮”;
columnLayout;
floatSliderGrp标签“频率”栏真正的MINVALUE 0 MAXVALUE 10个频率;
connectControl频率GRP_Horse1.frequency;
floatSliderGrp标签“速度”栏真正的MINVALUE 0 MAXVALUE 5速;
connectControl速度merry_go_round_move.rotateSpeed;
setParent ..;
ShowWindow函数;
正如你可以看到,我们有两个新的生产线。首先创建一个新的滑盖称为频率,第二个连接的频率滑块移动到新的频率属性。这两条线的速度滑块使用相同的命令。如果你现在打比赛,你可以交互地改变马的向上和向下运动的速度。我们到达那里!
第14步
时间,使其他的马,以及移动!车型11多个副本的以前仙表达式,记住更新的HorseGrps名称,如下所示。由于我们要控制从单一的频率属性的马匹的速度,每个表达式的最后一部分是相同的。记得击中编辑时,你就大功告成了,然后打比赛,将滑块移动到看到结果!
使用表达式制作旋转木马动画 第15步
太棒了!除马都动了起来,并一起来,这是不太现实的。我们需要抵消的一些马的时间值,使他们达到其在不同的时间跳跃的顶部。让我们来看看它是什么样子:
正如你可以看到我已经添加了45马的时间值。这可能是一个随机值,但是我已经使用了45抵消这些马的运动,因为它正好一半-他们将在他们跳的底部,而其余的都是在上面!一匹马的一个例子如下:
- GRP_Horse2.translateY罪((时间+45)* GRP_Horse1.frequency);
GRP_Horse2.translateY罪((时间+45)* GRP_Horse1.frequency);
注意:要小心你添加额外的括号中!
第16步
最后,打开备份的脚本编辑器,选择所有的代码,并middlemouse将其拖动到您的书架空白点!保存脚本作为一个架子按钮,使您可以打开窗口,而无需重新编写所有的代码容易。现在按一下按钮,点击播放看见你的表情工作的结果。
评论