位置: 编程技术 - 正文

Unity3D 4.0新功能:Mecanim教程(unity-3d)

编辑:rootadmin
作为Unity4.0的主要更新功能,Mecanim动画被寄予了很多的期望。系统有先进的地方,也有不足的地方。这些我们留到最后再来总结。 阿赵粗略的学习了一下,写下以下的教程。这篇教程简单的说明了Mecanim系统的用法和控制方式,里面用到的资源,是从AssetStore里面下载的,如果有兴趣的朋友可以去狗刨学习网免费下载。学习目标:我预先准备了几个没有带动画的3d模型,fbx&#;式,然后一些导出好的动画文件。我们要做的事情,就是使用新的动画系统,把这些动画做出状态机,赋予给这些没有动画的模型。这样得到的好处就是,我们可以把模型制作和动画制作分开了,只要我们的模型分别蒙皮了,就可以比较随意的共享使用相同的动画。如果状态机控制得当的话,人物的动画控制也会比较容易。准备工作:准备几个这种已经蒙好皮,但没有动作的FBX模型:几个现成的动画文件。这些文件可以是用Maya直接导出,或者用3Dmax直接导出了带动画的Fbx文件,然后在Unity的导入器里面切割。这个切割的过程和之前的动画系统一样:开始制作:从Unity4.0开始,模型导入器的选项变化比较大,他分为了Model、Rig和Animations三个标签。Model标签页和以前的基础设置差不多,还是网&#;、法线和索引、材质的设置:Animations标签栏里面的内容和上面的切割动画时是一样的,不过对于没有带动画的模型,我们可以把导入动画的选项取消。Rig标签栏是重点:我们想要使用新的Mecanim系统,必须让模型拥有一个设置好的Avatar,所以我们必须把Rig里面的内容选成这样:Avatar可以是从本身的模型创建,或者从其他Avatar拷贝过来。选择了之后,我们还可以通过图片内红框的按钮来打开Avatar的编辑器。在项目资源浏览器里面找到该FBX模型,我们可以看到,红框所标记的文件,就是该模型的Avatar了。在这里也可以打开Avatar的编辑器。下面我们就开始制作Avatar:打开Avatar的时候,会提示你保存现有的场景。因为Avatar是会打开新的独立场景来编辑的。这个是Avatar的选项。分为了身体(Body)、头部(Head)、左手(Left Hand)、右手(Right Hand)四个部分。每个部分分别有几个骨骼,我们需要做的事情,就是把我们准备好的人物身上的骨骼指定到这些部位。这里估计也不需要过多的解释了,当你点击一个选项的时候,在上面的人体图会标记处当前选择的部位,比较直观。如果觉得逐个骨骼指定很麻烦,我们也可以从下面的Mapping里面选择自动适配(Automap),这样Unity会帮你识别人物结构并指定骨骼。我试了一下,这个自动适配的准确率还是很高的。不过一些细节部位,比如手指和&#;之类,还是要自己指定。除了自动适配,我们还可以保存和读取设置。指定好了,我们想保存,不过发现提示有错误,角色不是在T的姿势。在Pose里面选择Enforce T-Pose这样角色就会变成了T型的姿势。现在我们可以保存这个Avatar了。做好的Avatar还可以在Muscles栏里面测试蒙皮的效果,在里面可以针对不同的部位做一些动作,比如弯曲身体,扭腰等,看看蒙皮的效果十分正常。接下来我们要制作动画控制器。需要的材料就是我们刚才准备了的几个动画。这是Mecanim动画系统的Animator组件,你只需要把刚才的FBX模型拖到场景,就能看到:拖到场景中后,发现模型不会播放动画,这是因为红框标记的地方缺少了动画控制器。接下来我们就来制作自己的动画控制器。在项目资源管理器里面右键,创建Animator Controller。一个新的Animator Controller被创建出来了。接下来我们需要打开Animator编辑面板:这就是默认的Animator面板:选择刚才我们新建的Animator Controller,然后把动画拖入Animator面板:现在我们的控制器里面有4段动画了。如果现在把这个控制器拖给人物,人物就会播放默认的动作。现在的默认动作是death,我们想把默认动作指定成idle2。右键单击idle2,然后选择Set As Default:这时候,idle2的颜色已经变了,它变成了默认的动作:接下来我们分析一下,这个上面写着idle2的方块究竟代表了什么意思吧:在属性栏里面,我们可以看到,这个方块代表了一个动作。而这个方块可以设置播放的速度。可以指定方块里面代表的动画片段。可以指定是否启用脚部IK。就算刚才我们拖了的这个方块是idle2,我们也可以手动在这里选择另外的动画片段。除了代表现有的动画片段,这个方块还可以代表某几个动画的融合。这里我们需要建立一个新的混合树:右键点击idle2,然后选择Create newBlendTree in State现在再看属性,我们看到在Motion里面不再是现有的动画片段,而是Blend Tree了。这时候双击idle2方块,会进入下一层级里面有一个Blend Tree。在属性栏里面点击加号,可以添加多段动画给混合树。比如我们这里新建两个动画片段,然后把idle0和idle2拖进去。再看混合树的图示,会发现出现了两个节点。我们可以通过调节Blend的数字来控制动画混合的影响权重。到此为止,动画方块代表的内容我们已经了解清楚了。接下来需要做的,就是把这些动画连接起来,比如从idle2到death的动画,我们过可以建立一个单向的指向转换。这代表着,当达到某个条件的时候,角色会从做idle2动画转变成death动画。右击idle2,然后选择Make Transition,可以拉出一个箭头线段:当然反过来,就可以创建一条从death到idle2的箭头线段了。刚才说了,这个箭头线段代表了在某个条件达到后,动画的转换。那么这个条件在哪里设置呢?我们可以选择一条箭头线段,然后看到属性栏里面,有这条线段的设置。包括了上一段动画、下一段动画之间的过渡情况,还有过渡时的条件(Conditions)。这个条件是可以多个的,可以按加号添加。现在我们点击第一个默认的条件(Exit Time),我们发现没有其他的选择,也就是说,现在动画之间只能通过时间作为条件来过渡,当上一个动画播放到一定时间后,就会转到下一个动画。那么怎样设置其他的条件呢?在animator面板的左下角,我们找到参数选项,点击加号添加。比如我们现在创建两个布尔的参数创建完之后,我们需要输入参数的名称。这里我们想使用布尔来控制是否可以转换动画,所以我们把这两个参数起名为Idle2ToDeath和DeathToIdle2。现在回到刚才选择条件的地方,我们发现,刚才设置的两个参数已经可以选择了,也就代表了,我把idle2到death的线的条件设置成Idle2ToDeath,那么只有当Idle2ToDeath为true的时候,这个动画的转换才会成立。为了试验,我们把idle2到death的线的条件还是保持默认的Exit Time,不过把death到idle2的线的条件变成了DeathToIdle2。现在我们可以把这个新作的Animator Controller拖到人物身上:现在播放,我们可以看到人物先显示了idle2的动画,然后会接着播放death的动画,最后人物倒在地上不动了。这是因为,idle2到death的条件是时间,所以过一定的时候后,就会接着播放death,但到了death后,由于回到idle2的条件是DeathToIdle2 = true,但默认是false的,所以人物不能回到idle2的状态。为了使人物在我们希望的时候回到idle2状态,我们需要编写一个脚本:当按下按钮时,使用SetBool的方法把指定的DeathToIdle2设定为true。把脚本拖到摄像机上面,或者随便一个物体上面,然后把人物拖到animator变量上。然后播放,我们可以看到,屏幕上面多了一个按钮。当人物倒下后,我们按这个按钮,人物会回到了idle2的状态。不过这时候有一个问题,人物不能再到death的倒地状态了。这是因为,在我们按按钮的时候,把DeathToIdle2永久的变成了true。这样,只要人物到达了death的状态,就立刻变回了idle2状态。这样明显是不行的,所以我们再对脚本进行一些修改:这里使用了一个AnimatorStateInfo来判断当前状态机的状态。假如当前是某个层的某个动作,就怎么怎么样。原理就是这样。然后再根据情况把一些之前设定了布尔为true的变量在一定条件时变回false。然后再在cmds里面填入一个元素,“idle2”。现在再播放,会发现人物倒地之后就不起来了,然后按按钮,人物又会起来到idle2的状态,接着又倒下。我们如果把其他的动作加进来,会有这样的效果:除了death到idle2是需要用布尔条件,其他的单向线条都是使用时间作为条件。这时候,我们播放,会看到人物先做idle2的动作,然后做idle1动作,再做idle0动作,最后做death动作,倒下后就不起来了,按按钮后,人物起来,再重复上面的动作,最后又倒下。这里给我们的提示是,我们可以通过这样的单向线条和条件,把一些单个的动作连接成一套完整的动作,最常用的就是过场动画了,或者是动作游戏的连招。明白了布尔的控制,我们也可以举一反三的使用其他的参数作为条件。比如可以使用float作为条件,连接着站立、走路、跑步三个动作,然后通过人物的实际移动速度,来控制三个动作的状态。最后,我们把上面的例子做完整吧。把4个动画连接好,除了idle0到idle2、idle1到idle2是用时间控制,其他的都是用布尔控制。所以我们还有添加相应的参数这个结构代表了什么?代表了默认的动作是idle2,播放idle0和idle1结束后都会回到默认的idle2。而我们可以通过按钮,控制idle2到各个动作,还有death倒地后回到idle2也是用按钮来控制。最后的脚本,修改一下CheckState方法:好了,这样,我们的人物已经可以通过脚本控制他在各个动作状态之间转换了。做完了一个人物,假如我们还有另外的角色需要做同样的东西,那么只需要给那名角色模型建立好Avatar,然后把之前做好的Animator Controller拖给他就行了,这样不同模型之间的动画就可以共享了。做完了例子,再来说说这个Mecanim动画系统的优缺点吧。优点:1、不同骨骼的模型可以较简单的共享骨骼动画;2、状态机的控制会比较有系统性。缺点:1、Unity内置的Avatar&#;乎只针对标准的两足类生物,比如人。当然你要做四足类的估计还是可以的,但多足类的大概就不行了。而且人物身上假如还有翅膀、飘带、裙摆等骨骼的话,就不能直接对应Avatar了。2、Animator Controller必须手动的拖给人物模型的Animator组件上。虽然也有编辑器的方法可以批量的指定。但发布后想在运行途中用脚本修改Animator Controller是很困难的(不是绝对不行,而是需要特殊的方法)。这样就增大了对编辑器的依赖性,减低了控制的灵活性。3、Mecainm系统动画不适用于assetBundle。也就是说,这个动画系统无法用于网络资源的动态加载。包括了整个角色带Animator Controller导出或者分开导出,再加载进来都无法使用。这是致命的伤害,只能做一些小的演示,或者全部资源都放在一起打包发布的项目。根据阿赵我的感觉,Unity3D的这个新的动画系统,还处于初级阶段,离正常的项目使用还是有一段挺长的距离的。可惜的是,Unity在4.0的时候就急于把它推出来,并作为了默认的动画组件。这样将会给使用Unity进行项目开发的人带来了较大的不便。希望Unity官方会继续把这个功能改进,让它能真正的强大起来。

推荐整理分享Unity3D 4.0新功能:Mecanim教程(unity-3d),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3D 4.0新功能:Mecanim教程(unity-3d)

文章相关热门搜索词:unity3d功能介绍,unity3d 2020新功能,unity-3d,unity3d5.0,unity3ds,unity3d最新,unity3ds,unity3d5.0,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity手机开发之巧妙利用纹理制作滚动背景 巧妙利用纹理制作滚动背景本次学习的主要知识点有以下:1、如何创建滚动背景。可以利用材质球,让其不断地偏移纹理,就可以达到这样的效果。2、

Unity3D游戏开发之[三国杀传奇]单月双平台流水近万 狗刨学习网报道/年对于每一个游戏人来说,都不是寻常的一年,手游市场尤其如此,几家欢乐几家愁。行业大洗牌的时间越来越近,有种说法是,手

Unity3D游戏开发之GUI的使用 GUI是图形用户界面(GraphicalUserInterface)的缩写和简称,又叫图形用户接口。听起来好像很专业的感觉,其实我们每天都在接触。比如浏览器上面的前进

标签: unity-3d

本文链接地址:https://www.jiuchutong.com/biancheng/373045.html 转载请保留说明!

上一篇:unity3d 跨行业宣传片!Unity 不只是游戏!【狗刨学习网】(unity3d跨平台)

下一篇:Unity手机开发之巧妙利用纹理制作滚动背景(unity手机游戏开发教程)

  • 递延收益与递延所得税负债的区别
  • 应交税费的借贷方向
  • 增值税发票查询网络异常
  • 改革性补贴是否属于规范的津贴补贴
  • 开办期间的利息收入怎么做账
  • 经纪代理代订机票电了发票如何入账
  • 小规模增值税减免会计账务处理
  • 私对公转账可以撤回吗
  • 本期免税额怎么填写
  • 企业临时外出经营如何使用发票
  • 五险一金可以在手机上交吗
  • 公司代收代付会被监控吗
  • 政府电费补贴文件
  • 运输公司的固定资产怎么提折旧
  • 收到货款确认收入但是后期开票了怎么做分录
  • 装修职工宿舍用的瓷砖,灯具等计入什么科目?
  • 库存红字冲销
  • 非居民企业减免的利息是否交增值税
  • 业务人员出差住宿费记什么科目
  • 企业为什么要缴纳增值税
  • 向关联企业支付管理费用可以税前扣除吗
  • 劳务工资要附什么合同
  • 年报弥补以前年度亏损了还需要填107040表吗
  • 股东分红账务处理后报表怎么处理
  • 怎样启动powerpoint
  • 安代驾给我发短信
  • 买房 印花税
  • 金融业营业税税率
  • 无限极分类mysql
  • 国税一证通
  • “普罗旺斯”
  • uni-swiper-dot
  • JavaScript charCodeAt() 方法
  • println参数
  • 商品调价差额调整单会计分录
  • 发票未认证跨月怎么办
  • 函数模拟图
  • 微信小程序分包中插件样式丢失
  • 减值准备为什么不影响影响资产余额
  • sql server新增数据
  • 解决问题
  • 预充值发票可以报销吗
  • 一般纳税人一直零申报会怎么样
  • 退回的以前年度的附加怎么申报
  • 公司注册登记需要多少钱
  • 应付账款尾款怎么处理
  • 营改增政策汇总
  • 免抵退 免退
  • 房租转租怎么处理合法
  • 股东向公司借款多久必须归还
  • 期末未缴税额为正是什么意思
  • 材料的运费计入哪个科目
  • 日记账的建账工作
  • mysql误操作数据恢复
  • 快速插入大量数据的asp.net代码(Sqlserver)
  • mac应用商店未能完成购买
  • u盘重装操作系统怎么办
  • 华硕p8h61主板升级cpu
  • windows软件删除
  • xp系统本地连接启用不了
  • centos建站教程
  • 手动防止Ping攻击方法(无需防火墙)
  • xbox无法连接无线网络
  • winxp如何设置文件共享
  • 毕竟近义词语
  • win8系统自带应用都打不开了怎么办
  • 使用速度最快的手机
  • win7怎么调图片大小
  • uisrollview
  • opengl入门视频教程
  • python元组和数组
  • python中的\r
  • Python heapq使用详解及实例代码
  • javascript数组有哪些方法
  • js获取宽高
  • js弹出div出现遮罩层
  • 年轻干部是什么意思
  • 手写发票属于增值税普通发票吗
  • 深圳房东有钱吗
  • 如何查询纳税人识别号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设