首页 | CG软件 | CG信息 | CG教程 | 三维作品 | CG理论 | CG加油站 | 设计鉴赏 | 社区图库 | Flash | 专题 | 顶客 | 论坛 | 博客 | 导航 | 下载 | 高级搜索
RSS
热门: 素材  作品  设计  照片  创意  3dsmax  优秀作品  Vray  艺术  欣赏

用节点来做车轮的联动动画

来源:火星时代 作者:不详 时间:2007-09-29 点击:
动画   节点   联动   车轮  

  这种效果用MEL应该很容易做的,但目前为止俺还不会写mel程序,所以想了一下这个效果如何做。就是车轮前进时自身会跟着一起滚动一定角度的,这里要做的就是不用MEL而用节点来完成这样的工作。第一步先创建一个物体,这里用的是一个比较简单的NURBS做的车轮。有一点要说明,那就是模型的局部坐标一定要放置在模型的中心,这很重要,因为我们要做的就是利用模型的移动距离来计算出它的转动角度。
    这里是场景文件,下载后用MAYA打开,场景中有一个NURBS模型,名称是Che.或者随便创建一个有点像车轮的模型。

 看看这张图,我们来想想如何根据移动的距离计算出它应该转动的角度,都是数学知识就不多说了。


 打开节点窗口,单击window->hypergraph,如图

    或者把面板布局成这样的:然后在hypershader中创建一个乘除节点


 创建乘除节点

    并且重命名为zhouchang,ctrl+a打开属性编辑,设置参数为下图,注意图中的input2是模型的直径,这里是用长度标注得到的数据,可以根据具体的场景来更改,Operation模式(Multiply)。


然后,再新建一个乘除节点。重命名为X,然后鼠标中键按住模型(这里名称是Che)不放,拖动到乘除这里名称为X的节点上释放,在弹出的菜单中选择other

    在随后的连接窗口中把左边窗口(che)的Translate属性下的Translate x和右边窗口(X)下的Input1下的Input1 x连接,方法就是单击左边的Translate x,然后单击右边的Input1 x。随后设置X的Operation模式为Divide,这里有三个选项,第一个是乘模式,第二个Divide是除模式,第三个是求幂。都是以input1为第一个参数,然后按照指定的运算模式运算Iupt2。


接下来中键按住Zhouchang节点,拖到X节点上释放,一样选择Other。在随后的连接管理窗口中把左边(Zhouchang)下的Output下的Output X和右边的X节点下的Input2下的Input2 X连接起来,如果看不到有些属性值,在菜单中把隐藏的属性打开。顺便说一下,所有的拖动操作都是在Hypergraph完成的。

    现在重要的一点要来了,我们现在要做的就是求出物体的角度,再新建一个乘除节点,并且重命名为Angle,中键按住X节点,拖到Angle上释放,选择Other,把左边Output下的Output X和右边的Input2下的Input2 X连接,还要设定Angle节点的Input1值最左边的数值为360,这三个输入框相对应的值是X Y Z,运算模式选择乘。


 连来连去,头都大了,接下来中键按下Angle节点,拖动释放到模型(che)节点上,选择Other,在连接管理窗口中把左边(Angle)的Output下的Output X和右边模型下的Rotate下的Rotate Z连接起来。注意,这个例子中的节点名称很重要,不要搞错了。

    现在看看场景效果,沿X轴方向移动车轮模型,看到了没有?车轮跟随着X轴的不断变化而不停地旋转着。这个例子中我们用的是X轴的移动变化,当然也可以选择Y或者Z轴。不过好像不对劲,因为车轮的转动方向和移动方向不符合现实。这点很好办,只要我们把运算出的结果反转一下就可以了,而做这一点是反转节点reverse的拿手好戏。新建一个reverse节点,中键拖动Angle到刚建的reverse上,在弹出菜单中选择Input,这样就把运行结果反转了一下。


 然后把已经反转的运算结果输出到模型(che)的rotate Z上,中键拖动reverse1到模型(che)上,选择other,在连接窗口中把左边(reverse1)下的Output下的Output X和右边窗口(che)下的rotate中的Ratate Z连接起來。

    大功告成了,现在X方向移动场景中的模型,模型会随着X距离的变化转动,而且这个转动是个精确的数值。这个精度当然不是非常精确的,它受控于模型的直径和圆周率的值。换句话说,直径取得越精确,转动的结果越精确。
    有朋友可能会问,那么如果我缩放了模型,这个值岂不错了。没错,如果把车轮模型进行缩放的话,这个结果的确不正确,现在我们就来让最后的结果可以随着车轮模型自动更新。当然这是有限制的,比如只能等比例缩放XY轴,不过好像也没有椭圆的车轮吧。回忆一下,在第一个乘除节点Zhouchang的Input2 X值取的是2,这是车轮模型的直径值,也就是说只要这个值能够随着模型的缩放更新的话,那么我们的目的就达到了。一句题外话,一定要保证模型现在的缩放值都是1,否则就没戏。
    再创建最后一个乘除节点,重命名为Scale_R,然后中键拖动模型节点(che)到scale_R上释放,选择other,在连接窗口中把左边模型(che)下的scale和右边scale_R节点的Input1连接起来,接着把scale_R的Input2 X(就是input2最左边的)设为值设为2,这是模型的直径值(必须保证此时的模型缩放率为1),要视你的模型而定,我这里是2。


说说为什么一定要保证模型此时缩放率为1呢?因为我们要的是直径能够随着模型缩放而自动更新,这个结果说到底就是模型的缩放率乘以它缩放率为1时的直径值。其实有个更好的方法,就是把标注距离的节点下的值属性做为input1 X的,然后把标注节点做为子物体连接到模型上。不过我这maya不知道什么原因,怎样也找不到需要的那个属性。
最后一步,把上面的scale_R的输出值连接到计算周长的节点Zhouchang下的Input2中的Input2 X,这样就实现了周长的动态变化。中键按下scale_R,释放到Zhouchang节点上,选择other,把左边的scale_R下的Output中的Output X和右边的Zhouchang下的Input2中的Input2 X连接起來。

    现在全部连接完毕。展开Hypergraph窗口中Che节点的输出和输入连接,可以看到如下图。


 现在无论如何移动X轴或者XY轴缩放得到的结果都是正确的了。补充一点,如何你拖动模型节点(che)时连接窗口中找不到相应的属性,那么应该看看下面这图。

    不要把下面那个Nurbsbook1选择了,这个只是阴影组节点的几何物体信息。

上一篇:利用动力学创建牛顿摆
下一篇:Maya教程-用约束制作手拿东西动画
关键字:迅雷 快车 Baidu 节点 车轮 联动 动画
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
图腾CG联盟免责声明:本网站转载纯粹出于为网民传递更多信息之目的,无任何商业目的。如本网站转载稿件涉及版权等问题,请作者速来函admincg3000@163.com联系,在此,我们首先向您表示诚挚的歉意,并将尽快予以改正。本网站上发表的内容只代表作者本人之观点,本网站只出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。
赞助广告