纳金网

标题: Unity3d 4.0新动画系统Mecanim用法(二) [打印本页]

作者: wyb314    时间: 2012-12-8 21:23
标题: Unity3d 4.0新动画系统Mecanim用法(二)
        上一篇,我们初步了解了一下Mecanim的部分很基础的类容,我以一个疑问的形式结尾。这次我来揭晓此问题的答案,其实很简单,上次的警告如下:




警告的大概意思是:用在Animator Controller中的Animation clips需要有在检视面板中被设置了Muscle(肌肉)的这个步骤。
我的英文很烂,但我可以知道这句话的含义,就是我们的用到的这个Animation Clip必须是已经产生了Avatar的模型中的Animation
Clip。由于我们当前只将第一个Robot生成了Avatar,所以现在我们必须将每个Robot都来一次Rigging,也就是让每个Robot的FBX文件中产生Avatar。这让人觉得难以接受,但如果我们的Robot的动画导入方式是单个文件分割的方式的话就很简单了。我后来想了想,现在我们介绍一下Mecanim的核心功能->动画重定向应该足够合适了。那好吧!我们开始吧!
        首先我们先进入AssetStore中下一个东西:Mecanim Animation Starter Pack(注意,AssetStore类里面有很多免费的资源供我们下载学习,但我们得先注册一个账号)。




这个包可是一个伟大的包,我们接下来的例子将会充分用到它。注意:AssetStore上下载的包的源文件并不在Unity的安装目录下,一般的地址为:C:UsersAdministratorAppDataRoamingUnityAsset Store。为了让我们更能理解Mecanim动画系统的强大功能,我们还得下载一个模型Soldier,当然,也是在AssetStore中:




注意,此Solider中是不带任何动画文件的,但Mecanim可以通过动画重定向来让Solider动起来。下面我们新建一个工程,取名为:Mecanim2。然后将我们下载好的两个包都导进来。按照上一篇所讲的,我们先生成Solider的Avatar(上面这两个包包含两个FBX文件,一个是Solider,另一个是swat)。然后新建一个AnimationController,名为Solider1。
随后我们先看看我们导入的那些带有Avatar的动画的FBX文件,如下:


我们还是新建两个动画状态:idle***n。这回,我们试着将那些个带有Avatar的动画片段中寻找两个有关idle***n的动画片段分别拖到两个动画状态对应的Motion上,这次我们发现可以拖到个位置去了。果然印证了我在开篇提出的那个结论。
        我们接下来在两个动画状态之间建立动画转换(Animation Transitions)。如下图:


然后我们单击从idle***n状态的那个箭头。在Inspector面板上我们看到了这个:



我用红线标注了的这部分是我们接下来进行状态转换的关键。这时我们必须借助于Animation Parameters了。新建一个名为Speed的Float的Animation Parameters(上一篇我有介绍)。然后我们在那个红线标注的位置单击下拉条,选中Speed,然后我们发现这部分出现了一点点变化:




第二个下拉选项卡有两个选择项,分别为:Greater与Less。我在第三个选项中填写了0.1,这样做的目的是:如果Speed大于0.1,执行此转换,也就是动画状态从idle切换***n。这一点很重要,主要体现在我们的脚本书写上。
        到此我们的简单的从idle***n的动画控制器就做好了。我们拖拽Solider到Scene视图中,然后将我们刚才制作的Animation Controller多拽到Solider对应的Inspector面板中的Animator的指定的位置上,就像这:



注意:此Animator组件中的Apply Root Motion选项如果我们勾选了的话,当播放动画时是通过动画运动的幅度来改变角色的Transform的,如果我们不勾选,我们就可以用脚本设定此角色的Tranform。这样说或许有点难以理解。放心吧,下面我们会证明这一点的。
        我们还是建一个平面来盛放Solider,并且为Solider加一个角色控制器并适当调节一下胶囊体的大小和位置。
完成之后我们运行一下试试,由于此时我们并没有通过脚本来动态的控制Solider的动画状态的切换,所以Solider会播放默认的动画:idle。截图如下:


我们看到这是Solider站立了一会,而且转动了一个方向并摆了一个poss。我们终于让一个没带任何Animation Clips的角色动了起来。这就是Mecanim的强大的动画重定向功能,他能将一个角色的动画附加到另一个角色身上,这是在以前版本的Unity中从没出现过的。有了这种功能,美术就可以极大地减轻工作量。但是我们的好戏还没完呢!我们必须通过脚本来实现动画状体的切换。于是,我们得新建一个脚本,取名为:FirstMecanimScript。
        我简单的写几句代码如下:

using UnityEngine;
using System.Collections;

public class FirstMecnimScript : MonoBehaviour {

    private Animator animator;
    private float v;
// Use this for initialization
void Start () {
        animator = gameObject.GetComponent<Animator>();

}

// Update is called once per frame
void Update () {
               v = Input.GetAxis("Vertical");



        if(animator)


        {


            animator.SetFloat("Speed",v);


        


        }



}
}

代码异常简单,也就是说如果我们按下竖直方向键时,当偏移量大于0.1(我们定义的Speed的临界点为0.1)时,动化状态马上从idle转换***n状态:


功能确实达到了,但是还得注意一点,就是我之前强调的,如果在Animator中我们勾选了Apply Root Motion,我们不必修改角色的Transform,依靠角色的动作本身的设计就能改变角色的Transform。但是如果我们没有勾选它,那我们就只能依靠程序来动态的改变其Transform,就像老式的动画系统一样。好了,这个问题读者可以亲自去检验一下。这次我们怎么也体会到Mecanim的动画重定向功能的强大了,可我们还没有结束呢!接下来我们还有IK,动画混合树等类容需要我们去探寻。因此,我的下一篇文章,敬请期待!


































作者: Zack    时间: 2012-12-8 23:16
我先顶一个,支持楼主的教程!

作者: 泡⑧喝⑨玩⑩尚    时间: 2012-12-9 04:06
功能很强大,要好好学学~~~

对于像楼主这样无私的人,无论如何都要支持!!!!!!!
作者: wyb314    时间: 2012-12-9 09:40
过奖了,其实我对那些将普通的技术藏着掖着的人非常不满。
作者: Zack    时间: 2012-12-9 12:35
原帖由  wyb314  于 2012-12-09 09:40 发表:

                                                                                         过奖了,其实我对那些将普通的技术藏着掖着的人非常不满。
                                                                               
-----------------------------------------------------
楼主说的很对啊,不过目前这种情况似乎很难改善,很多高手都只是冷眼旁观,看到我们这些新手的问题多是置之不理,我相信这也造成了技术进步的一种阻碍,衷心希望楼主的精神能带动更多人的加入,一起将这个交流圈子壮大起来!

作者: wyb314    时间: 2012-12-9 21:50
这个一定!
作者: 狂风大尉    时间: 2012-12-10 01:22
支持楼主无私的技术分享精神,顶一个!

作者: 王者再临    时间: 2012-12-10 13:39
我来支持楼主!
作者: 比巴卜    时间: 2012-12-12 10:33
感谢分享,写得不错啊啊!!
作者: paopao    时间: 2012-12-19 14:53
下个4.0试试看!!!看起来还蛮强大的呢  
作者: 艾西格亚    时间: 2012-12-19 20:46
4.0动画系统确实是Unity一个很大的革命,至少让程序人员可以更有弹性的制作角色动作,也让动画人员节省许多前置的时间。

作者: osss    时间: 2013-1-14 15:20
学习了,感谢分享~~~~~

作者: 雅雅    时间: 2013-1-16 12:14
新的动画系统还没用上,来看看是否强悍
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: jinqibu    时间: 2013-1-19 12:34
这个动画系统很不错,不过不知道怎么控制动画。

作者: zuccdjd    时间: 2013-1-23 20:27
这个动画系统很不错这个动画系统很不错

作者: 齐天大圣    时间: 2013-3-20 20:20
不错, 学习了。 希望有更详细的教程。

作者: 所罗门封印    时间: 2013-3-21 14:25
动画重定向,这个价值还是不大,任意3D动画软件都可以做到,而且更强大。换了开发平台也还可以重用,节约不少成本。新动画系统的其他方面还没怎么去了解。 真心希望官方多在资源编辑管理、GUI、功能模块整合上面多下功夫,不要搞这些噱头。
作者: 狂风大尉    时间: 2013-3-21 18:46
原帖由  所罗门封印  于 2013-03-21 14:25 发表:
动画重定向,这个价值还是不大,任意3D动画软件都可以做到,而且更强大。换了开发平台也还可以重用,节约不少成本。
新动画系统的其他方面还没怎么去了解。

真心希望官方多在资源编辑管理、GUI、功能模块整合上面多下功夫,不要搞这些噱头。
-----------------------------------------------------
我还是比较期待GUI的改版,,毕竟已经喊了很久
作者: 拉轰    时间: 2013-3-21 22:18
看起来很强大啊,不过不知道这个系统可以直接用来操作模型么?没有谷歌的模型。
作者: 雅雅    时间: 2013-3-21 22:41
原帖由  拉轰  于 2013-03-21 22:18 发表:

                                                                                        看起来很强大啊,不过不知道这个系统可以直接用来操作模型么?没有谷歌的模型。
                                                                               
-----------------------------------------------------
不懂你说的是啥意思?谷歌模型?

作者: 我没有过去    时间: 2013-4-5 09:07
感谢楼主的无私分享
作者: aoikalin    时间: 2013-4-5 10:26
好文
作者: qq601352961    时间: 2013-5-11 10:18
复制两个角色共用Animator文件,我怎么样分别控制他们,我改变一个另一个跟着动了,感谢楼主大人,能帮我这个问题吗
作者: 烟雨    时间: 2013-5-16 11:37
这方面的教程不是很多,顶一个!
作者: 张动画    时间: 2013-5-16 16:23
顶一个,支持楼主的教程!
作者: wyh880123    时间: 2013-6-27 00:26
感谢楼主
作者: dzspb    时间: 2013-6-27 13:30
很不错的教程,谢谢!
作者: 44554261    时间: 2013-8-23 19:46
友情提示:
第一个插件
Mecanim Animation Starter Pack现在改名为Raw Mocap data for Mecanim
作者: carefreeq    时间: 2013-9-21 01:30
大哥,,太感谢你了,这教程,好的很
作者: 烟雨    时间: 2013-9-21 01:31
图片读不了。。。是服务器的问题。。
作者: orokborokhulu    时间: 2013-9-21 19:55
感谢分享
作者: adoraj    时间: 2013-9-22 11:33
图片为什么不显示????
作者: 艾西格亚    时间: 2013-9-22 16:32
图片由于服务器之前的问题导致部分文章内容出现问题,已经在处理中
作者: 崇尚现在    时间: 2013-11-5 23:10
谢谢分享了 学习了啊
作者: mao420430    时间: 2013-12-2 09:51
支持
作者: 张动画    时间: 2013-12-2 10:24
[教程] Unity3d 4.0新动画系统Mecanim用法(二)
作者: liuxiongning12    时间: 2013-12-13 11:09
楼主顶你一个
作者: liuxiongning12    时间: 2013-12-13 11:20
对于楼主的无私奉献,我只能说句,楼主辛苦了
作者: huhumark    时间: 2013-12-13 17:57
相当不错的
作者: nianhua2008    时间: 2013-12-13 18:02
不错,学习了!
作者: rgrgfseg    时间: 2014-1-20 15:46
学习下,感谢分享~
作者: huhumark    时间: 2014-1-20 20:23
相当不错的教程
作者: gxf5168    时间: 2014-2-24 02:48
很实用的教程,感謝分享
作者: BlueGem    时间: 2014-2-24 16:08
感谢分享
作者: 黄铨豪:    时间: 2014-5-4 09:39
ddddddddddddddddddddddddd
作者: run0006    时间: 2014-9-21 14:06
感謝分享!
作者: fy0010    时间: 2014-11-25 20:50
帖子写的很好,跟着走了一遍就对这个系统有了大概的了解。
作者: tianhett    时间: 2014-11-27 20:37
感谢分享。。。。。。。。




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5