| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity-动画系统-动画片段 -> 正文阅读 |
|
[游戏开发]Unity-动画系统-动画片段 |
动画片段简介动画片段是Unity动画系统的基础,无论是新版动画系统还是旧版动画系统都需要使用动画片段。 动画片段中包含了对象如何随时间变化其位置、旋转或其他属性的信息。每个片段可以被认为是一个单一的线性记录。 外部导入 动画片段可以从外部导入,源于外部的动画片段由第三方工具(如Max或Maya)制作,或来自运动捕捉等。 内部创建 也可以使用Unity内置动画编辑器创建和编辑,目前该动画编辑器不支持人形动画编辑及创建。 ?动画片段文件后缀名为 .anim 动画片段预览点击动画片段,可以直接预览。 有些动画文件是单独存在的,没有预览的模型,可以拖入其它模型或预制体进行动画预览。 人形动画也可以拖入其它人形导入模型或预制体进行预览(重定位) 预览模型选择:右上角,如下是Unity默认人形模型 动画片段设置Humanoid 可以用动画控制人物运动(动画影响位移旋转缩放),但动画制作时可能出现问题,需要人工约束不必要的动作变化,达到正确效果。 在Perfab的Animations里面勾选不想发生变化的Rotation或者Position,将当前动画进行烘焙,运行动画时位置便不再发生变化 若勾选项目,角色还是产生不必要的运动,说明动画师没有让动画来控制运动,只能全部勾选Bake Into Pose,禁掉 全部旋转、位移,用代码控制运动 涉及到动画循环是否流畅,动作 示例:19帧 curves意为曲线 ?1.Loop Time:勾选这个选项之后,如果Animator处于播放这个动画状态时,在播放完第一遍这个动画片段之后,会自动循环从起始帧再次开始播放动画,如此循环往复。 如果我们不勾选这个选项,例如Animator一直处于播放这个动画的状态,那么动画会定格在动画的结束帧,直到我们通过Animator切换这个Animator状态机的状态,切换到其他的动画
这里的实际效果好像是 0.1时开始点被移到了90%的地方,-0.1时开始点被移到了10%的地方,并不会剪切。 2.Root Transform Rotation 根旋转变换
3.Root Transform Position (Y) 根位置变换(Y)
4.Root Transform Position (XZ) 根位置变换(XZ) (注:Original是角色原始位置,Center of Mass为角色重心在y轴的投影位置)
5.Mirror:是镜像的意思。可以实现动画的复用。例如左转动画中勾选这一选项,可以得到右转动画。 6.信息:可以看到当前动画片段对运动的影响,比如下面的速度X有值,那人就会斜着跑,怎么限制了?调整 Root Transform Rotation 的 Offset 即可。 平均速度 如果还是歪,还可以通过重力约束X轴位移来限制。 导入动画片段源于外部导入的动画片段可能包括:
源于外部的动画以普通3D文件的方式导入到Unity中。 这些文件,无论是通用的FBX文件还是诸如Maya,Cinema 4D,3D Studio Max等3D软件的原生格式,都可以在文件中以线性记录的形式存储对象运动的动画数据。 有些时候,执行运动的目标和与之相关的运动动画可以存在于同一个文件中。也有些时候,动画可能存储在独立的文件中,与目标模型分离。 有些动画是为特殊模型单独制作的,不能在其他模型上重复使用。例如,你的游戏中可能有一个终极Boss,是一个巨型章鱼,它会有独特的四肢和骨骼分布,以及属于它自己的一套动画。 在其他大部分情况下,您可能会有一个动画库,用于场景中各种不同的模型。例如,一些不同的人形角色可能都使用相同的行走和奔跑动画。在这些情况下,通常在动画文件中放置一个简单的替代模型,以便进行预览。甚至,即使它们根本没有几何模型,只包含动画数据,也同样可以使用这个动画文件。 导入多个动画片段时,每个动画片段可以作为项目文件单独存在。当从Maya、Max等3D动作编辑器的插件导出时,也可以导出多个动画片段到单个FBX文件中。如果你的文件包含在单个时间轴上排列的多个单独的动画片段,则可能需要执行此操作。例如,在一个捕获时间较长的动画时间轴中,可能包含几个不同的跳跃运动的动画,您可能希望将其中的某些部分用作单个片段,并丢弃其余的部分。 Unity通过允许您为每个片段选择帧范围,在导入所有动画一个时间轴上,提供动画剪切工具来实现区域裁剪。 导入动画文件在Unity中使用动画之前,需要先将其导入到项目中。 Unity可以导入原生的Maya(.mb或.ma),3D Studio Max(.max)和Cinema 4D(.c4d)文件,以及可以从大多数动画软件导出的通用的FBX文件。 要导入动画,只需将文件拖动到项目的Assets文件夹。 当您在“Project”面板中选择文件时,您可以在“Inspector”面板中编辑导入设置: 有关可用导入选项的完整说明,请参阅FBX导入页面。 从导入的动画文件查看和复制数据。 Ctrl + D 可以复制出FBX文件中的动画。 您可以在“Animation”界面中查看导入的动画片段的关键帧和曲线。 有时,如果这些导入的片段有许多关键帧和多个骨骼,信息量可能看起来非常复杂。 例如,下面的图像是“Animation”界面中一个人形的奔跑动画看起来的样子。【注意Animation不仅仅可以创建和编辑内部动画,也可以浏览源于外部导入的动画,此时动画为只读,不能编辑】 创建动画片段在Unity中可以创建空的动画片段。方式: 1.选中Assets 文件夹下文件夹右键(选中模型预制体等一样) - Create - Animation 2.Window - Animation - Animation - 选中场景中的物体 - 如果游戏物体上没有动画就可以Create,创建之后会自动添加Animator组件并自动创建动画控制器(名称就是物体名称) 新建的动画片段没有任何内容,文件的后缀名是(.anim)。 编辑动画片段可以通过Unity的动画编辑动画片段,此类动画可以变化以下内容:
Animation 窗口功能: 1.建新动画片段 为选中对象创建新的动画片段,会自动添加为动画控制器的状态 2.添加属性 可以添加选中对象中支持动画控制的属性。 3.添加关键帧 方式1:在右边刻度下面右键 - Add Key,和当前线位置无关,鼠标在哪就在哪添加关键帧 方式2:拖动当前线到指定位置,点击左边的 Add KeyFrame 按钮 方式3:更常用,拖动当前线到指定位置,修改属性值 4.编辑关键帧 拖动当前线到指定帧,修改属性值 5.删除关键帧 选中关键帧第一个图标,删除即可。 6.添加事件 7.预览动画 拖动当前线,在Scene面板中就可以看到对象变化。 8.其它 帧速控制 SAMPLES 后面的值 帧数量 最后一个关键帧所在位置决定,拖动当前线即可看到。 剪切动画片段 如果一个动画片段整合了多个动画,这时就需要切割了。 貌似只支持在模型导入设置中剪切 点击模型---Inspector---Animation 在原有基础上修改 1.选中一个动画片段 2.拖动刻度或者修改Start,然后应用即可。 剪切动画片段 1.选中动画,然后点+号 2.拖动刻度或者修改Start,然后应用即可。 +:添加动画 Start:开始帧 End:结束帧 Loop Time:是否循环播放 Loop Pose:循环时动画播放更加平滑 Rotation:动画是否影响旋转 Position(Y):动画是否影响Y轴 Position(XZ):动画是否影响XZ轴 Mirror:镜像翻转动画 拖动更改动画开始帧和结束帧,获取匹配最好的点。 右边的亮灯表示匹配度,越绿越好。 在43和104帧时,基本动画完全平滑了。 常见问题 1.动画本身循环接不上 在模型导入设置 Animation 中设置动画开始帧和结束帧。 2.动画过渡不流畅 使用动画混合解决问题。做动作手是慢慢抬起来的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/21 20:07:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |