【Unity】人形动画
【Unity】人形动画
人形模型
这是 Unity 中的概念,是一种被 Unity 特殊处理的蒙皮模型。使用该功能,Unity 便会以人体结构的方式去识别骨架,同时对骨骼的控制方式进行约束,使其符合人体的关节的运动规律。如人的膝盖只能做前后移动,而膝盖对应着一根骨骼,所以该骨骼也只能前后移动,这些信息都被存在了多出的 Avatar 文件下。
Avatar 文件
人形模型比普通蒙皮模型额外多出一个 Avatar 文件,该文件中存储着以下信息。
- 初始模型到骨骼矩阵(模型原文件中也有同名数据,这里便是 Avatar 功能对该数据的二次修正)
- 骨骼和人体部位的对应关系
- 骨骼的活动范围
额外的模型要求
人形模型比普通模型多了很多功能,但也因此存在一些模型限制。提供的模型必须要符合一些要求,这样 Unity 才能自动处理,生成其额外的 Avatar 文件。
当然有时不完全符合要求的模型也能被正常识别,这是因为 Unity 会尝试自己纠错,但这种自动纠错不一定能完全成功。
具体而言,人形模型的要求如下:
- 骨架必须符合人体结构
不然无法通过自动识别映射到人体部位上。 - 骨架必须保持 TPose 姿势
姿势越不符合,Unity 纠错失败概率越大,这会导致骨骼变换信息(初始模型到骨骼矩阵)发生偏移,最终会导致人物模型或动画和建模软件中对不上。 - 骨架要站立在原点上
Unity 能大概率纠错该项,但这是建模标准,建议遵循。 - 骨架面部朝向要为-y 轴,头顶朝向为 z 轴
该项特指在众多右手坐标系的建模软件中的情况,Unity 能大概率纠错该项,但这属于一种建模标准,建议遵循。
另外还有一种方式不用 Unity 的自动识别,模型也可以不符合要求,那便是直接使用其他有效模型的 Avatar 文件。
额外提供的功能
人形模型有诸多限制,但也因此获得了不少额外功能,下面将重点列举。
- 反向动力学(IK)
以往都是物体要跟随动画动,这叫正向动力学,而让动画跟着物体动,比如人的眼珠为一直注视着物体而跟着转动,这便是反向动力学,做捡东西攀爬等和随机物体交互的系统都能用上。 - 动画镜像
只要做一个方向的动画,另一个方向就可以自动生成出来,特指左右方向。如做一个右转身动画,则左转身便可以直接用镜像生成出来,节省工作量。 - 动画复用
附带的动画文件不再通过名称来识别对应的骨骼,而是通过查阅人体部位到骨骼的映射来获取目标骨骼,这种中间人的存在导致动画接口化,因此只要是人形动画便能在任意人形模型都得到通用。 - 布娃娃系统
布娃娃系统是另一个单独的功能,两种不是强绑定的关系,但因为人形模型限制了骨架必须符合人体结构,所以布娃娃系统可以无缝对接到该骨架上。
人形动画
当想要为人物模型制作动画时,因为动画中的骨架状态往往不是 TPose 姿势,这不符合人形模型的基本要求,所以生成的 Avatar 文件也会因此出问题。因此在为动画模型生成 Avatar 时,可以采用一些特殊的策略。
- 准备一个默认姿势不带动画的人体模型,该模型必须符合人形模型的基本要求。
- 将这个默认模型设置为人形模型,并使用该模型来生成一个正确 Avatar 文件。
- 导入动画模型,只需骨架和动画数据即可,网格不需要导入。
- 将动画模型也设置为人形模型,但不生成 Avatar 文件,而是直接使用默认模型生成的 Avator 文件。
此时动画模型便已配置完毕,正常情况下接着我们会使用默认模型作为角色的基底进行游戏开发,而因为动画复用的原因,我们便可以直接使用动画模型提供的动画数据,从而让默认模型也能够动起来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)