VR开发——Unity动画系统2(V客it学院技术分享)
版权声明:本文为博主原创文章,欢迎转载。请保留博主链接:http://blog.csdn.net/andrewfan
偶然从csdn上看见各位大佬为Unity事业做出这么大的贡献,故献出自己的一份力,今天找来andrewfan翻译的动画系统的文档,供大家参考学习。上一篇文章大家可以详细通读一下,然后接着看这篇文章,进一步对动画系统进行系统的学习。
Animation
● Animation System Overview
● Animation Clips
○ Animation from external source
■ Working with humanoid animations
● Creating the Avatar
● Configuring the Avatar
● Muscle setup
■ Asset preparation and import
● Using humanoid Characters
● Preparing your own character
■ Non-humanoid Animations 【目前翻译到这里-_#!】
■ Splitting Animations
■ Looping animation clips
■ Masking Imported Clips
■ Animation Curves on Imported Clips
■ Animation events on imported clips
■ Selecting a Root Motion Node
■ Euler Curve Import
○ Animation Window Guide
■ Using the Animation view
■ Creating a New Animation Clip
■ Animating a GameObject
■ Using Animation Curves
■ Editing Curves
■ Key manipulation in Dopesheet mode
■ Key manipulation in Curves mode
■ Objects with Multiple Moving Parts
■ Using Animation Events
● Animator Controllers
○ The Animator Controller Asset
○ The Animator Window
○ Animation State Machines
■ State Machine Basics
■ Animation Parameters
■ State Machine Transitions
■ State Machine Behaviours
■ Sub-State Machines
■ Animation Layers
■ Solo and Mute functionality
■ Target Matching
■ Inverse Kinematics
■ Root Motion - how it works
● Tutorial: Scripting Root Motion for “in-place” humanoid animations
○ Blend Trees
■ 1D Blending
■ 2D Blending
■ Direct Blending
■ Additional Blend Tree Options
○ Animation Blend Shapes
○ Animator Override Controllers
● Retargeting of Humanoid animations
● Performance and Optimization
● Animation Reference
○ Animation Clip
○ Animator Component
○ Animator Controller
■ Creating an AnimatorController
■ Animation States
■ Animation transitions
○ Avatar Mask
○ Human Template files
○ Importing models
■ Models
■ FBX Importer, Rig options
■ FBX Importer - Animations Tab
■ 3D formats
● Animation HOWTOs
○ Animation FAQ
○ Using Blender and Rigify
● Playables API
○ The PlayableGraph
○ ScriptPlayable and PlayableBehaviour
○ Playables Examples
● A Glossary of animation terms
动画片段>使用外部导入的动画>使用人形动画>肌肉绑定
Mecanim允许您使用肌肉控制不同骨骼的运动范围。
如果Avatar 被正确配置,Mecanim将“理解”骨骼结构,并激活Avatar检视面板(选中FBX文件中的Avatar组件并单击常规检视面板中的”Configure Avatar”可以进入Avatar检视面板)中的Muscles & Settings(“肌肉&设置”)选项卡。 在这里,可以方便地调整角色的运动范围,角色的肢体将在人类关节变化所能到达的范围内的发生变形,不会发生变形错误或自我重叠。
你可以调整身体中的单个骨骼(上图中的下半部分),也可以使用预定义的几种操作方式来操纵角色的变形,这些预定义的操作可以一次性操纵几个骨骼(图中的上部)。
Additional Setting(附加设置)部分底部显示的“Translate DoF”选项允许你启用对人形骨骼的移动动画(例如:手臂可以伸长)。 禁用此选项后,骨骼仅能发生旋转。 只有在你的动画中包含针对某些骨骼的运动,你才需要启用此选项。 启用“Translate DoF”选项具有一些性能成本,因为动画系统需要做一个额外的步骤来重新定位人形动画。 “Translate DoF”可用于Chest(胸部),UpperChest(胸部上部)、Neck(颈部)、LeftUpperLeg(左腿上部)、RightUpperLeg(右腿上部)、LeftShoulder(左肩)和RightShoulder(右肩)部分的肌肉。
动画片段>使用外部导入的动画>准备和导入资源>使用人形动画
为了充分利用Mecanim的人形动画系统和重定位功能,你需要有一个可操纵的、已经蒙皮的人形网格。
1. 角色模型通常由存储于一个3D数据包裹中的多边形组成的,也可能它是源于很复杂的一个网格模型,后来被导出为多边形或三角形网格使用。
2. 我们需要创建一个关节层次结构,也被称为“骨架”,它定义了网格内的骨骼以及骨骼之间的相对运动关系(层次结构中的每个节点在Unity内部都是一个GameObject),我们通过骨架来控制角色的运动。创建这个骨架的过程被称为“骨骼绑定”。
3. 然后,网格或皮肤将被关联到这个骨架,以便定义出,在给定的关节发生运动时,网格哪些相应部分的将发生移动。将骨架关联到网格的过程称为“蒙皮”。
怎样获得人形动画模型
Mecanim动画系统主要有三种方法获取人形动画模型:
1. 使用程序化角色系统或角色生成器,如Poser,Makehuman或Mixamo。 这些系统中有的将对你的网格进行绑定和蒙皮(例如,Mixamo),有些则不会。 此外,这些过程中有的可能会要求你减少原始网格中的多边形数量,以使其适用于Unity。
2. 从Unity Asset Store购买角色模型。
3. 你当然可以从零开始制作自己的角色模型。
导出和验证
Unity可以导入许多不同的3D文件格式,有通用的,也有原生的格式。 我们建议你使用FBX 2012格式来导出和验证你的模型,因为它将允许你:
● 在导出网格时,可以包含骨架层次、法线,贴图和动画
● 它允许你重新导入3D包裹(FBX文件),来验证你的动画模型是否按照你预期的方式导出
● 它允许你仅仅导出动画,不包含网格
动画片段>使用外部导入的动画>准备和导入资源>制作你自己的角色
从零开始创建你自己的人形动画角色的话,需要三个步骤:建模、骨骼绑定、蒙皮
建模
这个阶段,你将在一些3D模型软件( 3DSMax, Maya, Blender等等)中创建你自己的人形角色的模型网格。尽管这是另外一个非常庞大的主题,但是这里仍然需要你遵循一些准则,来确保模型在Unity项目中与动画可以正常协调工作。
● 遵守合理的拓扑结构。模型的网格结构是相当敏感的,一般来说,您需要清楚的是,模型的顶点和三角形将如何跟随动画而变形。拓扑结构不合理的话,甚至将导致模型无法移动,以避免对网格造成不好的变形。你可以通过研究别人制作的3D人物网格,可以了解到如何布置拓扑结构以及为什么。
● 注意模型网格的尺寸。你可以进行一次导入测试,即将导入的模型的大小与“1米标准立方体”(Unity的标准立方体原型边长为一个单位(1米),因此可以用作很多测量的用途)进行比较。检查你的模型使用的单位,并调整导出设置,使导出的模型的尺寸比例正确。除非你很小心,否则很容易创建没有任何尺度概念的模型,这样最终会导致你导入模型到Unity时大小不一致。
● 调整你的网格,使得人物的脚站立在模型的本地原点或“锚点”上。由于角色通常都是在地板上直立行走,所以如果锚点(即其变换位置Transform)直接位于地面位置的话,那么它更容易处理。
● 如果允许的话,最好使用T型的模型。这将在一些需要的地方留有空间,有助于处理多边形细节(例如腋下)。这也将使您的网格更容易与骨骼进行绑定。
● 把你的模型清理干净。在可能的情况下,执行封孔、焊缝和去除隐藏的面等清理操作,这将有助于蒙皮操作,特别是自动蒙皮过程。
Skin Mesh, textured and triangulated
骨骼绑定
这是创建关节骨架以控制模型运动的过程。
很多3D软件提供了许多方法来为人形骨架创建关节。 这些提供的方法可以让你:从现成的两足动物骨架,缩放以适应您的网格;也可以使用独立的骨骼创建工具,以创建您自己的骨骼结构。 要与Mecanim协调工作,臀部应该是骨骼层级的根元素,另外,整个骨架中至少需要15个骨骼。
关节/骨骼层次应该遵循您所创建的角色的自然结构。 鉴于手臂和双腿成对,您应该使用一致的约定来命名它们(例如,左臂的“arm_L”,右臂的“arm_R”等)。 层次结构的可能结构可能是:
● HIPS - spine - chest - shoulders - arm - forearm - hand
● HIPS - spine - chest - neck - head
● HIPS - UpLeg - Leg - foot - toe - toe_end
Biped Skeleton, positioned in T-pose
蒙皮
这是将模型网格连接到骨架的过程。
蒙皮是为了将网格中的顶点绑定到骨骼,这个过程可以采用直接绑定(硬绑定),或者采用影响到多个骨骼的混合绑定(软绑定)。不同的软件会使用不同的方法。例如,在计算每个骨骼对的网格顶点的影响权重的过程的时候,此数据计算的初始化过程是自动的,不过有软件的会通过查找临近区域来计算影响权重,有的则会使用”热度图”(heatmaps)的方法来产生。蒙皮过程通常需要在动画测试上做大量的工作,以获得满意的皮肤变形结果。在这个过程中,存在一些一般准则:
● 首先使用自动化过程设置一些皮肤(请参阅3DMax,Maya等相关教程)。
● 为您的骨架创建一个简单的动画或导入一些动画用作蒙皮的测试。这样你可以快速查看皮肤在运动过程中是否是否完好。
● 逐步编辑来改善你的蒙皮方案。
● 使用软绑定时,每个顶点最多可能会受到四根骨骼的影响,因为这是Unity将处理的最大数量。如果使用超过四个影响值,那么在Unity中播放动画时,有一些信息将会丢失。
交互式皮肤绑定,许多蒙皮方法之一重点内容
谢谢大家!请关注我们V客学院的二维码哦!
VR开发——Unity动画系统2(V客it学院技术分享)相关推荐
- VR开发——Unity动画系统(V客it学院技术分享)
在我们进行VR开发的过程中,免不了需要各种各样的模型动画.那么面对这样的简单动画,我们大可以使用Unity的动画系统来完成整个事情. 前段时间我在博客看见了一篇非常不错的动画系统讲解,今天我就借花献佛 ...
- Unity游戏开发之游戏动画(Unity动画系统)
文章目录 Unity动画系统 动画片段 Animation Clip 在Unity中制作动画 动画复用 替身系统 Avatar Animator 组件 Animator Component 动画状态机 ...
- Unity动画系统学习
Unity动画系统学习 文章目录 Unity动画系统学习 AnimationState 动画状态 Animation Transitions 动画过渡 动画分层和遮罩 动画混合 1D混合 2D混合 动 ...
- unity 动画系统
Unity动画系统 Unity动画系统是Unity中非常重要的一部分,它提供了一个强大的框架来实现动画.Unity动画系统可以处理几乎所有的动画需求,从简单的2D动画到复杂的3D动画. Unity动画 ...
- Unity动画系统详解10:子状态机是什么?
摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...
- Unity动画系统详解9:Target Matching是什么?
摘要:在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置.比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁.Target Match就是让动画的特定片段去匹配特定的位置. ...
- Unity动画系统详解5:BlendTree混合树是什么?
摘要:"Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树." 洪流学堂,让你快人几步.你好,我是跟着大智 ...
- Unity动画系统详解4:如何用代码控制动画?
摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...
- Unity动画系统常用知识总结
Unity动画系统常用知识总结 资源导入需要注意的地方 常用的组件 Animator 组件 Avatar Mask 骨骼遮罩 Animator Controller 动画切换 Any State Ha ...
最新文章
- JavaScript定时器的工作原理(翻译)
- 平衡树性质与基本算法
- python编程题-分享13个python编程笔试题
- javascript 运算优先级
- 网易云创大会如何论道科技+教育?
- 打开高效文本编辑之门_Linux awk之关联数组
- 分布式锁是啥?zk还是redis?
- pg 日期和时间的运算操作
- 安卓渗透测试工具——Drozer(安装和使用)
- osql sql2012_您可能不知道SQL Server实用程序-SQLdiag,osql和SqlLocalDB
- Codeforces Round #467 (Div. 1): C. Lock Puzzle(构造)
- MACOS,应用签名后就崩溃?
- 事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品...
- SAP 各模块常用T-Code
- C语言打印输出图形(初版)
- 点击开始十秒倒计时html,十秒倒计时案例.html
- 买传奇域名空间要注意什么?
- 开源按键组件Multi_Button的使用,含测试工程
- 如何系统学游戏建模?游戏建模必备知识有哪些?
- 配置Cross-Origin的几种方法